forked from team-sg/hero-mark-2
Made autoload and ui folders to clean things up
This commit is contained in:
parent
212b49de56
commit
8cfe971e06
26 changed files with 50 additions and 43 deletions
186
autoloads/game.gd
Normal file
186
autoloads/game.gd
Normal file
|
@ -0,0 +1,186 @@
|
|||
extends Node
|
||||
|
||||
var resolution = Vector2(256,192)
|
||||
onready var viewport = get_parent().get_node("Main/Control/ViewportContainer/Viewport")
|
||||
var current_sector = Vector2(0,0)
|
||||
var fullscreen = false
|
||||
#Onreadys
|
||||
onready var fade = viewport.get_node("FadeLayer")
|
||||
onready var viewport_container = get_parent().get_node("Main/Control/ViewportContainer")
|
||||
#Collectibles
|
||||
var golds = 0
|
||||
var stars = [false,false,false,false,false]
|
||||
var shards = 0
|
||||
var arrows = 0
|
||||
var score = 0
|
||||
var high_score = 0
|
||||
var lives = 2
|
||||
var deaths = 0
|
||||
var time = 0.0
|
||||
#Audio Channels
|
||||
onready var ac_jump = $JumpSound
|
||||
onready var ac_collectible = $CollecitbleSound
|
||||
onready var ac_climb = $ClimbSound
|
||||
onready var ac_die = $DieSound
|
||||
onready var ac_music = $Music
|
||||
onready var ac_cheat = $CodeEntrySound
|
||||
onready var ac_boss = $BossSound
|
||||
#Sounds
|
||||
const a_gold = preload("res://audio/sounds/gold.wav")
|
||||
const a_arrow = preload("res://audio/sounds/a_egg_collect.ogg")
|
||||
const a_jump = preload("res://audio/sounds/jump.ogg")
|
||||
const a_star = preload("res://audio/sounds/a_jinjo.ogg")
|
||||
const a_shard = preload("res://audio/sounds/shard.wav")
|
||||
const a_climb_up = preload("res://audio/sounds/a_climb.ogg")
|
||||
const a_climb_down = preload("res://audio/sounds/a_bmilc.ogg")
|
||||
const a_sword = preload("res://audio/sounds/sword.ogg")
|
||||
const a_doublejump = preload("res://audio/sounds/a_bree.wav")
|
||||
const a_shoot = preload("res://audio/sounds/a_egg_shoot.ogg")
|
||||
const a_die = preload("res://audio/sounds/die.wav")
|
||||
const a_die_skeleton = preload("res://audio/sounds/die_skeleton.wav")
|
||||
const a_scrump_die = preload("res://audio/sounds/scrump_die.wav")
|
||||
const a_die_robot = preload("res://audio/sounds/die_robot.wav")
|
||||
const a_gover = preload("res://audio/sounds/gover.wav")
|
||||
const a_boss_hurt = preload("res://audio/sounds/boss_hurt.wav")
|
||||
#Objects
|
||||
const block_text = preload("res://objects/hud/blocktext.tscn")
|
||||
const pause_screen = preload("res://objects/hud/pause_screen.tscn")
|
||||
#Game info
|
||||
var respawn_point = Vector2(32,166) #Respawn point
|
||||
var current_level = 0 #Current level being played
|
||||
var current_file = 1 #Current save file
|
||||
var shards_collected = [false,false,false,false,false,false,false,false,false,false]
|
||||
var is_marathon_mode = false
|
||||
var use_lives = false
|
||||
var can_pause = true
|
||||
|
||||
func _ready():
|
||||
Save.load_file(current_file)
|
||||
Save.load_options()
|
||||
|
||||
#Instances a node
|
||||
func instance_node(node:PackedScene,x:float,y:float,parent):
|
||||
var Instance = node.instance()
|
||||
Instance.global_position = Vector2(x,y)
|
||||
parent.add_child(Instance)
|
||||
|
||||
#Plays a sound
|
||||
func play_sound(snd,player):
|
||||
player.set_stream(snd)
|
||||
player._set_playing(true)
|
||||
|
||||
#Get position in sectors
|
||||
func get_sector(pos):
|
||||
return (pos / resolution).floor()
|
||||
|
||||
#Return the current Map
|
||||
func get_map():
|
||||
return get_tree().get_nodes_in_group("map")[0]
|
||||
|
||||
#Go to new map
|
||||
func change_map(map):
|
||||
get_tree().paused = true
|
||||
can_pause = false
|
||||
fade.fade_out(0.4)
|
||||
yield(fade, "fade_finished")
|
||||
can_pause = true
|
||||
clear_collectibles()
|
||||
#Loop is so no more than one level is loaded at a time
|
||||
for maps in get_tree().get_nodes_in_group("map"):
|
||||
maps.queue_free()
|
||||
instance_node(map,0,0,viewport)
|
||||
|
||||
#Clear data
|
||||
func clear_collectibles():
|
||||
Game.score = 0
|
||||
Game.golds = 0
|
||||
Game.stars = [false,false,false,false,false]
|
||||
Game.shards = 0
|
||||
Game.shards_collected = [false,false,false,false,false,false,false,false,false,false]
|
||||
Game.arrows = 0
|
||||
Game.lives = 2
|
||||
Game.deaths = 0
|
||||
|
||||
#Save
|
||||
func save():
|
||||
var save_id = LevelData.levels[current_level].save_id
|
||||
var save_data = Save.get_level_data(save_id)
|
||||
var is_100 = shards >= 5 && golds >= 50
|
||||
# set score and time depending on completion
|
||||
if score > save_data["score_100" if is_100 else "score_any"]:
|
||||
Save.set_score(save_id, score, is_100)
|
||||
if time < save_data["time_100" if is_100 else "time_any"]:
|
||||
Save.set_time(save_id, time, is_100)
|
||||
# set shards
|
||||
for i in 8:
|
||||
if shards_collected[i]:
|
||||
Save.set_shard_collected(save_id, i, true)
|
||||
# set options
|
||||
Save.set_options()
|
||||
# save file
|
||||
Save.save_file(current_file)
|
||||
|
||||
#Convert seconds into M:SS:MS
|
||||
func timeify(input):
|
||||
if input < 600:
|
||||
var minutes = str(floor(input / 60))
|
||||
var seconds = floor(fmod(input,60))
|
||||
var milliseconds := floor(fmod(input, 1) * 100)
|
||||
return minutes + ":" + ("%02d" % seconds) + "." + ("%02d" % milliseconds)
|
||||
elif input == INF:
|
||||
return "-:--.--"
|
||||
else:
|
||||
return "9:59.99"
|
||||
|
||||
#Restart level
|
||||
func restart_level():
|
||||
if Game.score > Game.high_score: Game.high_score = Game.score
|
||||
Game.score = 0
|
||||
Game.golds = 0
|
||||
Game.stars = [false,false,false,false,false]
|
||||
Game.shards = 0
|
||||
Game.arrows = 0
|
||||
Game.lives = 2
|
||||
Game.ac_climb.stop()
|
||||
Game.ac_die.stop()
|
||||
Engine.time_scale = 1.0
|
||||
for tween in get_tree().get_processed_tweens():
|
||||
tween.kill()
|
||||
Game.change_map(load(Game.get_map().filename))
|
||||
ac_music.stream_paused = false
|
||||
|
||||
#Freeze frame
|
||||
func freeze_frame(time):
|
||||
get_tree().paused = true
|
||||
var timer = get_tree().create_timer(time, true)
|
||||
timer.connect("timeout", get_tree(), "set_pause", [false])
|
||||
return timer
|
||||
|
||||
#Check if 100%ed
|
||||
func has_collection_bonus():
|
||||
return Game.shards == 5 && Game.golds == 50
|
||||
|
||||
#Play music, if same track is already playing do nothing
|
||||
func play_music(song):
|
||||
if Game.ac_music.stream != song or Game.ac_music.playing == false:
|
||||
play_sound(song,ac_music)
|
||||
|
||||
func _physics_process(delta):
|
||||
if Debug.entry == false:
|
||||
# restart level
|
||||
if Input.is_action_just_pressed("restart"):
|
||||
call_deferred("restart_level")
|
||||
#CRT FILTER
|
||||
if Input.is_action_just_pressed("crt"):
|
||||
viewport_container.material.set_shader_param("enabled",!viewport_container.material.get_shader_param("enabled"))
|
||||
#Fullscreen
|
||||
if Input.is_action_just_pressed("fullscreen"):
|
||||
fullscreen = !fullscreen
|
||||
if fullscreen:
|
||||
OS.set_window_fullscreen(true)
|
||||
else:
|
||||
OS.set_window_fullscreen(false)
|
||||
#Pause
|
||||
if Input.is_action_just_pressed("pause") && can_pause && !get_tree().paused:
|
||||
var viewport = get_parent().get_node("Main/Control/ViewportContainer/Viewport")
|
||||
viewport.add_child(pause_screen.instance())
|
Loading…
Add table
Add a link
Reference in a new issue