119 lines
4.6 KiB
GDScript
119 lines
4.6 KiB
GDScript
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 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 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
|
|
#Sounds
|
|
onready var a_gold = preload("res://audio/sounds/snd_coin.ogg")
|
|
onready var a_arrow = preload("res://audio/sounds/a_egg_collect.ogg")
|
|
onready var a_jump = preload("res://audio/sounds/jump.ogg")
|
|
onready var a_star = preload("res://audio/sounds/a_jinjo.ogg")
|
|
onready var a_shard = preload("res://audio/sounds/tempjingle.wav")
|
|
onready var a_climb_up = preload("res://audio/sounds/a_climb.ogg")
|
|
onready var a_climb_down = preload("res://audio/sounds/a_bmilc.ogg")
|
|
onready var a_sword = preload("res://audio/sounds/sword.ogg")
|
|
onready var a_doublejump = preload("res://audio/sounds/a_bree.wav")
|
|
onready var a_shoot = preload("res://audio/sounds/a_egg_shoot.ogg")
|
|
onready var a_die = preload("res://audio/sounds/a_hurt.ogg")
|
|
#Objects
|
|
onready var block_text = preload("res://objects/hud/blocktext.tscn")
|
|
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]
|
|
|
|
#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 viewport.get_children()[0]
|
|
|
|
#Go to new map
|
|
func change_map(map):
|
|
shards_collected = [false,false,false,false,false,false,false,false,false,false]
|
|
get_map().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.arrows = 0
|
|
Game.lives = 2
|
|
|
|
#Save
|
|
func save():
|
|
var save = ConfigFile.new()
|
|
save.load(str("user://file") + str(Game.current_file) + str(".pr"))
|
|
if Game.shards == 5 && Game.golds == 50:
|
|
save.set_value(str(current_level),"100% High Score",Game.score)
|
|
save.set_value(str(current_level),"100% Time",Game.time)
|
|
else:
|
|
save.set_value(str(current_level),"Any% High Score",Game.score)
|
|
save.set_value(str(current_level),"Any% Time",Game.time)
|
|
if Game.shards_collected[0] == true: save.set_value(str(current_level),"Shard0",Game.shards_collected[0])
|
|
if Game.shards_collected[1] == true: save.set_value(str(current_level),"Shard1",Game.shards_collected[1])
|
|
if Game.shards_collected[2] == true: save.set_value(str(current_level),"Shard2",Game.shards_collected[2])
|
|
if Game.shards_collected[3] == true: save.set_value(str(current_level),"Shard3",Game.shards_collected[3])
|
|
if Game.shards_collected[4] == true: save.set_value(str(current_level),"Shard4",Game.shards_collected[4])
|
|
if Game.shards_collected[5] == true: save.set_value(str(current_level),"Shard5",Game.shards_collected[5])
|
|
if Game.shards_collected[6] == true: save.set_value(str(current_level),"Shard6",Game.shards_collected[6])
|
|
if Game.shards_collected[7] == true: save.set_value(str(current_level),"Shard7",Game.shards_collected[7])
|
|
if Game.shards_collected[8] == true: save.set_value(str(current_level),"Shard8",Game.shards_collected[8])
|
|
if Game.shards_collected[9] == true: save.set_value(str(current_level),"Shard9",Game.shards_collected[9])
|
|
save.save(str("user://file") + str(current_file) + str(".pr"))
|
|
|
|
func timeify(input):
|
|
var minutes = str(floor(input / 60))
|
|
var seconds = floor(fmod(input,60))
|
|
var milliseconds := floor(fmod(input, 1) * 100)
|
|
if input < 600:
|
|
return minutes + ":" + ("%02d" % seconds) + ":" + ("%02d" % milliseconds)
|
|
else:
|
|
return "9:59:99"
|
|
|
|
func _process(delta):
|
|
#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"):
|
|
print(fullscreen)
|
|
fullscreen = !fullscreen
|
|
if fullscreen:
|
|
OS.set_window_fullscreen(true)
|
|
else:
|
|
OS.set_window_fullscreen(false)
|