forked from team-sg/hero-mark-2
re-written save and level data system :)
This commit is contained in:
parent
f3debf74cf
commit
45ddbd5c04
13 changed files with 177 additions and 93 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource path="res://scripts/scaling.gd" type="Script" id=1]
|
[ext_resource path="res://scripts/scaling.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=2]
|
[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=2]
|
||||||
[ext_resource path="res://maps/canopy.tscn" type="PackedScene" id=3]
|
[ext_resource path="res://maps/level_select.tscn" type="PackedScene" id=3]
|
||||||
[ext_resource path="res://scripts/crt.gdshader" type="Shader" id=4]
|
[ext_resource path="res://scripts/crt.gdshader" type="Shader" id=4]
|
||||||
[ext_resource path="res://scripts/theme.tres" type="Theme" id=5]
|
[ext_resource path="res://scripts/theme.tres" type="Theme" id=5]
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ size = Vector2( 256, 192 )
|
||||||
handle_input_locally = false
|
handle_input_locally = false
|
||||||
render_target_update_mode = 3
|
render_target_update_mode = 3
|
||||||
|
|
||||||
[node name="Map" parent="ViewportContainer/Viewport" instance=ExtResource( 3 )]
|
[node name="LevelSelect" parent="ViewportContainer/Viewport" instance=ExtResource( 3 )]
|
||||||
|
|
||||||
[node name="CheatLayer" type="CanvasLayer" parent="ViewportContainer/Viewport"]
|
[node name="CheatLayer" type="CanvasLayer" parent="ViewportContainer/Viewport"]
|
||||||
layer = 127
|
layer = 127
|
||||||
|
|
36
game.gd
36
game.gd
|
@ -44,6 +44,9 @@ var current_level = 0 #Current level being played
|
||||||
var current_file = 1 #Current save file
|
var current_file = 1 #Current save file
|
||||||
var shards_collected = [false,false,false,false,false,false,false,false,false,false]
|
var shards_collected = [false,false,false,false,false,false,false,false,false,false]
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
Save.load_file(current_file)
|
||||||
|
|
||||||
#Instances a node
|
#Instances a node
|
||||||
func instance_node(node:PackedScene,x:float,y:float,parent):
|
func instance_node(node:PackedScene,x:float,y:float,parent):
|
||||||
var Instance = node.instance()
|
var Instance = node.instance()
|
||||||
|
@ -80,25 +83,20 @@ func clear_collectibles():
|
||||||
|
|
||||||
#Save
|
#Save
|
||||||
func save():
|
func save():
|
||||||
var save = ConfigFile.new()
|
var save_id = LevelData.levels[current_level].save_id
|
||||||
save.load(str("user://file") + str(Game.current_file) + str(".pr"))
|
var save_data = Save.get_level_data(save_id)
|
||||||
if Game.shards == 5 && Game.golds == 50:
|
var is_100 = shards >= 5 && golds >= 50
|
||||||
save.set_value(str(current_level),"100% High Score",Game.score)
|
# set score and time depending on completion
|
||||||
save.set_value(str(current_level),"100% Time",Game.time)
|
if score > save_data["score_100" if is_100 else "score_any"]:
|
||||||
else:
|
Save.set_score(save_id, score, is_100)
|
||||||
save.set_value(str(current_level),"Any% High Score",Game.score)
|
if time < save_data["time_100" if is_100 else "time_any"]:
|
||||||
save.set_value(str(current_level),"Any% Time",Game.time)
|
Save.set_time(save_id, time, is_100)
|
||||||
if Game.shards_collected[0] == true: save.set_value(str(current_level),"Shard0",Game.shards_collected[0])
|
# set shards
|
||||||
if Game.shards_collected[1] == true: save.set_value(str(current_level),"Shard1",Game.shards_collected[1])
|
for i in 8:
|
||||||
if Game.shards_collected[2] == true: save.set_value(str(current_level),"Shard2",Game.shards_collected[2])
|
if shards_collected[i]:
|
||||||
if Game.shards_collected[3] == true: save.set_value(str(current_level),"Shard3",Game.shards_collected[3])
|
Save.set_shard_collected(save_id, i, true)
|
||||||
if Game.shards_collected[4] == true: save.set_value(str(current_level),"Shard4",Game.shards_collected[4])
|
# save file
|
||||||
if Game.shards_collected[5] == true: save.set_value(str(current_level),"Shard5",Game.shards_collected[5])
|
Save.save_file(current_file)
|
||||||
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"))
|
|
||||||
|
|
||||||
#Convert seconds into M:SS:MS
|
#Convert seconds into M:SS:MS
|
||||||
func timeify(input):
|
func timeify(input):
|
||||||
|
|
15
level_data.gd
Normal file
15
level_data.gd
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
tool
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
export var levels = [] setget set_levels
|
||||||
|
|
||||||
|
func set_levels(value):
|
||||||
|
levels = value
|
||||||
|
for i in levels.size():
|
||||||
|
if !levels[i]:
|
||||||
|
levels[i] = LevelEntry.new()
|
||||||
|
levels[i].resource_name = "New Entry"
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
if !Engine.editor_hint:
|
||||||
|
print(levels[0].title)
|
35
level_data.tscn
Normal file
35
level_data.tscn
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
[gd_scene load_steps=9 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://level_data.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://maps/map01.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://maps/canopy.tscn" type="PackedScene" id=3]
|
||||||
|
[ext_resource path="res://maps/cave.tscn" type="PackedScene" id=4]
|
||||||
|
[ext_resource path="res://scripts/level_entry.gd" type="Script" id=5]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=1]
|
||||||
|
resource_name = "Verdant Hills"
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
title = "Verdant Hills"
|
||||||
|
shard_titles = [ "Climb the Big Vine", "Next to the Lone Tree", "Slime's Treasure", "The Snake Pit", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ]
|
||||||
|
save_id = "hills"
|
||||||
|
scene = ExtResource( 2 )
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=2]
|
||||||
|
resource_name = "Shady Canopy"
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
title = "Shady Canopy"
|
||||||
|
shard_titles = [ "Archer and His Friend", "Thirsty Spiders", "Spider's Den", "Dancing Above the Pond", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ]
|
||||||
|
save_id = "canopy"
|
||||||
|
scene = ExtResource( 3 )
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=3]
|
||||||
|
resource_name = "Blue Ray Cavern"
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
title = "Blue Ray Cavern"
|
||||||
|
shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "Over-Head Obstacle Course", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ]
|
||||||
|
save_id = "cave"
|
||||||
|
scene = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="LevelData" type="Node"]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ]
|
|
@ -29,7 +29,6 @@ extents = Vector2( 4, 128 )
|
||||||
[node name="Map" type="Node2D" groups=["map"]]
|
[node name="Map" type="Node2D" groups=["map"]]
|
||||||
pause_mode = 1
|
pause_mode = 1
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
save_location = 2
|
|
||||||
music = ExtResource( 22 )
|
music = ExtResource( 22 )
|
||||||
|
|
||||||
[node name="Camera2D" parent="." instance=ExtResource( 1 )]
|
[node name="Camera2D" parent="." instance=ExtResource( 1 )]
|
||||||
|
|
|
@ -31,7 +31,6 @@ extents = Vector2( 4, 96 )
|
||||||
[node name="Map2" type="Node2D" groups=["map"]]
|
[node name="Map2" type="Node2D" groups=["map"]]
|
||||||
pause_mode = 1
|
pause_mode = 1
|
||||||
script = ExtResource( 11 )
|
script = ExtResource( 11 )
|
||||||
save_location = 2
|
|
||||||
music = ExtResource( 12 )
|
music = ExtResource( 12 )
|
||||||
|
|
||||||
[node name="Camera2D" parent="." instance=ExtResource( 6 )]
|
[node name="Camera2D" parent="." instance=ExtResource( 6 )]
|
||||||
|
|
|
@ -1,27 +1,25 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
##Onreadys
|
##Onreadys
|
||||||
onready var levels = preload("res://maps/leveldata/levels.tres")
|
#onready var levels = preload("res://maps/leveldata/levels.tres")
|
||||||
onready var title = $Title
|
onready var title = $Title
|
||||||
onready var shard_title = $ShardTitle
|
onready var shard_title = $ShardTitle
|
||||||
onready var shard_arrow = $ShardArrow
|
onready var shard_arrow = $ShardArrow
|
||||||
onready var high_score = $HighScore
|
|
||||||
onready var high_score_any = $HighScoreAny
|
onready var high_score_any = $HighScoreAny
|
||||||
onready var high_score_100 = $HighScore100
|
onready var high_score_100 = $HighScore100
|
||||||
onready var golds = $Golds
|
|
||||||
onready var levelarrow_up = $LevelArrowUp
|
onready var levelarrow_up = $LevelArrowUp
|
||||||
onready var levelarrow_down = $LevelArrowDown
|
onready var levelarrow_down = $LevelArrowDown
|
||||||
#Shards
|
#Shards
|
||||||
onready var shard0 = $ShardGraphics/Shard
|
onready var shards = [
|
||||||
onready var shard1 = $ShardGraphics/Shard2
|
$ShardGraphics/Shard,
|
||||||
onready var shard2 = $ShardGraphics/Shard3
|
$ShardGraphics/Shard2,
|
||||||
onready var shard3 = $ShardGraphics/Shard4
|
$ShardGraphics/Shard3,
|
||||||
onready var shard4 = $ShardGraphics/Shard5
|
$ShardGraphics/Shard4,
|
||||||
onready var shard5 = $ShardGraphics/Shard6
|
$ShardGraphics/Shard5,
|
||||||
onready var shard6 = $ShardGraphics/Shard7
|
$ShardGraphics/Shard6,
|
||||||
onready var shard7 = $ShardGraphics/Shard8
|
$ShardGraphics/Shard7,
|
||||||
onready var shard8 = $ShardGraphics/Shard9
|
$ShardGraphics/Shard8
|
||||||
onready var shard9 = $ShardGraphics/Shard10
|
]
|
||||||
##Runtime
|
##Runtime
|
||||||
var save = 0
|
var save = 0
|
||||||
var current_level = 0
|
var current_level = 0
|
||||||
|
@ -29,20 +27,24 @@ var current_shard = 0
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
change_current_level(1)
|
change_current_level(0)
|
||||||
|
Game.ac_music.stop()
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if Input.is_action_just_pressed("ui_up"): change_current_level(-1)
|
if Input.is_action_just_pressed("ui_up"): change_current_level(-1)
|
||||||
if Input.is_action_just_pressed("ui_down"): change_current_level(1)
|
if Input.is_action_just_pressed("ui_down"): change_current_level(1)
|
||||||
if Input.is_action_just_pressed("ui_left"): change_current_shard(-1)
|
if Input.is_action_just_pressed("ui_left"): change_current_shard(-1)
|
||||||
if Input.is_action_just_pressed("ui_right"): change_current_shard(1)
|
if Input.is_action_just_pressed("ui_right"): change_current_shard(1)
|
||||||
|
# get current level's data
|
||||||
|
var level = LevelData.levels[current_level]
|
||||||
#Draw level title
|
#Draw level title
|
||||||
title.text = levels.level[current_level].level_title
|
title.text = level.title
|
||||||
#Draw Shard Title
|
#Draw Shard Title
|
||||||
shard_title.text = levels.level[current_level].shard_title[current_shard]
|
shard_title.text = level.shard_titles[current_shard]
|
||||||
#Select level
|
#Select level
|
||||||
if Input.is_action_just_pressed("jump"):
|
if Input.is_action_just_pressed("jump"):
|
||||||
Game.change_map(levels.level[current_level].scene)
|
Game.current_level = current_level
|
||||||
|
Game.change_map(level.scene)
|
||||||
|
|
||||||
func change_current_shard(amount):
|
func change_current_shard(amount):
|
||||||
if current_shard + amount != -1 && current_shard + amount != 8: #Check if in range
|
if current_shard + amount != -1 && current_shard + amount != 8: #Check if in range
|
||||||
|
@ -51,13 +53,13 @@ func change_current_shard(amount):
|
||||||
|
|
||||||
func change_current_level(amount):
|
func change_current_level(amount):
|
||||||
#Change level
|
#Change level
|
||||||
if current_level + amount != 0 && current_level + amount != levels.level.size(): #Check if in range
|
if current_level + amount >= 0 && current_level + amount < LevelData.levels.size(): #Check if in range
|
||||||
current_level += amount
|
current_level += amount
|
||||||
#Show arrows or don't
|
#Show arrows or don't
|
||||||
if current_level == 1:
|
if current_level == 0:
|
||||||
levelarrow_up.visible = false
|
levelarrow_up.visible = false
|
||||||
levelarrow_down.visible = true
|
levelarrow_down.visible = true
|
||||||
elif current_level == levels.level.size() - 1:
|
elif current_level == LevelData.levels.size() - 1:
|
||||||
levelarrow_up.visible = true
|
levelarrow_up.visible = true
|
||||||
levelarrow_down.visible = false
|
levelarrow_down.visible = false
|
||||||
else:
|
else:
|
||||||
|
@ -67,23 +69,18 @@ func change_current_level(amount):
|
||||||
current_shard = 0
|
current_shard = 0
|
||||||
shard_arrow.position.x = 76
|
shard_arrow.position.x = 76
|
||||||
#Load new data
|
#Load new data
|
||||||
var save = ConfigFile.new()
|
var save_id = LevelData.levels[current_level].save_id
|
||||||
save.load(str("user://file") + str(Game.current_file) + str(".pr"))
|
var save_data = Save.get_level_data(save_id)
|
||||||
var str_level = str(current_level)
|
# set any% scores
|
||||||
#Draw score and golds
|
high_score_any.text = "Any%%\n%05d\n%s" % [
|
||||||
# high_score.text = str("%04d" % save.get_value(str_level,"High Score",0))
|
save_data.score_any,
|
||||||
# golds.text = str("%02d" % save.get_value(str_level,"Golds",0))
|
Game.timeify(save_data.time_any)
|
||||||
#Draw High Scores
|
]
|
||||||
high_score_any.text = "Any%\n" + str("%05d" % save.get_value(str_level,"Any% High Score",0)) + "\n" + str(Game.timeify(save.get_value(str_level,"Any% Time",0)))
|
# set 100% scores
|
||||||
high_score_100.text = "100%\n" + str("%05d" % save.get_value(str_level,"100% High Score",0)) + "\n" + str(Game.timeify(save.get_value(str_level,"100% Time",0)))
|
high_score_100.text = "100%%\n%05d\n%s" % [
|
||||||
#Draw shards collected
|
save_data.score_100,
|
||||||
shard0.visible = save.get_value(str_level,"Shard0",false)
|
Game.timeify(save_data.time_100)
|
||||||
shard1.visible = save.get_value(str_level,"Shard1",false)
|
]
|
||||||
shard2.visible = save.get_value(str_level,"Shard2",false)
|
# set collected shards
|
||||||
shard3.visible = save.get_value(str_level,"Shard3",false)
|
for i in 8:
|
||||||
shard4.visible = save.get_value(str_level,"Shard4",false)
|
shards[i].visible = save_data.shards[i]
|
||||||
shard5.visible = save.get_value(str_level,"Shard5",false)
|
|
||||||
shard6.visible = save.get_value(str_level,"Shard6",false)
|
|
||||||
shard7.visible = save.get_value(str_level,"Shard7",false)
|
|
||||||
shard8.visible = save.get_value(str_level,"Shard8",false)
|
|
||||||
shard9.visible = save.get_value(str_level,"Shard9",false)
|
|
||||||
|
|
|
@ -46,16 +46,6 @@ text = "test text
|
||||||
"
|
"
|
||||||
align = 1
|
align = 1
|
||||||
|
|
||||||
[node name="Golds" type="Label" parent="."]
|
|
||||||
visible = false
|
|
||||||
margin_left = 120.0
|
|
||||||
margin_top = 88.0
|
|
||||||
margin_right = 136.0
|
|
||||||
margin_bottom = 108.0
|
|
||||||
theme = ExtResource( 1 )
|
|
||||||
text = "00"
|
|
||||||
align = 1
|
|
||||||
|
|
||||||
[node name="HighScoreText" type="Label" parent="."]
|
[node name="HighScoreText" type="Label" parent="."]
|
||||||
margin_left = 56.0
|
margin_left = 56.0
|
||||||
margin_top = 62.0
|
margin_top = 62.0
|
||||||
|
@ -91,16 +81,6 @@ text = "100%
|
||||||
"
|
"
|
||||||
align = 1
|
align = 1
|
||||||
|
|
||||||
[node name="HighScore" type="Label" parent="."]
|
|
||||||
visible = false
|
|
||||||
margin_left = 56.0
|
|
||||||
margin_top = 76.0
|
|
||||||
margin_right = 200.0
|
|
||||||
margin_bottom = 108.0
|
|
||||||
theme = ExtResource( 1 )
|
|
||||||
text = "000000"
|
|
||||||
align = 1
|
|
||||||
|
|
||||||
[node name="ShardTitle" type="Label" parent="."]
|
[node name="ShardTitle" type="Label" parent="."]
|
||||||
margin_left = 43.0
|
margin_left = 43.0
|
||||||
margin_top = 130.0
|
margin_top = 130.0
|
||||||
|
@ -177,37 +157,37 @@ position = Vector2( 196, 118 )
|
||||||
texture = ExtResource( 8 )
|
texture = ExtResource( 8 )
|
||||||
|
|
||||||
[node name="Shard" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 71, 115 )
|
position = Vector2( 71, 115 )
|
||||||
|
|
||||||
[node name="Shard2" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard2" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 86, 115 )
|
position = Vector2( 86, 115 )
|
||||||
|
|
||||||
[node name="Shard3" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard3" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 101, 115 )
|
position = Vector2( 101, 115 )
|
||||||
|
|
||||||
[node name="Shard4" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard4" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 116, 115 )
|
position = Vector2( 116, 115 )
|
||||||
|
|
||||||
[node name="Shard5" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard5" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 131, 115 )
|
position = Vector2( 131, 115 )
|
||||||
|
|
||||||
[node name="Shard6" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard6" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 146, 115 )
|
position = Vector2( 146, 115 )
|
||||||
|
|
||||||
[node name="Shard7" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard7" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
|
visible = false
|
||||||
position = Vector2( 161, 115 )
|
position = Vector2( 161, 115 )
|
||||||
|
|
||||||
[node name="Shard8" parent="ShardGraphics" instance=ExtResource( 9 )]
|
[node name="Shard8" parent="ShardGraphics" instance=ExtResource( 9 )]
|
||||||
position = Vector2( 176, 115 )
|
|
||||||
|
|
||||||
[node name="Shard9" parent="ShardGraphics" instance=ExtResource( 9 )]
|
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2( 176, 115 )
|
position = Vector2( 176, 115 )
|
||||||
|
|
||||||
[node name="Shard10" parent="ShardGraphics" instance=ExtResource( 9 )]
|
|
||||||
visible = false
|
|
||||||
position = Vector2( 191, 115 )
|
|
||||||
|
|
||||||
[node name="Gold" parent="." instance=ExtResource( 5 )]
|
[node name="Gold" parent="." instance=ExtResource( 5 )]
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2( 111, 91 )
|
position = Vector2( 111, 91 )
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
export var target_time_any = 0
|
export var target_time_any = 0
|
||||||
export var target_time_100 = 0
|
export var target_time_100 = 0
|
||||||
export var save_location = 0
|
|
||||||
export (AudioStream) var music
|
export (AudioStream) var music
|
||||||
|
|
||||||
#Bonuses
|
#Bonuses
|
||||||
|
@ -11,7 +10,6 @@ var collectible_bonus = false
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
Game.play_sound(music,Game.ac_music)
|
Game.play_sound(music,Game.ac_music)
|
||||||
Game.current_level = save_location
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if Game.golds == 50 && Game.shards == 5:
|
if Game.golds == 50 && Game.shards == 5:
|
||||||
|
|
|
@ -29,7 +29,6 @@ pause_mode = 1
|
||||||
script = ExtResource( 18 )
|
script = ExtResource( 18 )
|
||||||
target_time_any = 70
|
target_time_any = 70
|
||||||
target_time_100 = 180
|
target_time_100 = 180
|
||||||
save_location = 1
|
|
||||||
music = ExtResource( 19 )
|
music = ExtResource( 19 )
|
||||||
|
|
||||||
[node name="Camera2D" parent="." instance=ExtResource( 8 )]
|
[node name="Camera2D" parent="." instance=ExtResource( 8 )]
|
||||||
|
|
|
@ -8,6 +8,16 @@
|
||||||
|
|
||||||
config_version=4
|
config_version=4
|
||||||
|
|
||||||
|
_global_script_classes=[ {
|
||||||
|
"base": "Resource",
|
||||||
|
"class": "LevelEntry",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://scripts/level_entry.gd"
|
||||||
|
} ]
|
||||||
|
_global_script_class_icons={
|
||||||
|
"LevelEntry": ""
|
||||||
|
}
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Hero Mark 2"
|
config/name="Hero Mark 2"
|
||||||
|
@ -18,6 +28,8 @@ config/icon="res://icon.png"
|
||||||
|
|
||||||
Game="*res://game.tscn"
|
Game="*res://game.tscn"
|
||||||
Debug="*res://objects/debug.tscn"
|
Debug="*res://objects/debug.tscn"
|
||||||
|
LevelData="*res://level_data.tscn"
|
||||||
|
Save="*res://scripts/save.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
|
17
scripts/level_entry.gd
Normal file
17
scripts/level_entry.gd
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
tool
|
||||||
|
class_name LevelEntry
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
export var title = "" setget set_title
|
||||||
|
export var shard_titles = [
|
||||||
|
"", "", "", "",
|
||||||
|
"5 Rainbow Stars",
|
||||||
|
"Collection Bonus",
|
||||||
|
"Time Bonus",
|
||||||
|
"Life Bonus"]
|
||||||
|
export var save_id = ""
|
||||||
|
export (PackedScene) var scene
|
||||||
|
|
||||||
|
func set_title(value):
|
||||||
|
title = value
|
||||||
|
resource_name = value
|
35
scripts/save.gd
Normal file
35
scripts/save.gd
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
var file
|
||||||
|
|
||||||
|
func load_file(file_number):
|
||||||
|
var new_file = ConfigFile.new()
|
||||||
|
new_file.load("user://file%d.pr" % file_number)
|
||||||
|
file = new_file
|
||||||
|
|
||||||
|
func get_level_data(save_id):
|
||||||
|
var shards = []
|
||||||
|
shards.resize(8)
|
||||||
|
for i in 8:
|
||||||
|
shards[i] = file.get_value(save_id, "shard_%d" % i, false)
|
||||||
|
return {
|
||||||
|
# any% score and time
|
||||||
|
score_any = file.get_value(save_id, "score_any", 0),
|
||||||
|
time_any = file.get_value(save_id, "time_any", 0),
|
||||||
|
# 100% score and time
|
||||||
|
score_100 = file.get_value(save_id, "score_100", 0),
|
||||||
|
time_100 = file.get_value(save_id, "time_100", 0),
|
||||||
|
shards = shards
|
||||||
|
}
|
||||||
|
|
||||||
|
func set_shard_collected(save_id, index, collected = true):
|
||||||
|
file.set_value(save_id, "shard_%d" % index, collected)
|
||||||
|
|
||||||
|
func set_score(save_id, score, is_100 = false):
|
||||||
|
file.set_value(save_id, "score_100" if is_100 else "score_any", int(score))
|
||||||
|
|
||||||
|
func set_time(save_id, time, is_100 = false):
|
||||||
|
file.set_value(save_id, "time_100" if is_100 else "time_any", float(time))
|
||||||
|
|
||||||
|
func save_file(file_number):
|
||||||
|
file.save("user://file%d.pr" % file_number)
|
Loading…
Add table
Add a link
Reference in a new issue