216 lines
No EOL
7.8 KiB
Text
216 lines
No EOL
7.8 KiB
Text
|
||
„>
|
||
î=function init(self)
|
||
msg.post(".", "acquire_input_focus")
|
||
-- show the title screen when the game is loaded
|
||
|
||
msg.post("#startscreen_proxy", "load")
|
||
self.collection_to_load = ""
|
||
self.current_collection = "#startscreen_proxy"
|
||
|
||
--msg.post("#level2_proxy", "load")
|
||
--self.collection_to_load = ""
|
||
--self.current_collection = "#level2_proxy"
|
||
|
||
local my_file_path = sys.get_save_file("cursegame", "high_scores")
|
||
self.highscore_table = sys.load(my_file_path)
|
||
if not next(self.highscore_table) then
|
||
for i = 1, 10, 1 do
|
||
table.insert(self.highscore_table, {"---", 0})
|
||
end
|
||
sys.save(my_file_path, self.highscore_table)
|
||
end
|
||
-- Validate highy score tables, as nils can can problems
|
||
for i = 1, 10, 1 do
|
||
if self.highscore_table[i][1] == nil then
|
||
self.highscore_table[i][1] = "---"
|
||
end
|
||
if self.highscore_table[i][2] == nil then
|
||
self.highscore_table[i][2] = 0
|
||
end
|
||
end
|
||
|
||
self.highscore_position = 0
|
||
self.current_lives = 3
|
||
self.current_level = "level1"
|
||
self.current_score = 0
|
||
self.hide_banner = true
|
||
|
||
self.sounds_volume = 717
|
||
self.music_volume = 717
|
||
end
|
||
|
||
function final(self)
|
||
msg.post(".", "release_input_focus")
|
||
end
|
||
|
||
function update(self, dt)
|
||
if not self.hide_banner then
|
||
msg.post("/banner#score", "show")
|
||
msg.post("/banner#score", "set_scores", { score = self.current_score })
|
||
msg.post("/banner#banner", "lives", { lives = self.current_lives })
|
||
else
|
||
msg.post("/banner#score", "hide")
|
||
msg.post("/banner#banner", "hide")
|
||
end
|
||
end
|
||
|
||
function fixed_update(self, dt)
|
||
-- This function is called if 'Fixed Update Frequency' is enabled in the Engine section of game.project
|
||
-- Can be coupled with fixed updates of the physics simulation if 'Use Fixed Timestep' is enabled in
|
||
-- Physics section of game.project
|
||
-- Add update code here
|
||
-- Learn more: https://defold.com/manuals/script/
|
||
-- Remove this function if not needed
|
||
end
|
||
|
||
function on_message(self, message_id, message, sender)
|
||
-- show the collection once loaded into memory
|
||
if message_id == hash("proxy_loaded") then
|
||
msg.post(sender, "enable")
|
||
-- load the correct collection when a message is received
|
||
if self.current_collection == "#settings_proxy" then
|
||
msg.post("settings:/background#settings1", "sounds_volume", { sounds_volume = self.sounds_volume })
|
||
msg.post("settings:/background#settings1", "music_volume", { music_volume = self.music_volume })
|
||
end
|
||
elseif message_id == hash("show level1 screen") then
|
||
-- title screen
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level1_proxy"
|
||
self.current_score = 0
|
||
self.current_lives = 3
|
||
self.current_level = "level1"
|
||
self.hide_banner = false
|
||
--load game over screen when character is dead
|
||
elseif message_id == hash("NoMoreLives") then
|
||
self.hide_banner = true
|
||
local show_gameover = true
|
||
--print("dead")
|
||
for i = 1, 10, 1 do
|
||
if self.current_score > self.highscore_table [i][2] then
|
||
for j = 9, i, -1 do
|
||
self.highscore_table[j+1][1] = self.highscore_table[j][1]
|
||
self.highscore_table[j+1][2] = self.highscore_table[j][2]
|
||
end
|
||
self.highscore_table [i][2] = self.current_score
|
||
--self.highscore_table [self.highscore_position][1] =
|
||
self.highscore_position = i
|
||
local my_file_path = sys.get_save_file("cursegame", "high_scores")
|
||
sys.save(my_file_path, self.highscore_table)
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#entername_proxy"
|
||
show_gameover = false
|
||
break
|
||
end
|
||
end
|
||
if show_gameover == true then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#gameover_proxy"
|
||
end
|
||
elseif message_id == hash("show scoreboard screen") then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#scoreboard_proxy"
|
||
|
||
elseif message_id == hash("show instructions screen") then
|
||
-- instructions screen
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#instructions_proxy"
|
||
|
||
elseif message_id == hash("show settings screen") then
|
||
-- settings screen
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#settings_proxy"
|
||
|
||
elseif message_id == hash("escape") then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#startscreen_proxy"
|
||
|
||
elseif message_id == hash("show level1prescreen") then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level1prescreen_proxy"
|
||
|
||
elseif message_id == hash("show level2 screen") then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level2_proxy"
|
||
|
||
elseif message_id == hash("show level3 screen") then
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level3_proxy"
|
||
|
||
elseif message_id == hash("send_table") then
|
||
msg.post("scoreboard:/scoreboard#scoreboard", "highscore_table", { high_scores = self.highscore_table})
|
||
|
||
elseif message_id == hash("save_name") then
|
||
self.highscore_table[self.highscore_position][1] = message.name
|
||
local my_file_path = sys.get_save_file("cursegame", "high_scores")
|
||
sys.save(my_file_path, self.highscore_table)
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#scoreboard_proxy"
|
||
|
||
elseif message_id == hash("LevelCompleted") then
|
||
if self.current_collection == "#level1_proxy" then
|
||
self.current_level = "level2"
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level2prescreen_proxy"
|
||
elseif self.current_collection == "#level2_proxy" then
|
||
self.current_level = "level3"
|
||
msg.post(self.current_collection, "unload")
|
||
self.collection_to_load = "#level3prescreen_proxy"
|
||
end
|
||
|
||
elseif message_id == hash("LifeLost") then
|
||
self.current_lives = self.current_lives - 1
|
||
if self.current_lives <= 0 then
|
||
msg.post("main:/controller#main", "NoMoreLives")
|
||
end
|
||
elseif message_id == hash("proxy_unloaded") then
|
||
sound.stop("music#background_music", {speed = 1})
|
||
msg.post(self.collection_to_load, "load")
|
||
self.current_collection = self.collection_to_load
|
||
self.collection_to_load = ""
|
||
|
||
elseif message_id == hash("add 100 points") then
|
||
self.current_score = self.current_score + 100
|
||
--print(self.current_score)
|
||
|
||
elseif message_id == hash("play amulet sound") then
|
||
sound.play("sound#amulet_sound", {speed = 1, gain = (self.sounds_volume - 547)/(887 - 547)})
|
||
elseif message_id == hash("play dying sound") then
|
||
sound.play("sound#dying_sound", {speed = 1, gain = (self.sounds_volume - 547)/(887 - 547)})
|
||
elseif message_id == hash("play curse dying sound") then
|
||
sound.play("sound#curse_dying_sound", {speed = 0.5, gain = (self.sounds_volume - 547)/(887 - 547)})
|
||
elseif message_id == hash("play jump sound") then
|
||
sound.play("sound#jump_sound", {speed = 1, gain = (self.sounds_volume - 547)/(887 - 547)})
|
||
elseif message_id == hash("play background music") then
|
||
sound.play("music#background_music", {speed = 1, gain = (self.music_volume - 547)/(887 - 547)})
|
||
|
||
elseif message_id == hash("sounds_volume") then
|
||
self.sounds_volume = message.sounds_volume
|
||
-- local scaled_volume = (self.sounds_volume - 547)/(887 - 547)
|
||
-- sound.set_group_gain("sounds", scaled_volume)
|
||
|
||
elseif message_id == hash("music_volume") then
|
||
self.music_volume = message.music_volume
|
||
-- local scaled_volume = (self.music_volume - 547)/(887 - 547)
|
||
-- sound.set_group_gain("music", scaled_volume)
|
||
end
|
||
end
|
||
|
||
function on_input(self, action_id, action)
|
||
-- Add input-handling code here. The game object this script is attached to
|
||
-- must have acquired input focus:
|
||
--
|
||
-- msg.post(".", "acquire_input_focus")
|
||
--
|
||
-- All mapped input bindings will be received. Mouse and touch input will
|
||
-- be received regardless of where on the screen it happened.
|
||
-- Learn more: https://defold.com/manuals/input/
|
||
-- Remove this function if not needed
|
||
end
|
||
|
||
function on_reload(self)
|
||
-- Add reload-handling code here
|
||
-- Learn more: https://defold.com/manuals/hot-reload/
|
||
-- Remove this function if not needed
|
||
end
|
||
@main/main.script" |