project/build/default/main/main.scriptc

193 lines
No EOL
7.3 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

•:
ÿ9function 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("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 = "#level2_proxy"
elseif self.current_collection == "#level2_proxy" then
self.current_level = "level3"
msg.post(self.current_collection, "unload")
self.collection_to_load = "#level3_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"