game_data Dictionary

master
Sascha 2025-01-05 11:19:35 +07:00
parent ed89b584ef
commit 1ed76cdf19
23 changed files with 62 additions and 64 deletions

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

@ -26,9 +26,9 @@ dock_5="Inspector,Node,History"
[EditorNode]
open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/player.tscn", "res://scenes/gun.tscn", "res://scenes/boss.tscn", "res://scenes/tree.tscn")
current_scene="res://scenes/gun.tscn"
current_scene="res://scenes/game.tscn"
center_split_offset=-317
selected_default_debugger_tab_idx=1
selected_default_debugger_tab_idx=0
selected_main_editor_idx=2
selected_bottom_panel_item=1
@ -40,7 +40,7 @@ position=Vector2i(2560, 28)
[ScriptEditor]
open_scripts=["res://scripts/audio_controller.gd", "res://scripts/bullet.gd", "res://scripts/game.gd", "res://scripts/gun.gd", "res://scripts/player.gd", "res://scripts/ui.gd"]
open_scripts=["res://scripts/audio_controller.gd", "res://scripts/bullet.gd", "res://scripts/game.gd", "res://scripts/gun.gd", "res://scripts/mob.gd", "res://scripts/player.gd", "res://scripts/ui.gd"]
selected_script="res://scripts/game.gd"
open_help=[]
script_split_offset=200

@ -1,5 +1,5 @@
ea4bc82a6ad023ab7ee23ee620429895
::res://::1735917118.0
::res://::1736071641.0
default_bus_layout.tres::AudioBusLayout::6564268947468103023::1695668179::0::1::::<><><><>::
export_presets.cfg::TextFile::-1::1735660301::0::1::::<><><><>::
::res://addons/::1695668179.0
@ -43,21 +43,22 @@ impact.tscn::PackedScene::706737085132625066::1695668179::0::1::::<><><><>::res:
muzzle_flash.gd::GDScript::334725949817774431::1695668179::0::1::::<>Node2D<><><>::
muzzle_flash.png::CompressedTexture2D::3592944556550980239::1695668179::1735656379::1::::<><><>28453999893b9aac4db20fa2c44b723d<>res://.godot/imported/muzzle_flash.png-752b19c1a1a60c24eac6f205d487f2ea.ctex::
muzzle_flash.tscn::PackedScene::6601472980654318439::1695668179::0::1::::<><><><>::res://pistol/muzzle_flash/muzzle_flash.gd<>uid://brgpjilf7s2ul::::res://pistol/muzzle_flash/muzzle_flash.png
::res://scenes/::1735917055.0
::res://scenes/::1735918743.0
boss.tscn::PackedScene::4261532313203997860::1735918715::0::1::::<><><><>::uid://cl70cv3aivpdo::::res://scripts/mob.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://dvgfmy6vtvjji::::res://characters/slime/slime_body.png<>uid://btbxea1f3vwot::::res://characters/slime/slime_body_hurt.png<>uid://c078jrp2yvc4s::::res://characters/slime/slime_face.png<>uid://biwlk8nb058xm::::res://sounds/Explosion6.ogg<>uid://cai2ijnbypqtr::::res://characters/slime/slime_hurt_eyes.png
bullet.tscn::PackedScene::8191971518315905232::1735913479::0::1::::<><><><>::uid://dftkbqwsfd68r::::res://pistol/projectile.png<>uid://cl4my4vxn5bbs::::res://scripts/bullet.gd
game.tscn::PackedScene::4744708941802329828::1735917055::0::1::::<><><><>::uid://dauqd5gexcbgf::::res://scenes/player.tscn<>uid://d4esu7gq460l7::::res://scripts/game.gd<>uid://dir26d82i0yer::::res://images/grass_template2.jpg<>uid://dj0m4h5r2c2xg::::res://sounds/Laser_Shoot17.ogg<>uid://bi0ibca1qokap::::res://scripts/audio_controller.gd<>uid://bavkjk7nthbj5::::res://sounds/760562__noisyredfox__hitsound1.ogg<>uid://b27pkgw38f0p6::::res://sounds/745184__mrechobot__death2.wav<>uid://sjcesmi0xjef::::res://sounds/697867__nfsmaster821__player_death_ui_show.wav<>uid://beebg84wvxii::::res://sounds/415804__sunsai__mushroom-background-music.wav<>uid://dvwfjjf35py4i::::res://scripts/ui.gd
gun.tscn::PackedScene::3590388595030148716::1735917012::0::1::::<><><><>::uid://gcqdkullomv7::::res://scripts/gun.gd<>uid://cswb5do8rrj7q::::res://pistol/pistol.png<>uid://doyitruir4guy::::res://scenes/bullet.tscn
mob.tscn::PackedScene::6846162453976111634::1735916749::0::1::::<><><><>::uid://cl70cv3aivpdo::::res://scripts/mob.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://dvgfmy6vtvjji::::res://characters/slime/slime_body.png<>uid://btbxea1f3vwot::::res://characters/slime/slime_body_hurt.png<>uid://c078jrp2yvc4s::::res://characters/slime/slime_face.png<>uid://biwlk8nb058xm::::res://sounds/Explosion6.ogg<>uid://cai2ijnbypqtr::::res://characters/slime/slime_hurt_eyes.png
player.tscn::PackedScene::7201528020608365013::1735916749::0::1::::<><><><>::uid://pbmyh1qru7p::::res://characters/happy_boo/happy_boo.tscn<>uid://drnl7altlij7f::::res://scripts/player.gd<>uid://brfhf78xw4dwm::::res://scenes/gun.tscn
tree.tscn::PackedScene::2476256724891748910::1735916749::0::1::::<><><><>::uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://caqfk2xng5v5u::::res://trees/pine_tree.png
::res://scripts/::1735917055.0
game.tscn::PackedScene::4744708941802329828::1735918714::0::1::::<><><><>::uid://dauqd5gexcbgf::::res://scenes/player.tscn<>uid://d4esu7gq460l7::::res://scripts/game.gd<>uid://dir26d82i0yer::::res://images/grass_template2.jpg<>uid://dj0m4h5r2c2xg::::res://sounds/Laser_Shoot17.ogg<>uid://bi0ibca1qokap::::res://scripts/audio_controller.gd<>uid://bavkjk7nthbj5::::res://sounds/760562__noisyredfox__hitsound1.ogg<>uid://b27pkgw38f0p6::::res://sounds/745184__mrechobot__death2.wav<>uid://sjcesmi0xjef::::res://sounds/697867__nfsmaster821__player_death_ui_show.wav<>uid://beebg84wvxii::::res://sounds/415804__sunsai__mushroom-background-music.wav<>uid://dvwfjjf35py4i::::res://scripts/ui.gd
gun.tscn::PackedScene::3590388595030148716::1735918743::0::1::::<><><><>::uid://gcqdkullomv7::::res://scripts/gun.gd<>uid://cswb5do8rrj7q::::res://pistol/pistol.png<>uid://doyitruir4guy::::res://scenes/bullet.tscn
mob.tscn::PackedScene::6846162453976111634::1735917583::0::1::::<><><><>::uid://cl70cv3aivpdo::::res://scripts/mob.gd<>uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://dvgfmy6vtvjji::::res://characters/slime/slime_body.png<>uid://btbxea1f3vwot::::res://characters/slime/slime_body_hurt.png<>uid://c078jrp2yvc4s::::res://characters/slime/slime_face.png<>uid://biwlk8nb058xm::::res://sounds/Explosion6.ogg<>uid://cai2ijnbypqtr::::res://characters/slime/slime_hurt_eyes.png
player.tscn::PackedScene::7201528020608365013::1735918714::0::1::::<><><><>::uid://pbmyh1qru7p::::res://characters/happy_boo/happy_boo.tscn<>uid://drnl7altlij7f::::res://scripts/player.gd<>uid://brfhf78xw4dwm::::res://scenes/gun.tscn
tree.tscn::PackedScene::2476256724891748910::1735918715::0::1::::<><><><>::uid://b7rhtttevhxtj::::res://characters/ground_shadow.png<>uid://caqfk2xng5v5u::::res://trees/pine_tree.png
::res://scripts/::1735918714.0
audio_controller.gd::GDScript::3000028504634855655::1735913494::0::1::::<>Node2D<><><>::
bullet.gd::GDScript::5605558621920821272::1735913494::0::1::::<>Area2D<><><>::
game.gd::GDScript::9204126340129375042::1735916934::0::1::::<>Node2D<><><>::
gun.gd::GDScript::426239203246935962::1735913494::0::1::::<>Area2D<><><>::
mob.gd::GDScript::5612501378197852760::1735915507::0::1::::<>CharacterBody2D<><><>::
player.gd::GDScript::8380034353925165817::1735917055::0::1::::<>CharacterBody2D<><><>::
ui.gd::GDScript::8678964216923348314::1735916747::0::1::::<>CanvasLayer<><><>::
game.gd::GDScript::9204126340129375042::1735918714::0::1::::<>Node2D<><><>::
gun.gd::GDScript::426239203246935962::1735918564::0::1::::<>Area2D<><><>::
mob.gd::GDScript::5612501378197852760::1735917543::0::1::::<>CharacterBody2D<><><>::
player.gd::GDScript::8380034353925165817::1735917241::0::1::::<>CharacterBody2D<><><>::
ui.gd::GDScript::8678964216923348314::1735918362::0::1::::<>CanvasLayer<><><>::
::res://smoke_explosion/::1735913494.0
circle_32.png::CompressedTexture2D::6271663262871881894::1695668179::1735656379::1::::<><><>c453c076bdbc64f9e2d4065be3748769<>res://.godot/imported/circle_32.png-ff53eadac5c62484a55afe7e47d5145f.ctex::
smoke_explosion.gd::GDScript::4359819258301131328::1735913494::0::1::::<>Node2D<><><>::

@ -1,11 +1,6 @@
res://scripts/player.gd
res://scenes/game.tscn
res://scripts/gun.gd
res://scenes/gun.tscn
res://scripts/game.gd
res://scenes/player.tscn
res://scenes/mob.tscn
res://scenes/tree.tscn
res://scripts/mob.gd
res://scenes/gun.tscn
res://scenes/boss.tscn
res://scripts/ui.gd
res://scenes/tree.tscn

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

@ -20,7 +20,7 @@ search_help=Rect2(3200, 360, 1280, 720)
[recent_files]
scenes=["res://scenes/boss.tscn", "res://scenes/game.tscn", "res://scenes/player.tscn", "res://scenes/gun.tscn", "res://player.tscn", "res://mob.tscn", "res://gun.tscn", "res://game.tscn", "res://tree.tscn", "res://characters/happy_boo/happy_boo.tscn"]
scripts=["res://scripts/game.gd", "res://scripts/ui.gd", "Color", "CanvasItem", "res://scripts/mob.gd", "res://scripts/gun.gd", "res://scripts/bullet.gd", "res://scripts/audio_controller.gd", "res://scripts/player.gd", "ColorRect"]
scripts=["res://scripts/mob.gd", "res://scripts/gun.gd", "res://scripts/game.gd", "res://scripts/ui.gd", "Color", "CanvasItem", "res://scripts/bullet.gd", "res://scripts/audio_controller.gd", "res://scripts/player.gd", "ColorRect"]
[script_setup]

@ -73,11 +73,11 @@ state={
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 18,
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 66,
"scroll_position": 43.0,
"row": 57,
"scroll_position": 37.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
@ -104,8 +104,8 @@ state={
"column": 0,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 23,
"scroll_position": 1.0,
"row": 32,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"
}
@ -129,10 +129,10 @@ state={
state={
"bookmarks": PackedInt32Array(),
"breakpoints": PackedInt32Array(),
"column": 0,
"column": 38,
"folded_lines": Array[int]([]),
"h_scroll_position": 0,
"row": 12,
"row": 7,
"scroll_position": 0.0,
"selection": false,
"syntax_highlighter": "GDScript"

@ -189,4 +189,4 @@ Game={
"hide_selection": false,
"select_mode": 0
}
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Gun/CollisionShape2D")])
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@18607/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@EditorMainScreen@98/MainScreen/@CanvasItemEditor@10371/@VSplitContainer@10195/@HSplitContainer@10197/@HSplitContainer@10199/@Control@10200/@SubViewportContainer@10201/@SubViewport@10202/Game")])

Binary file not shown.

@ -1,3 +1,3 @@
{
"godotTools.editorPath.godot4": "c:\\Program Files\\Godot\\Godot_v4.4-dev7_win64.exe"
"godotTools.editorPath.godot4": "/home/sascha/Godot/Godot_v4.4-dev7_linux.x86_64"
}

@ -3,7 +3,7 @@ extends Node2D
signal game_over
signal level_up()
signal boss
signal update_ui(xp: int, xp_next_level: int, level: int, boss_level: int)
signal update_ui(game_data: Dictionary)
const MOB = preload("res://scenes/mob.tscn")
const TREE = preload("res://scenes/tree.tscn")
@ -18,17 +18,19 @@ const BOSS = preload("res://scenes/boss.tscn")
@export var map_size := Vector2(8000, 8000)
@export var tree_density := 100000
var xp: int
var xp_next_level: int = 3
var level: int = 1
var boss_level: int = 3
var kill_count: int
var game_data := {
"xp": 0,
"xp_next_level": 3,
"level": 1,
"boss_level": 3,
"kill_count": 0
}
func _ready() -> void:
background_color.size = map_size
background_color.position = Vector2(-map_size.x / 2, -map_size.y / 2)
randomly_spawn_trees(int(map_size.x * map_size.y / tree_density))
update_ui.emit(xp, xp_next_level, level, boss_level, kill_count)
update_ui.emit(game_data)
func spawn_mob() -> void:
var new_mob = MOB.instantiate()
@ -52,20 +54,20 @@ func randomly_spawn_trees(tree_count: int) -> void:
add_child(new_tree)
func _on_mob_died(mob_xp: int) -> void:
kill_count += 1
xp += mob_xp
print("XP: " + str(xp) + "/" + str(xp_next_level))
if xp >= xp_next_level:
xp = xp - xp_next_level
xp_next_level *= 1.5
level +=1
game_data.kill_count += 1
game_data.xp += mob_xp
print("XP: " + str(game_data.xp) + "/" + str(game_data.xp_next_level))
if game_data.xp >= game_data.xp_next_level:
game_data.xp = game_data.xp - game_data.xp_next_level
game_data.xp_next_level *= 1.5
game_data.level +=1
level_up.emit()
print("Level up to " + str(level))
if level >= boss_level:
print("Level up to " + str(game_data.level))
if game_data.level >= game_data.boss_level:
boss.emit()
level = level - boss_level
boss_level *= 2
update_ui.emit(xp, xp_next_level, level, boss_level, kill_count)
game_data.level = game_data.level - game_data.boss_level
game_data.boss_level *= 2
update_ui.emit(game_data)
func spawn_boss() -> void:
print("Spawn Boss")
@ -76,5 +78,5 @@ func spawn_boss() -> void:
add_child(new_boss)
func _on_level_up() -> void:
spawn_mob_timer.wait_time = 1 - (level * 0.1)
level_up.emit(level)
spawn_mob_timer.wait_time = 1 - (game_data.level * 0.1)
level_up.emit(game_data.level)

@ -4,9 +4,9 @@ extends CanvasLayer
@onready var level_bar: ProgressBar = %LevelBar
@onready var kills: Label = %Kills
func _on_update_ui(xp: int, xp_next_level: int, level: int, boss_level: int, kill_count: int) -> void:
xp_bar.max_value = xp_next_level
xp_bar.value = xp
level_bar.max_value = boss_level
level_bar.value = level
kills.text = "Mobs killed: " + str(kill_count)
func _on_update_ui(game_data: Dictionary) -> void:
xp_bar.max_value = game_data.xp_next_level
xp_bar.value = game_data.xp
level_bar.max_value = game_data.boss_level
level_bar.value = game_data.level
kills.text = "Mobs killed: " + str(game_data.kill_count)