diff --git a/global_const.gd b/global_const.gd index eae8037..e621eb3 100644 --- a/global_const.gd +++ b/global_const.gd @@ -79,10 +79,12 @@ var MOD_CHOICES = [ }, ] + func _ready() -> void: placeholder_tex = PlaceholderTexture2D.new() placeholder_tex.size = Vector2(64.0, 64.0) + func _draw_random_choice(fortune: float = 1.0) -> Dictionary: var total_weight: int = 0 for choice in MOD_CHOICES: @@ -95,6 +97,7 @@ func _draw_random_choice(fortune: float = 1.0) -> Dictionary: return u return MOD_CHOICES.back() + func draw_random_mod(fortune: float = 1.0) -> PlayerStatsModifier: var choice = _draw_random_choice(fortune) var mod: PlayerStatsModifier = PlayerStatsModifier.new() @@ -104,9 +107,10 @@ func draw_random_mod(fortune: float = 1.0) -> PlayerStatsModifier: mod.description = choice["description"] mod.internal_name = choice["internal_name"] mod.tex = choice["tex"] - mod.title = choice["name"] + mod.title = choice["name"] return mod - + + func calculate_weight(weight: float, fortune: float): - return weight**(1 / 1 + fortune) + return weight ** (1 / 1 + fortune) diff --git a/scenes/attacks/attack_sword.gd b/scenes/attacks/attack_sword.gd index 31bf7e9..9e3cfae 100644 --- a/scenes/attacks/attack_sword.gd +++ b/scenes/attacks/attack_sword.gd @@ -97,6 +97,6 @@ func _on_attack_area_body_entered(body: Node2D) -> void: var is_crit = randf() >= 1 - crit_chance if is_crit: damage_dealt *= player.player_stats.get_final("crit_multiplier", player.modifiers) - + body.take_damage(damage_dealt, is_crit) damaged_this_attack.append(body) diff --git a/scenes/enemies/enemy.gd b/scenes/enemies/enemy.gd index 5513fea..69776b6 100644 --- a/scenes/enemies/enemy.gd +++ b/scenes/enemies/enemy.gd @@ -17,6 +17,7 @@ var is_dead: bool = false var _xp_orb = preload("res://scenes/xp_orb.tscn") + func _ready() -> void: move_speed = default_move_speed max_health = default_max_health @@ -65,12 +66,14 @@ func die(): animation_player.play("die") animation_player.animation_finished.connect(_on_die_anim_finished) + func drop_xp_orb() -> void: var orb: XPOrb = _xp_orb.instantiate() orb.value = 5 orb.position = position get_parent().add_child(orb) + func cheer_anim(): if not animation_player.is_playing(): animation_player.play("jump") diff --git a/scenes/main.gd b/scenes/main.gd index 4ae29bc..8e7151a 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -4,14 +4,17 @@ extends Node2D var elapsed_time: float = 0.0 + func _ready(): GlobalConst.sig_debug_camera_zoom.connect(debug_zoom) Engine.time_scale = 1.0 + func _process(delta: float) -> void: elapsed_time += delta main_ui.player_ui.set_elapsed_time(elapsed_time) + func _unhandled_input(event: InputEvent) -> void: if event.is_action_pressed("ui_cancel"): main_ui.pause_ui.toggle_pause_ui() diff --git a/scenes/managers/ui/level_up_choice.gd b/scenes/managers/ui/level_up_choice.gd index e2bd2e4..4978097 100644 --- a/scenes/managers/ui/level_up_choice.gd +++ b/scenes/managers/ui/level_up_choice.gd @@ -10,6 +10,7 @@ signal lvlup_picked(mod: PlayerStatsModifier) @onready var upgrade_description: Label = $MarginContainer/VBoxContainer/UpgradeDescription @onready var upgrade_tex: TextureRect = $MarginContainer/VBoxContainer/CenterContainer/UpgradeTex + func _ready() -> void: match mod.rarity: GlobalConst.ModRarity.NORMAL: @@ -20,7 +21,7 @@ func _ready() -> void: upgrade_name.add_theme_color_override("font_color", Color.DARK_ORCHID) GlobalConst.ModRarity.LEGENDARY: upgrade_name.add_theme_color_override("font_color", Color.DARK_ORANGE) - + upgrade_name.text = mod.title upgrade_description.text = mod.description upgrade_tex.texture = mod.tex diff --git a/scenes/managers/ui/level_up_ui.gd b/scenes/managers/ui/level_up_ui.gd index f24dd83..13ac9d4 100644 --- a/scenes/managers/ui/level_up_ui.gd +++ b/scenes/managers/ui/level_up_ui.gd @@ -1,15 +1,19 @@ class_name LevelUpUI extends Control -@onready var choice_container: HBoxContainer = $VBoxContainer/PanelContainer/CenterContainer/ChoiceContainer +@onready +var choice_container: HBoxContainer = $VBoxContainer/PanelContainer/CenterContainer/ChoiceContainer + func clear(): for child in choice_container.get_children(): child.queue_free() + func add_choice(choice: LevelUpChoice) -> void: choice.lvlup_picked.connect(_on_levelup_picked) choice_container.add_child(choice) + func _on_levelup_picked(mod: PlayerStatsModifier) -> void: visible = false diff --git a/scenes/managers/ui/player_ui.gd b/scenes/managers/ui/player_ui.gd index 60c537e..8c7716f 100644 --- a/scenes/managers/ui/player_ui.gd +++ b/scenes/managers/ui/player_ui.gd @@ -4,15 +4,18 @@ extends Control @onready var hp_bar: ProgressBar = $CenterContainer/VBoxContainer/ProgressBar @onready var elapsed_label: Label = $CenterContainer/VBoxContainer/ElapsedLabel + func set_hp(value: float): hp_bar.value = value + func set_elapsed_time(value: float): elapsed_label.text = format_time(value) - + + func format_time(seconds: float) -> String: var total_ms = int(seconds * 1000.0) var s = (total_ms / 1000) % 60 - var m = (total_ms / 60000) + var m = total_ms / 60000 return "%02d:%02d" % [m, s] diff --git a/scenes/pickups/pickup_base.gd b/scenes/pickups/pickup_base.gd index 6bd1461..b96a5c7 100644 --- a/scenes/pickups/pickup_base.gd +++ b/scenes/pickups/pickup_base.gd @@ -7,13 +7,15 @@ extends Node2D var player: Player + func _ready() -> void: player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER) + func _physics_process(delta: float) -> void: if not player: return - + var to_player = player.global_position - global_position var dist = to_player.length() var attract_radius = player.player_stats.get_final("pickup_radius", player.modifiers) @@ -24,5 +26,6 @@ func _physics_process(delta: float) -> void: var speed = lerp(min_speed, max_speed, (attract_radius - dist) / attract_radius) global_position += dir * speed * delta + func pickup() -> void: push_error("%s did not implement pickup()" % self) diff --git a/scenes/pickups/pickup_magnet.gd b/scenes/pickups/pickup_magnet.gd index 163d176..79272ce 100644 --- a/scenes/pickups/pickup_magnet.gd +++ b/scenes/pickups/pickup_magnet.gd @@ -5,6 +5,7 @@ extends PickupBase @onready var collision_shape_2d: CollisionShape2D = $Area2D/CollisionShape2D + func pickup() -> void: if not player: push_error("pickup called on %s without player set" % self) diff --git a/scenes/player.gd b/scenes/player.gd index ff9b092..8cab691 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -43,7 +43,9 @@ func take_damage(value: float) -> void: dm.damage_taken = value dm.player_damage = false add_child(dm) - main_ui.player_ui.set_hp((player_stats.current_health / player_stats.get_final("max_health", modifiers)) * 100) + main_ui.player_ui.set_hp( + (player_stats.current_health / player_stats.get_final("max_health", modifiers)) * 100 + ) if player_stats.current_health <= 0: die() @@ -85,10 +87,12 @@ func get_taunted(): func toggle_god_mode(value: bool): god_mode = value + func add_xp(amount: float) -> void: player_stats.current_xp += amount _check_level_up() + func _check_level_up() -> void: var required_for_level = 25.0 if player_stats.current_xp >= required_for_level: @@ -96,6 +100,7 @@ func _check_level_up() -> void: player_stats.current_xp -= required_for_level _trigger_level_up() + func _trigger_level_up() -> void: var choice_count = 3 var choices: Array[LevelUpChoice] = [] @@ -110,6 +115,7 @@ func _trigger_level_up() -> void: Engine.time_scale = 0.0 main_ui.level_up_ui.visible = true + func _on_pickup_area_area_entered(area: Area2D) -> void: var body: Node2D = area.get_parent() if body.is_in_group(GlobalConst.GROUP_XP_ORB): diff --git a/scenes/player_stats.gd b/scenes/player_stats.gd index 600418e..46d8a02 100644 --- a/scenes/player_stats.gd +++ b/scenes/player_stats.gd @@ -11,6 +11,7 @@ var move_speed: float = 200.0 var attack_damage: float = 1.0 var pickup_radius: float = 50.0 + func get_final(stat: String, modifiers: Array[PlayerStatsModifier]) -> Variant: var base_value = get(stat) var add = 0.0 @@ -25,5 +26,6 @@ func get_final(stat: String, modifiers: Array[PlayerStatsModifier]) -> Variant: return mod.value return (base_value + add) * mul + func xp_required_for_level() -> float: - return 100 * (100*(1.5**(current_level-1))) + return 100 * (100 * (1.5 ** (current_level - 1))) diff --git a/scenes/xp_orb.gd b/scenes/xp_orb.gd index 265d23b..fd7affc 100644 --- a/scenes/xp_orb.gd +++ b/scenes/xp_orb.gd @@ -7,13 +7,15 @@ extends Node2D var player: Player + func _ready() -> void: player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER) + func _physics_process(delta: float) -> void: if not player: return - + var to_player = player.global_position - global_position var dist = to_player.length() var attract_radius = player.player_stats.get_final("pickup_radius", player.modifiers) @@ -23,5 +25,7 @@ func _physics_process(delta: float) -> void: return if dist < attract_radius: var dir = to_player.normalized() - var speed = lerp(adjusted_min_speed, adjusted_max_speed, (attract_radius - dist) / attract_radius) + var speed = lerp( + adjusted_min_speed, adjusted_max_speed, (attract_radius - dist) / attract_radius + ) global_position += dir * speed * delta