diff options
Diffstat (limited to 'pacmine')
| -rwxr-xr-x | pacmine/gamestate.lua | 56 | ||||
| -rw-r--r-- | pacmine/ghost.lua | 2 | ||||
| -rwxr-xr-x | pacmine/hud.lua | 2 | ||||
| -rw-r--r-- | pacmine/init.lua | 34 | 
4 files changed, 57 insertions, 37 deletions
| diff --git a/pacmine/gamestate.lua b/pacmine/gamestate.lua index 6d507b2..895e331 100755 --- a/pacmine/gamestate.lua +++ b/pacmine/gamestate.lua @@ -15,7 +15,7 @@ local score_for_life_award = 5000  -- Public functions (these can be called from any other place)  -- Start the game from the spawn block at position "pos" activated by "player" -function pacmine.game_start(pos, player) +function pacmine.game_start(pos, player, gamedef)  	-- create an id unique for the given position  	local id = minetest.pos_to_string(pos)  	local player_name = player:get_player_name() @@ -28,17 +28,21 @@ function pacmine.game_start(pos, player)  	end  	-- Create a new game state with that id and add it to the game list +	gamedef = gamedef or {}  	gamestate = {  		id = id,  		player_name = player_name,  		pos = pos, -		start = {x=pos.x+14,y=pos.y+0.5,z=pos.z+16}, -		pellet_count = 0, +		player_start = vector.add(pos, (gamedef.player_start or {x=14,y=0.5,z=16})), +		ghost_start = vector.add(pos, (gamedef.ghost_start or {x=13,y=0.5,z=19})), +		pellet_total =  gamedef.pellet_total or 252, +		speed = gamedef.speed or 2, +		lives = gamedef.lives or 3, +		scorename = gamedef.scorename,  		level = 1, -		speed = 2, -		lives = 3,  		score = 0,  		awarded_lives = 0, +		pellet_count = 0,  	}   	pacmine.games[id] = gamestate  	pacmine.players[id] = player @@ -46,8 +50,8 @@ function pacmine.game_start(pos, player)  	minetest.log("action","New pacmine game started at " .. id .. " by " .. gamestate.player_name)  	-- place schematic -	local schem = minetest.get_modpath("pacmine").."/schems/pacmine.mts" -	minetest.place_schematic({x=pos.x,y=pos.y-1,z=pos.z-2},schem,0, "air", true) +	local schem = gamedef +	minetest.place_schematic({x=pos.x,y=pos.y-1,z=pos.z-2},gamedef.schematic,0, "air", true)  	-- Set start positions  	pacmine.game_reset(id, player) @@ -65,12 +69,14 @@ function pacmine.game_end(id)  		player:moveto(vector.add(gamestate.pos,{x=0.5,y=0.5,z=-1.5}))  	end  	-- Save score -	local ranking = myhighscore.save_score("pacmine", { -		player = gamestate.player_name, -		score = gamestate.score -	}) -	if ranking then -		minetest.chat_send_player(gamestate.player_name, "You made it to the highscores! Your Ranking: " .. ranking) +	if gamestate.scorename then +		local ranking = myhighscore.save_score(gamestate.scorename, { +			player = gamestate.player_name, +			score = gamestate.score +		}) +		if ranking then +			minetest.chat_send_player(gamestate.player_name, "You made it to the highscores! Your Ranking: " .. ranking) +		end  	end  	-- Clear the data  	pacmine.games[id] = nil @@ -90,34 +96,30 @@ function pacmine.game_reset(id, player)  	-- Position the player  	local player = player or minetest.get_player_by_name(gamestate.player_name) -	player:setpos(gamestate.start) +	player:setpos(gamestate.player_start)  	-- Spawn the ghosts and assign the game id to each ghost  	minetest.after(2, function()  		if pacmine.games[id] and last_reset == pacmine.games[id].last_reset then -			local pos = vector.add(gamestate.pos, {x=13,y=0.5,z=19}) -			local ghost = minetest.add_entity(pos, "pacmine:inky") +			local ghost = minetest.add_entity(gamestate.ghost_start, "pacmine:inky")  			ghost:get_luaentity().gameid = id  		end  	end)  	minetest.after(12, function()  		if pacmine.games[id] and last_reset == pacmine.games[id].last_reset then -			local pos = vector.add(gamestate.pos, {x=15,y=0.5,z=19}) -			local ghost = minetest.add_entity(pos, "pacmine:pinky") +			local ghost = minetest.add_entity(gamestate.ghost_start, "pacmine:pinky")  			ghost:get_luaentity().gameid = id  		end  	end)  	minetest.after(22, function()  		if pacmine.games[id] and last_reset == pacmine.games[id].last_reset then -			local pos = vector.add(gamestate.pos, {x=13,y=0.5,z=18}) -			local ghost = minetest.add_entity(pos, "pacmine:blinky") +			local ghost = minetest.add_entity(gamestate.ghost_start, "pacmine:blinky")  			ghost:get_luaentity().gameid = id  		end  	end)  	minetest.after(32, function()  		if pacmine.games[id] and last_reset == pacmine.games[id].last_reset then -			local pos = vector.add(gamestate.pos, {x=15,y=0.5,z=18}) -			local ghost = minetest.add_entity(pos, "pacmine:clyde") +			local ghost = minetest.add_entity(gamestate.ghost_start, "pacmine:clyde")  			ghost:get_luaentity().gameid = id  		end  	end) @@ -156,7 +158,7 @@ function pacmine.add_fruit(id)  		node.name = "pacmine:apple"  		node.param2 = 3  	end -	local pos = vector.add(gamestate.start,{x=0,y=-1,z=0}) +	local pos = vector.add(gamestate.player_start,{x=0,y=-1,z=0})  	minetest.set_node(pos, node)  	print(node.param2)  	-- Set the timer for the fruit to disappear @@ -176,7 +178,7 @@ function pacmine.on_player_got_pellet(player)  	if gamestate.pellet_count == 70 or gamestate.pellet_count == 180 then  		pacmine.add_fruit(gamestate.id) -	elseif gamestate.pellet_count >= 252 then -- 252 +	elseif gamestate.pellet_count >= gamestate.pellet_total then  		minetest.chat_send_player(name, "You cleared the board!")  		pacmine.remove_ghosts(gamestate.id) @@ -327,9 +329,3 @@ minetest.register_chatcommand("pacmine_exit", {  		end  	end  }) - --- Register with the myhighscore mod -myhighscore.register_game("pacmine", { -	description = "Pacmine", -	icon = "pacmine_1.png", -}) diff --git a/pacmine/ghost.lua b/pacmine/ghost.lua index adc106d..6ab99dc 100644 --- a/pacmine/ghost.lua +++ b/pacmine/ghost.lua @@ -85,7 +85,7 @@ for i in ipairs(ghosts) do  				if gamestate.power_pellet then  					-- Player eats ghost! move it to spawn -					local ghost_spawn = vector.add(gamestate.pos, {x=13,y=0.5,z=19}) +					local ghost_spawn = gamestate.ghost_start  					self.object:setpos(ghost_spawn)  					-- set the timer negative so it'll have to wait extra time  					self.timer = -ghosts_death_delay diff --git a/pacmine/hud.lua b/pacmine/hud.lua index 1598a2b..8fb9e0c 100755 --- a/pacmine/hud.lua +++ b/pacmine/hud.lua @@ -11,7 +11,7 @@ function pacmine.update_hud(id, player)  		pacmine.remove_hud(player)  		return  	end -	local pellets_left = 252 - game.pellet_count +	local pellets_left = game.pellet_total - game.pellet_count  	local hudtext = "Score      " .. game.score  		.. "\nLevel       " .. game.level  		.. "\nLives       " .. game.lives diff --git a/pacmine/init.lua b/pacmine/init.lua index 7ada96f..5fc45ae 100644 --- a/pacmine/init.lua +++ b/pacmine/init.lua @@ -71,7 +71,7 @@ minetest.register_node("pacmine:pellet_2", {  })  --The placer block for pacmine -minetest.register_node("pacmine:block2",{ +minetest.register_node("pacmine:classic_board",{  	description = "Pacman",  	inventory_image = "pacmine_1.png",  	tiles = { @@ -88,11 +88,14 @@ minetest.register_node("pacmine:block2",{  	light_source = 8,  	groups = {cracky = 1},  	on_rightclick = function(pos, node, player, itemstack, pointed_thing) -		pacmine.game_start(pos, player) +		pacmine.game_start(pos, player, { +			schematic = minetest.get_modpath("pacmine").."/schems/pacmine.mts", +			scorename = "pacmine:classic_board", +		})  	end,  })  --The placer block for pacmine mini -minetest.register_node("pacmine:block",{ +minetest.register_node("pacmine:mini_board",{  	description = "Pacman Mini",  	inventory_image = "pacmine_1.png^pacmine_mini.png",  	tiles = { @@ -109,7 +112,28 @@ minetest.register_node("pacmine:block",{  	light_source = 8,  	groups = {cracky = 1},  	on_rightclick = function(pos, node, player, itemstack, pointed_thing) -		local schem = minetest.get_modpath("pacmine").."/schems/pacmini.mts" -		minetest.place_schematic({x=pos.x,y=pos.y-1,z=pos.z-2},schem,0, "air", true) +		pacmine.game_start(pos, player, { +			schematic =  minetest.get_modpath("pacmine").."/schems/pacmini.mts", +			player_start = {x=13,y=0.5,z=2}, +			ghost_start = {x=13,y=0.5,z=10}, +			speed = 1, +			pellet_total = 91, +			scorename = "pacmine:mini_board", +		})  	end,  }) + +minetest.register_alias("pacmine:block", "pacmine:mini_board") +minetest.register_alias("pacmine:block2", "pacmine:normal_board") + +-- Register with the myhighscore mod +myhighscore.register_game("pacmine:classic_board", { +	description = "Pacmine", +	icon = "pacmine_1.png", +}) + +-- Register with the myhighscore mod +myhighscore.register_game("pacmine:mini_board", { +	description = "Pacmine Mini", +	icon = "pacmine_1.png^pacmine_mini.png", +}) | 
