CGUI - Helposti Muokattavia Vimpaimia kaikille!

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Post Reply
User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

CGUI - Helposti Muokattavia Vimpaimia kaikille!

Post by JATothrim » Sat Jun 06, 2009 8:32 pm

Histooryy: n. 2 vuoden aikana olen näpytellyt hiljakseen CGUI kirjastoa Coolbasicilla. Päätin nyt julkistaa projektin kaikkien saataville, kun sain kirjaston osista CGUI_Button 90%, CGUI_ListBox:in 80% ja CGUI_PopupMenu 20% valmiiksi. Puuttuvat prosentit tulevat siitä että koodi on joko hieman vahentunutta taikka viimeistely on vielä kesken. Vimpaimia on tulossa viela paljon lisää.. Ja koska CB:n funktio raja on hajoitettu, saatte nauttia valtavasta läjästä siistejä funktiota, vain yhden tiedoston sisällyttämisen kautta!

Esittely: Tarkoituksenani on toteuttaa mahdollisimman vapaasti muokattavat "Vimpaimet", jotka ovat kuitenkin erittäin näyttäviä, nopeita ja tarvitevat vähän prosesointi aikaa. Lisäksi on tarkoitus, CGUI_Frame:n myötä, luoda kokonaisia "Welho ikkunoita" taikka tyhjiä ikkunoita joihin voi vapaasti piirtää. Vimpaimien muokattavuus syntyy siitä, että kirjasto ei piirrä yhtään mitään itse, vaan se käyttää pelkkiä kuvia. Kuvat generoidaan Vimpaimien luonnin yhteydessä, jopa tekstit tullaan renderöimään kuviin. Tähän Generointiin iskee CGUI_Gfx:n funktiot, valmiina on jo: Teksti kuvaksi, Pyöreä reunainen boxi - heijastuksilla ja tekstillä. Gfx osioon olisi tarkoitus koota "standardi" ulkoasu vimpaimille, ettei kaikkea tarviste aina generoida.

Toivon, että annatte palautetta kirjastosta. Laittakaa toivottuja vimpaimia!

Kirjaston tämän hetkiset osat (vimpaimet):
CGUI.cb - Pääheaderi joka avulla kirjastoa käytetään. Älä ikinä sisällytä CGUI:n tiedostoja erikseen, vaan kopioi projektisi tiedostoihin CGUI.cb ja kommentoi ylimääräiset Vimpaimet pois. Muuta polut myös toimiviksi.
CGUI_System.cb - Perus funktioita ja kokoelmia joita muut kirjaston funktiot käyttävät. Valmis, mutta handle ja message vakioita tullaan lisäämään jatkossa. Syötteiden keskitys lisätty.
CGUI_ScrollBar.cb - 60% Valmis. Vaakasuora toteutus puuttuu. Testiin on kopioitu (thanx screenshot) Vertikaalinen vierityspalkki Vistasta. :D
CGUI_ListBox.cb - Valmis. Parannus Ehdotuksia?
CGUI_Button.cb - Valmis. --||--
CGUI_PopupMenu.cb - Kesken. Koodin uudelleen kirjoitus, sillä toteutus tapa ei enää sovi projektiin. Vanha toteutus on kutenkin varsin toimiva, alla on vanha PopupMenu. Seuraavassa versiossa on kaikki herkut, eikä se hyydy kun alivalikkoja on n. 20 auki yhtäaikaa. 8-)

Code: Select all

'############################################
'#	Tämä tiedosto on osa CGUI kirjastoa.	#
'#	(C) Jarmo Tiitto.						#

//Todo: osion uudelleen kirjoitus!
//Typet: CGUI_Menu, CGUI_MenuStyle, CGUI_MenuItem
//Grafikka kokonaan kuvilla!

Type CGUI_Menu
	Field parent_HND	As integer	'menun omistajan handle
	Field m_menustyle	As integer	'menun tyyli instanssi, sisältää kuvat.
	Field first_item	As integer	'item listan alku
	Field last_item		As integer	'itemlistan loppu
	Field sub_menu		As integer	'mahdollisesti auki oleva submenu. (ei menu stack:ia!)
	
	Field x	As integer
	Field y As integer
EndType

Type CGUI_MenuItem
	Field ID%
	Field Sub%
	Field SubOpen As Byte
	Field ItemID%
	Field Capitation$
	Field Enabled As Byte
	Field Check As Byte
	Field Separator As Byte
	
	//uusi kirjasto:
	Field next_item	As integer
	Field sub_menu As integer	'jos NULL item ei ole submenu.
	Field m_img_nonactive	As integer
	Field m_img_active	As integer
	Field m_img_disabled
	'Field ItemID	as integer
	Field IsSeparator As Byte
	'Field Enabled As Byte
	'Field Check As Byte
EndType

Type CGUI_MenuStyle
	//Taustan väri
	Field back_gr_r As Byte
	Field back_gr_g As Byte
	Field back_gr_b As Byte
	//Taustan Reunan väri
	Field back_ol_r As Byte
	Field back_ol_g As Byte
	Field back_ol_b As Byte
	//Valitsemattoman tekstin väri
	Field txtn_r As Byte
	Field txtn_g As Byte
	Field txtn_b As Byte
	//Valitun Tekstin väri
	Field txtc_r As Byte
	Field txtc_g As Byte
	Field txtc_b As Byte
	//Pois käytöstä olevan valinnan väri
	Field d_r As Byte
	Field d_g As Byte
	Field d_b As Byte
	//Valinnan tausta
	Field slc_r As Byte
	Field slc_g As Byte
	Field slc_b As Byte
	//Separaatorin, ruksin ja sivuvalikon nuolen väri
	Field mc_r As Byte
	Field mc_g As Byte
	Field mc_b As Byte
	
	//uusi kirjasto:
	Field m_back_first	As integer	'pohjan yläosa
	Field m_back_midle	As integer	'pohjan keskiosa, monistetaan koko menun korkuseksi.
	Field m_back_last	As integer	'pohjan alaosa
	Field m_check		As integer	'ruksi
	Field m_disabled_check	As integer	'disabloitu ruksi
	Field m_sub			As integer	'submenun nuoli.
	Field m_disabled_sub	As integer	'disabloitu submenun nuoli.
	Field m_separator	As integer	'erotin.
EndType

Type MenuStack
	Field ID%
	Field ItmCount%
	Field Delay%
	Field x%
	Field y%
	Field w%
	Field h%
EndType

Global gCutomMenuRefs%
//Generoi Vallikon ID:n
Function CGUI_Menu_Create()
	gCutomMenuRefs=gCutomMenuRefs+1
	Return gCutomMenuRefs
EndFunction

//Lisää Valinnan. Valikkon ID, Teksti, valinnan ID; !!!ei saa olla nolla!!!, Valinta päällä?, Ruksattu ?
Function CGUI_Menu_AddItem(MenuID%, Capitation$, ItemID%, Enabled%=1, Check%=0)
	itm.CGUI_MenuItem=New(CGUI_MenuItem)
	itm\ID=MenuID
	itm\Sub=-1
	itm\ItemID=ItemID
	itm\Capitation=Capitation
	itm\Enabled=Enabled
	itm\Check=Check
EndFunction
//Lisää Alivalikon. Valikkon ID, Alivalikoksi lisättävän menun ID
Function CGUI_Menu_AddSubMenu(MenuID%,AddMenu%,Capitation$, Enabled%=1, Check%=0)
	itm.CGUI_MenuItem=New(CGUI_MenuItem)
	itm\ID=MenuID
	itm\Sub=AddMenu
	itm\ItemID=AddMenu
	itm\Capitation=Capitation
	itm\Enabled=Enabled
	itm\Check=Check
EndFunction
//Lisää Erottimen. Menun ID
Function CGUI_Menu_AddSeparator(MenuID%)
	itm.CGUI_MenuItem=New(CGUI_MenuItem)
	itm\ID=MenuID
	itm\Separator=True
	itm\Sub=-1
	itm\ItemID=0
	itm\Capitation=""
	itm\Enabled=0
	itm\Check=0
EndFunction

//Asettavat Valinnan Tilan, Päällä, Ruksattu.
//Ilman Toista Parametria kääntää valinnan vastakkaiseksi.
Function CGUI_Menu_CheckItem(ItemID%,Ch%=2)
	For Itm.CGUI_MenuItem = Each CGUI_MenuItem
		If Itm\ItemID = ItemID And Itm\ItemID<>0
			If Ch<>2 Then Itm\Check=Ch Else Itm\Check=Itm\Check Xor 1
		EndIf
	Next Itm
EndFunction
Function CGUI_Menu_EnableItem(ItemID%,En%=2)
	For Itm.CGUI_MenuItem = Each CGUI_MenuItem
		If Itm\ItemID = ItemID And Itm\ItemID<>0
			If En<>2 Then Itm\Enabled=En Else Itm\Enabled=Itm\Enabled Xor 1
		EndIf
	Next Itm
EndFunction

//'Tyyli Data' - Valikon ulko asu
Global gCMS_Style As integer

//Näyttää Menun. MenuID, Menun Sijainti x,y, Cursorin Sijainti, x,y, Klikattiionko?
Function CGUI_Menu_Show(ShowID%, x%, y%, mx%, my%, click%)
	
	cs.CGUI_MenuStyle = ConvertToType(gCMS_Style)
	If cs = NULL Then MakeError "CGUI_Menu_Show: Invalid Style Data!"
	
	If Last(MenuStack) = NULL
	
		cMenu.MenuStack = New(MenuStack)
		cMenu\ID = ShowID
		cMenu\x = x
		cMenu\y = y
		
		For Itm.CGUI_MenuItem = Each CGUI_MenuItem
		
			If Itm\ID = ShowID
			
				If cMenu\w < TextWidth(Itm\Capitation) Then cMenu\w = TextWidth(Itm\Capitation)
				cMenu\ItmCount = cMenu\ItmCount+1
				
			EndIf
		Next Itm
		
		cMenu\w = cMenu\w + 55
		cMenu\h = TextHeight("#")*cMenu\ItmCount+cMenu\ItmCount*4
		
	EndIf
	
	OldR% = getRGB(RED)
	OldG% = getRGB(GREEN)
	OldB% = getRGB(BLUE)
	TxtH% = TextHeight("#")
	
	sMenu.MenuStack = First(MenuStack)
	While sMenu <> Last(MenuStack) And sMenu<>NULL
	
		Color cs\back_gr_r, cs\back_gr_g, cs\back_gr_b
		Box sMenu\x, sMenu\y, sMenu\w, sMenu\h
		Color cs\back_ol_r, cs\back_ol_g, cs\back_ol_b
		Box sMenu\x, sMenu\y, sMenu\w, sMenu\h, OFF
		
		XX = sMenu\x
		YY = sMenu\y+2
		
		For Itm=Each CGUI_MenuItem
			
			If Itm\ID = sMenu\ID
				
				If Itm\Enabled = True
					
					Color cs\txtn_r, cs\txtn_g, cs\txtn_b
					Text XX + 30, YY, Itm\Capitation
					
					Color cs\mc_r, cs\mc_g, cs\mc_b
					
					If Itm\Check = True 
						Line XX + 4,YY + 3,XX + 7,YY + 6
						Line XX + 4,YY + 4,XX + 7,YY + 7
						Line XX + 4,YY + 5,XX + 7,YY + 8
						Line XX + 8,YY + 5,XX + 12,YY + 1
						Line XX + 8,YY + 6,XX + 12,YY + 2
						Line XX + 8,YY + 7,XX + 12,YY + 3
					EndIf

					If Itm\Sub <> -1
						Line XX + sMenu\w-7, YY, XX + sMenu\w-7, YY + 8
						Line XX + sMenu\w-6, YY + 1, XX + sMenu\w-6, YY + 7
						Line XX + sMenu\w-5, YY + 2, XX + sMenu\w-5, YY + 6
						Line XX + sMenu\w-4, YY + 3, XX + sMenu\w-4, YY + 5
						Dot XX + sMenu\w-3, YY + 4
					EndIf
					
				Else
					Color cs\d_r,cs\d_g,cs\d_b
					Text XX + 30, YY, Itm\Capitation
					
					If Itm\Check = True 
						Line XX + 4,YY + 3,XX + 7,YY + 6
						Line XX + 4,YY + 4,XX + 7,YY + 7
						Line XX + 4,YY + 5,XX + 7,YY + 8
						Line XX + 8,YY + 5,XX + 12,YY + 1
						Line XX + 8,YY + 6,XX + 12,YY + 2
						Line XX + 8,YY + 7,XX + 12,YY + 3
					EndIf
	
					If Itm\Sub <> -1
						Line XX + sMenu\w-7, YY, XX + sMenu\w-7, YY + 8
						Line XX + sMenu\w-6, YY + 1, XX + sMenu\w-6, YY + 7
						Line XX + sMenu\w-5, YY + 2, XX + sMenu\w-5, YY + 6
						Line XX + sMenu\w-4, YY + 3, XX + sMenu\w-4, YY + 5
						Dot XX + sMenu\w-3, YY + 4
					EndIf
				EndIf
				If Itm\Separator = True
					Color cs\d_r,cs\d_g,cs\d_b
					Line XX+5,YY+6,XX+sMenu\w-5,YY+6
					Color cs\d_r-5,cs\d_g-5,cs\d_b-5
					Line XX+6,YY+7,XX+sMenu\w-6,YY+7
				EndIf
				YY = YY + TxtH + 2
			EndIf
		Next Itm
		sMenu = After(sMenu)
	Wend
	///////////////////////////////////////////////////////////////////////////
	sMenu=Last(MenuStack)
	//Pidetään valikko auki jos cursori ON valikon päällä...
	If mx > sMenu\x And my > sMenu\y And mx < sMenu\x + sMenu\w And my < sMenu\y + sMenu\h
		sMenu\Delay=Timer()+100
	EndIf
	//Pidetään valikko auki jos cursori ON valinnan päällä...
	pMenu.MenuStack=Before(sMenu)
	If pMenu<>NULL
		XX = pMenu\x
		YY = pMenu\y+2
		For Itm = Each CGUI_MenuItem
			If Itm\Sub = sMenu\ID
				If mx > pMenu\x And my > YY And mx < pMenu\x + pMenu\w And my < YY+TxtH+2
					sMenu\Delay=Timer()+100
					Exit
				EndIf
			ElseIf Itm\ID=pMenu\ID
				YY = YY + TxtH + 2
			EndIf
		Next Itm
	EndIf
	//suljetaan...
	If sMenu\Delay<Timer()
		dMenu.MenuStack=Before(sMenu)
		If dMenu <> NULL Then DisableID = dMenu\ID Else DisableID=sMenu\ID
		
		For Itm = Each CGUI_MenuItem
			If Itm\ID=DisableID Then Itm\SubOpen=False
		Next Itm
		
		Delete sMenu
	EndIf
	
	Color cs\back_gr_r, cs\back_gr_g, cs\back_gr_b
	Box sMenu\x, sMenu\y, sMenu\w, sMenu\h
	Color cs\back_ol_r, cs\back_ol_g, cs\back_ol_b
	Box sMenu\x, sMenu\y, sMenu\w, sMenu\h, OFF
	
	XX = sMenu\x
	YY = sMenu\y+2
	
	For Itm = Each CGUI_MenuItem
		
		If Itm\ID = sMenu\ID
			
			If Itm\Enabled = True
			
				OnSelection = mx > sMenu\x And my > YY And mx < sMenu\x + sMenu\w And my < YY+TxtH+2 

				If OnSelection = True And Itm\Sub<0
					Color cs\slc_r, cs\slc_g, cs\slc_b
					Box sMenu\x + 1, YY, sMenu\w - 2, TxtH + 2
					Color cs\txtc_r, cs\txtc_g, cs\txtc_b
					Text XX + 30, YY, Itm\Capitation
					SelectedItem=Itm\ItemID
				Else
					Color cs\txtn_r, cs\txtn_g, cs\txtn_b
					Text XX + 30, YY, Itm\Capitation
				EndIf
				
				If Itm\Check = True 
					Line XX + 4,YY + 3,XX + 7,YY + 6
					Line XX + 4,YY + 4,XX + 7,YY + 7
					Line XX + 4,YY + 5,XX + 7,YY + 8
					Line XX + 8,YY + 5,XX + 12,YY + 1
					Line XX + 8,YY + 6,XX + 12,YY + 2
					Line XX + 8,YY + 7,XX + 12,YY + 3
				EndIf

				If Itm\Sub <> -1
					Line XX + sMenu\w-7, YY, XX + sMenu\w-7, YY + 8
					Line XX + sMenu\w-6, YY + 1, XX + sMenu\w-6, YY + 7
					Line XX + sMenu\w-5, YY + 2, XX + sMenu\w-5, YY + 6
					Line XX + sMenu\w-4, YY + 3, XX + sMenu\w-4, YY + 5
					Dot XX + sMenu\w-3, YY + 4
					//avataan alivalikko kun ollaan sen päällä
					If OnSelection = True And Itm\SubOpen = False
						Itm\SubOpen = True
						cMenu.MenuStack = New(MenuStack)
						cMenu\ID = Itm\Sub
						//Lasketaan alivalikon paikka...
						For Itm2.CGUI_MenuItem = Each CGUI_MenuItem
							If Itm2\ID = cMenu\ID
								If cMenu\w < TextWidth(Itm2\Capitation) Then cMenu\w = TextWidth(Itm2\Capitation)
								cMenu\ItmCount = cMenu\ItmCount+1
							EndIf
						Next Itm2
						
						cMenu\w = cMenu\w + 55
						cMenu\h = TextHeight("#")*cMenu\ItmCount+cMenu\ItmCount*4
						If XX + sMenu\w + cMenu\w < ScreenWidth()
							cMenu\x = XX + sMenu\w
						Else
							cMenu\x = XX - cMenu\w 
						EndIf
						cMenu\y= YY
						
					EndIf
						
				EndIf
				
			Else
			
				Color cs\d_r, cs\d_g, cs\d_b
				
				Text XX + 30, YY, Itm\Capitation
				
				If Itm\Check = True 
					Line XX + 4,YY + 3,XX + 7,YY + 6
					Line XX + 4,YY + 4,XX + 7,YY + 7
					Line XX + 4,YY + 5,XX + 7,YY + 8
					Line XX + 8,YY + 5,XX + 12,YY + 1
					Line XX + 8,YY + 6,XX + 12,YY + 2
					Line XX + 8,YY + 7,XX + 12,YY + 3
				EndIf

				If Itm\Sub <> -1
					Line XX + sMenu\w-7, YY, XX + sMenu\w-7, YY + 8
					Line XX + sMenu\w-6, YY + 1, XX + sMenu\w-6, YY + 7
					Line XX + sMenu\w-5, YY + 2, XX + sMenu\w-5, YY + 6
					Line XX + sMenu\w-4, YY + 3, XX + sMenu\w-4, YY + 5
					Dot XX + sMenu\w-3, YY + 4
				EndIf
				
			EndIf
			If Itm\Separator = True
				Color cs\d_r,cs\d_g,cs\d_b
				Line XX+5,YY+6,XX+sMenu\w-5,YY+6
				Color cs\d_r-5,cs\d_g-5,cs\d_b-5
				Line XX+6,YY+7,XX+sMenu\w-6,YY+7
			EndIf
			YY = YY + TxtH + 2
		EndIf
	Next Itm
	//Vanhat värit takaisin..
	Color OldR,OldG,OldB
	//Palautetaan mahdollisesti klikattu valinnan ID ja putsataan vainnat 
	If click = True
		For sMenu.MenuStack = Each MenuStack
			Delete sMenu
		Next sMenu
		For Itm = Each CGUI_MenuItem
			Itm\SubOpen=False
		Next Itm
		Return SelectedItem
	EndIf
	
EndFunction


Function CGUI_MenuDefaultStyle()
	Style.CGUI_MenuStyle=New(CGUI_MenuStyle)
	Style\back_gr_r=255
	Style\back_gr_g=255
	Style\back_gr_b=255
	Style\back_ol_r=128
	Style\back_ol_g=128
	Style\back_ol_b=128
	Style\d_r=160
	Style\d_g=160
	Style\d_b=170
	Style\txtc_r=0
	Style\txtc_g=0
	Style\txtc_b=0
	Style\txtn_r=0
	Style\txtn_g=0
	Style\txtn_b=0
	Style\slc_r=60
	Style\slc_g=60
	Style\slc_b=200
	Style\mc_r=0
	Style\mc_g=0
	Style\mc_b=0
	gCMS_Style=ConvertToInteger(Style)
EndFunction
Function CGUI_MenuBlueStyle()
	Style.CGUI_MenuStyle=New(CGUI_MenuStyle)
	Style\back_gr_r=200
	Style\back_gr_g=200
	Style\back_gr_b=255
	Style\back_ol_r=64
	Style\back_ol_g=64
	Style\back_ol_b=128
	Style\d_r=120
	Style\d_g=120
	Style\d_b=150
	Style\txtc_r=0
	Style\txtc_g=0
	Style\txtc_b=0
	Style\txtn_r=0
	Style\txtn_g=0
	Style\txtn_b=0
	Style\slc_r=60
	Style\slc_g=60
	Style\slc_b=200
	Style\mc_r=0
	Style\mc_g=0
	Style\mc_b=0
	gCMS_Style=ConvertToInteger(Style)
EndFunction

'#	End of CGUI_PopupMenu.cb	#
'############################

CGUI_MenuBlueStyle()
//Tehdään 'Muutama' lisää alivalikkoa... *Rolf*
p=CGUI_Menu_Create()
CGUI_Menu_AddItem(c,"Nyt voit Sulkea pelin..",OFF,OFF)
CGUI_Menu_AddItem(c,"Sulje peli",ON,OFF)
For i=1 to 50
c=CGUI_Menu_Create()
CGUI_Menu_AddSubMenu(c,p,"Lisää:")
CGUI_Menu_AddItem(c,"*ROLF* Sammuta->",OFF,OFF)
p=c
Next i

a=CGUI_Menu_Create()
CGUI_Menu_AddItem(a,"Valinta 1",1,ON,ON)
CGUI_Menu_AddItem(a,"Valinta 2",2,On ,ON)
CGUI_Menu_AddItem(a,"Valinta 3",3,On ,ON)
CGUI_Menu_AddItem(a,"Valinta 4",4,ON ,ON)
CGUI_Menu_AddSubMenu(a,c,"Lisää:")
s=CGUI_Menu_Create()
CGUI_Menu_AddItem(s,"Valinta 1",5,ON ,ON)
CGUI_Menu_AddItem(s,"Valinta 2",5,ON ,ON)
CGUI_Menu_AddItem(s,"Valinta 3",7,ON ,ON)
CGUI_Menu_AddItem(s,"Valinta 4",8,ON ,ON)


m=CGUI_Menu_Create()
CGUI_Menu_AddItem(m,"Valinta 1",10,OFF ,ON)
CGUI_Menu_AddItem(m,"Valinta 2",11,ON ,ON)
CGUI_Menu_AddSubMenu(m,s,"Lisää:")
CGUI_Menu_AddItem(m,"Valinta 3",13,ON ,ON)
CGUI_Menu_AddItem(m,"Valinta 4",14,ON ,ON)
CGUI_Menu_AddSeparator(m)
CGUI_Menu_AddSubMenu(m,a,"Lisää:")
SCREEN 800,600
fnt=LoadFont("fixedsys",24)
SetFont fnt
Repeat
	If Showmenu Then CGUI_Menu_Show(m, vx, vy, MouseX(), MouseY(), 0)
	If MouseUp(2)
		vx=MouseX()
		vy=MouseY()
		ShowMenu=True
	ElseIf MouseHit(1)
		ShowMenu=False
		CMD=CGUI_Menu_Show(m, vx, vy, MouseX(), MouseY(), 1)
		CGUI_Menu_CheckItem(CMD)
	EndIf
	
	Text 0,0,FPS()
	Text 0,12,"Valinnan ID:"+CMD
	DrawScreen
Forever
Tulee joskus.. CGUI_Frame.cb täysin modattavat ikkunat!

Koska projektissa on varsin paljon ikuisuus-ainesta (jäätymis vaara kasvaa), olisi mukavaa jos joku toinen hyvin osaava koodari osallistuisi projektin kehitykseen! Varoitan kuitenkin että olen aika pihi vimpaimien toteutuksen kannalta. :mrgreen:
Attachments
CGUI.zip
Tässä kaikki projektin koodi. Kokeilkaa testejä!
(68.61 KiB) Downloaded 107 times
Last edited by JATothrim on Thu Jun 11, 2009 1:12 pm, edited 1 time in total.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
Valtzu
Active Member
Posts: 115
Joined: Sun Aug 26, 2007 2:40 pm
Location: Sauvo
Contact:

Re: CGUI - Helposti Muokattavia Vimpaimia kaikille

Post by Valtzu » Sat Jun 06, 2009 9:09 pm

Toinoisniin saisko nää zippinä näin alkuun, kun iski järjetön laiskuus, vaikkakin on mielenkiintoinen projekti.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CGUI - Helposti Muokattavia Vimpaimia kaikille!

Post by JATothrim » Sat Jun 06, 2009 10:38 pm

:mrgreen: Kävi mielessä laittaa pakettiin. Mutta pistin pelkkänä koodina juuri sen takia, että nuo esimerkit saa ajettua helposti. CGUI_Button ei kuulunut tuohon helpoon. :D Edittaan paketin jossain välissä, kunhan saan pilkottua esimerkit kirjaston tiedostoista pois..
EDIT:

Projekti on edistynyt, kautta ScrollBar:in! Eka viestiin lisätty liitteenä koko projekti. (huoh) toivon että tämä ei hautaudu.. niin kuin joillekiin Projektit osion ketuille on käynyt. :? (kommenteja siis toivotaan kovasti.. :roll: )

-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

Post Reply