Buttons mostly ok
This commit is contained in:
		
							parent
							
								
									d1946315e9
								
							
						
					
					
						commit
						f7dab009b3
					
				
							
								
								
									
										9
									
								
								0hh1.p8
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								0hh1.p8
									
									
									
									
									
								
							|  | @ -1,13 +1,16 @@ | |||
| pico-8 cartridge // http://www.pico-8.com | ||||
| version 36 | ||||
| __lua__ | ||||
| -- enable mouse | ||||
| poke(0x5F2D, 1) | ||||
| 
 | ||||
| -- Font M3X6 by daniel linssen | ||||
| poke(0x5600, 4, 4, 7) | ||||
| poke4(0x5700,unpack(split"0x0000.0000,0x0000.0000,0x0202.0202,0x0000.0200,0x0000.0505,0x0000.0000,0x0505.0705,0x0000.0507,0x0407.0106,0x0000.0203,0x0204.0100,0x0000.0401,0x0102.0502,0x0000.0305,0x0000.0102,0x0000.0000,0x0101.0102,0x0000.0201,0x0202.0201,0x0000.0102,0x0205.0000,0x0000.0005,0x0702.0000,0x0000.0002,0x0000.0000,0x0000.0102,0x0700.0000,0x0000.0000,0x0000.0000,0x0000.0200,0x0202.0404,0x0000.0101,0x0505.0506,0x0000.0305,0x0202.0302,0x0000.0702,0x0204.0403,0x0000.0701,0x0403.0403,0x0000.0304,0x0406.0505,0x0000.0404,0x0403.0107,0x0000.0304,0x0503.0106,0x0000.0605,0x0204.0407,0x0000.0202,0x0502.0506,0x0000.0305,0x0605.0503,0x0000.0304,0x0002.0000,0x0000.0002,0x0002.0000,0x0000.0102,0x0102.0400,0x0000.0402,0x0007.0000,0x0000.0007,0x0402.0100,0x0000.0102,0x0204.0403,0x0000.0200,0x0505.0506,0x0000.0601,0x0604.0300,0x0000.0705,0x0505.0301,0x0000.0705,0x0101.0600,0x0000.0701,0x0505.0604,0x0000.0705,0x0705.0600,0x0000.0601,0x0702.0204,0x0000.0202,0x0705.0600,0x0000.0304,0x0505.0301,0x0000.0505,0x0202.0002,0x0000.0202,0x0202.0002,0x0000.0102,0x0305.0101,0x0000.0505,0x0202.0202,0x0000.0402,0x0707.0300,0x0000.0507,0x0505.0300,0x0000.0505,0x0505.0600,0x0000.0305,0x0305.0700,0x0000.0101,0x0705.0600,0x0000.0404,0x0101.0600,0x0000.0101,0x0701.0600,0x0000.0304,0x0207.0202,0x0000.0202,0x0505.0500,0x0000.0705,0x0505.0500,0x0000.0205,0x0705.0500,0x0000.0507,0x0205.0500,0x0000.0505,0x0605.0500,0x0000.0304,0x0204.0700,0x0000.0701,0x0101.0103,0x0000.0301,0x0202.0101,0x0000.0404,0x0202.0203,0x0000.0302,0x0000.0502,0x0000.0000,0x0000.0000,0x0000.0403,0x0000.0201,0x0000.0000,0x0507.0506,0x0000.0505,0x0507.0503,0x0000.0705,0x0101.0106,0x0000.0701,0x0505.0503,0x0000.0305,0x0103.0107,0x0000.0701,0x0301.0106,0x0000.0101,0x0501.0106,0x0000.0705,0x0507.0505,0x0000.0505,0x0202.0207,0x0000.0702,0x0404.0407,0x0000.0304,0x0503.0505,0x0000.0505,0x0101.0101,0x0000.0701,0x0507.0705,0x0000.0505,0x0505.0503,0x0000.0505,0x0505.0506,0x0000.0305,0x0103.0507,0x0000.0101,0x0505.0506,0x0000.0403,0x0503.0507,0x0000.0505,0x0407.0106,0x0000.0304,0x0202.0207,0x0000.0202,0x0505.0505,0x0000.0705,0x0505.0505,0x0000.0205,0x0705.0505,0x0000.0507,0x0202.0505,0x0000.0505,0x0205.0505,0x0000.0202,0x0202.0407,0x0000.0701,0x0302.0204,0x0000.0402,0x0202.0202,0x0000.0202,0x0602.0201,0x0000.0102,0x0704.0000,0x0000.0001,0x0205.0200,0x0000.0000")) | ||||
| poke(0x5f58,0x81) | ||||
| 
 | ||||
| #include main.lua | ||||
| #include board.lua | ||||
| #include ui.lua | ||||
| #include states/menu.lua | ||||
| #include states/game.lua | ||||
| #include states/rules.lua | ||||
|  | @ -54,5 +57,5 @@ cc0cc01101100cc0cc08801100110110110110011011011011001101101101100880110110110088 | |||
| 110110110110011011011011001101101101100110110cc01100cc01101101100cc01101101100110cc08801100cc0cc08808800000000000000000000000000 | ||||
| 110110110110011011011011001101101101100110110cc01100cc01101101100cc01101101100110cc08801100cc0cc08808800000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 110cc0cc01100880cc0cc0880011011088011001101108801100cc01101101100cc01101101100110cc0880cc00880cc0880cc00000000000000000000000000 | ||||
| 110cc0cc01100880cc0cc0880011011088011001101108801100cc01101101100cc01101101100110cc0880cc00880cc0880cc00000000000000000000000000 | ||||
| 110cc0cc01100880cc0cc0880011011088011001101108801100cc01101101100cc01101101100880cc0880cc00880cc0880cc00000000000000000000000000 | ||||
| 110cc0cc01100880cc0cc0880011011088011001101108801100cc01101101100cc01101101100880cc0880cc00880cc0880cc00000000000000000000000000 | ||||
|  |  | |||
							
								
								
									
										47
									
								
								main.lua
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								main.lua
									
									
									
									
									
								
							|  | @ -1,5 +1,3 @@ | |||
| poke(0x5F2D, 1) | ||||
| 
 | ||||
| -- | ||||
| -- constants | ||||
| -- | ||||
|  | @ -15,6 +13,14 @@ local LEFT,RIGHT,UP,DOWN,BTN_O,BTN_X = 0,1,2,3,4,5 | |||
| -- Utils | ||||
| -- | ||||
| 
 | ||||
| function customFont() | ||||
| 	poke(0x5f58,0x81) | ||||
| end | ||||
| 
 | ||||
| function standardFont(font) | ||||
| 	poke(0x5f58,0x80) | ||||
| end | ||||
| 
 | ||||
| function idx_xy(idx, width) | ||||
| 	return (idx - 1) % width + 1, (idx - 1) \ width + 1 | ||||
| end | ||||
|  | @ -111,41 +117,6 @@ end | |||
| --   return str.."}" | ||||
| -- end | ||||
| 
 | ||||
| function makeButton(x, y, w, h, text, onClick, onHover) | ||||
| 	local state = 0 -- 0 = normal, 1 = hovered, 2 = pressed | ||||
| 	return { | ||||
| 		x = x, | ||||
| 		y = y, | ||||
| 		w = w, | ||||
| 		h = h, | ||||
| 		text = text, | ||||
| 		onClick = onClick, | ||||
| 		onHover = onHover, | ||||
| 
 | ||||
| 		draw=function(self, selected) | ||||
| 			-- rectfillw(self.x, self.y, self.w, self.h, 8) | ||||
| 			local color = selected and 7 or 5 | ||||
| 			print(self.text, self.x+1, self.y+1, color) | ||||
| 		end, | ||||
| 
 | ||||
| 		update=function(self) | ||||
| 			if mouse_x >= self.x and mouse_x <= self.x + self.w and | ||||
| 				mouse_y >= self.y and mouse_y <= self.y + self.h then | ||||
| 				if stat(34)&1 == 0 and state == 2 and self.onClick then | ||||
| 					self.onClick() | ||||
| 				end | ||||
| 				if stat(34)&1 == 1 then | ||||
| 					state = 2 | ||||
| 				else | ||||
| 					if onHover then onHover() end | ||||
| 					state = 1 | ||||
| 				end | ||||
| 			else | ||||
| 				state = 0 | ||||
| 			end | ||||
| 		end | ||||
| 	} | ||||
| end | ||||
| 
 | ||||
| function setState(state, ...) | ||||
| 	local args = {...} | ||||
|  | @ -175,7 +146,7 @@ function _init() | |||
| 		game = stateGame() | ||||
| 	} | ||||
| 
 | ||||
| 	setState(states.rules) | ||||
| 	setState(states.menu) | ||||
| 
 | ||||
| end | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,13 +1,21 @@ | |||
| function stateMenu() | ||||
| 
 | ||||
| 	local selected = 1 | ||||
| 
 | ||||
| 	function onBtnDraw(btn) | ||||
| 		if selected == btn.data.i then | ||||
| 			btn.color = 7 | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	local buttons = { | ||||
| 		makeButton(10, 10, 30, 6, "play", | ||||
| 			function() setState(states.game) end, | ||||
| 			function() selected = 1 end), | ||||
| 		makeButton(10, 20, 30, 6, "rules", | ||||
| 			function() setState(states.rules) end, | ||||
| 			function() selected = 2 end) | ||||
| 		makeButton({x=10, y=10, w=30, text="play", data={i=1}, | ||||
| 			onClick=function() setState(states.game) end, | ||||
| 			onHover=function(btn) btn.color = 7 selected = 1 end, | ||||
| 			onDraw=onBtnDraw}), | ||||
| 		makeButton({x=10, y=20, w=30, text="rules", data={i=2}, | ||||
| 			onClick=function() setState(states.rules) end, | ||||
| 			onHover=function(btn) btn.color = 7 selected = 2 end, | ||||
| 			onDraw=onBtnDraw}) | ||||
| 	} | ||||
| 
 | ||||
| 	function _enter() | ||||
|  |  | |||
|  | @ -1,12 +1,19 @@ | |||
| function stateRules() | ||||
| 
 | ||||
| 	local fade = split"0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,9,10,9,4,2" | ||||
| 	local fade = split"0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,9,10,9,4,2,1" | ||||
| 	local color = 1 | ||||
| 
 | ||||
| 	function blink(x,y,w,h) | ||||
| 		rect2(x,y,w,h,fade[color]) | ||||
| 	end | ||||
| 
 | ||||
| 	function goBack() | ||||
| 		setState(states.menu) | ||||
| 	end | ||||
| 
 | ||||
| 	local btnBack = makeButton({x=1, y=118, w=30, h=7, text="❎ mENU", color=8, | ||||
| 		onClick=function() goBack() end, | ||||
| 		onHover=function(btn) btn.color = 7 end}) | ||||
| 
 | ||||
| 	return { | ||||
| 		_update=function() | ||||
|  | @ -16,9 +23,18 @@ function stateRules() | |||
| 			if color>#fade then | ||||
| 				color = 1 | ||||
| 			end | ||||
| 
 | ||||
| 			-- Back to the menu | ||||
| 			if btnp(BTN_X) then | ||||
| 				goBack() | ||||
| 			end | ||||
| 
 | ||||
| 			btnBack:update() | ||||
| 		end, | ||||
| 
 | ||||
| 		_draw=function() | ||||
| 			customFont() | ||||
| 
 | ||||
| 			print("1) yOU CAN'T HAVE MORE THAN\n   TWO (2) CONSECUTIVE TILES\n   OF THE SAME COLOR", 2,2, 7) | ||||
| 			local x = 14 | ||||
| 			local y = 28 | ||||
|  | @ -61,6 +77,10 @@ function stateRules() | |||
| 			sspr(91,32, 12,12, x+26,y+20) | ||||
| 			blink(x-1, y+25, 12, 6) | ||||
| 			blink(x+25, y+25, 12, 6) | ||||
| 
 | ||||
| 			-------------- | ||||
| 
 | ||||
| 			btnBack:draw() | ||||
| 		end, | ||||
| 	} | ||||
| end | ||||
							
								
								
									
										41
									
								
								ui.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ui.lua
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| function makeButton(options) | ||||
| 	local state = 0 -- 0 = normal, 1 = hovered, 2 = pressed | ||||
| 	return { | ||||
| 		x = options.x, | ||||
| 		y = options.y, | ||||
| 		w = options.w, | ||||
| 		h = options.h or 6, | ||||
| 		data = options.data, | ||||
| 		text = options.text, | ||||
| 		onClick = options.onClick, | ||||
| 		onHover = options.onHover, | ||||
| 		onDraw = options.onDraw, | ||||
| 		ogColor = options.color or 5, | ||||
| 		color = options.color or 5, | ||||
| 
 | ||||
| 		draw=function(self, selected) | ||||
| 			standardFont() | ||||
| 			-- rect2(self.x, self.y, self.w, self.h, 8) | ||||
| 			if self.onDraw then self.onDraw(self) end | ||||
| 			print(self.text, self.x+1, self.y+1, self.color) | ||||
| 		end, | ||||
| 
 | ||||
| 		update=function(self) | ||||
| 			self.color = self.ogColor | ||||
| 			if mouse_x >= self.x and mouse_x <= self.x + self.w and | ||||
| 				mouse_y >= self.y and mouse_y <= self.y + self.h then | ||||
| 				if stat(34)&1 == 0 and state == 2 and self.onClick then | ||||
| 					self.onClick(self) | ||||
| 				end | ||||
| 				if stat(34)&1 == 1 then | ||||
| 					state = 2 | ||||
| 				else | ||||
| 					if self.onHover then self.onHover(self) end | ||||
| 					state = 1 | ||||
| 				end | ||||
| 			else | ||||
| 				state = 0 | ||||
| 			end | ||||
| 		end | ||||
| 	} | ||||
| end | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user