Skip to content

Commit ccada42

Browse files
committed
chore: clarify the code more
1 parent f11d33b commit ccada42

File tree

4 files changed

+52
-19
lines changed

4 files changed

+52
-19
lines changed

character.gd

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
class_name Character
12
extends Node
23

34
# `growth_data` gets passed to the experience progress bar. The first value of the array
@@ -19,7 +20,15 @@ var experience_required := get_required_experience(level + 1)
1920

2021

2122
func get_required_experience(for_level: int) -> int:
22-
return roundi(pow(for_level, 1.8) + for_level * 4)
23+
# If you followed along with the first video tutorial, this is the formula that was shown
24+
# for calculating the required experience for a level up.
25+
#
26+
# We used the same variable names as the red formula from Desmos for greater clarity.
27+
# See the graph at: https://www.desmos.com/calculator/0r0mrngda2
28+
var a := 4.0
29+
var b := 1.8
30+
var x := for_level
31+
return roundi(a * x + pow(x, b))
2332

2433

2534
func gain_experience(amount: int) -> void:
@@ -41,6 +50,8 @@ func level_up() -> void:
4150
level += 1
4251
experience_required = get_required_experience(level + 1)
4352

44-
var stats: Array[String] = ["max_hp", "strength", "magic"]
45-
var random_stat := stats[randi() % stats.size()]
46-
set(random_stat, get(random_stat) + randi() % 4)
53+
# We simulate the player picking stats to increase, by selecting a random
54+
# stat each time we level up and increasing it with a random number.
55+
var stats := ["max_hp", "strength", "magic"]
56+
var random_stat: String = stats.pick_random()
57+
set(random_stat, get(random_stat) + randi_range(1, 3))

game.gd

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
extends Node
22

3-
@onready var _character := %Character
3+
@onready var _character: Character = %Character
44
@onready var _label: Label = %Label
55
@onready var _experience_bar: TextureProgressBar = %ExperienceBar
66

77

88
func _ready() -> void:
9-
_label.update_text(_character.level, _character.experience, _character.experience_required)
9+
randomize()
10+
_label.update_text(_character)
1011
_experience_bar.initialize(_character.experience, _character.experience_required)
1112

1213

1314
func _unhandled_input(event: InputEvent) -> void:
1415
if not event.is_action_pressed("ui_accept"):
1516
return
1617

17-
# We just picked a random value to increase the experience by. Notice how the higher level
18-
# need you to run this function multiple times before leveling up.
18+
# We just picked a random value to increase the experience by. At higher levels you
19+
# need to gain this experience multiple times before leveling up.
1920
_character.gain_experience(34)
20-
_label.update_text(_character.level, _character.experience, _character.experience_required)
21+
_label.update_text(_character)

game.tscn

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ unique_name_in_owner = true
3333
layout_mode = 1
3434
anchors_preset = -1
3535
anchor_left = 0.5
36-
anchor_top = 0.525
36+
anchor_top = 0.8
3737
anchor_right = 0.5
38-
anchor_bottom = 0.525
38+
anchor_bottom = 0.8
3939
offset_left = -430.5
4040
offset_top = -34.5
4141
offset_right = 430.5
@@ -54,10 +54,16 @@ offset_right = 314.0
5454
offset_bottom = 249.0
5555
theme_override_fonts/font = ExtResource("4_j5wjh")
5656
theme_override_font_sizes/font_size = 32
57-
text = "Level: 4
58-
Experience: 86
59-
Next level: 23
57+
text = "Character
58+
Max HP: 8
59+
Strenght: 6
60+
Magic: 5
61+
62+
Level: 4
63+
Experience: 86
64+
Next level: 23
6065
"
66+
tab_stops = PackedFloat32Array(48)
6167
script = ExtResource("5_vef74")
6268

6369
[connection signal="experience_gained" from="Character" to="InterfaceControl/ExperienceBar" method="_on_character_experience_gained"]

label.gd

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
extends Label
22

3-
func update_text(level: int, experience: int, required_exp: int) -> void:
4-
text = """Level: %d
5-
Experience: %d
6-
Next level: %d
7-
""" % [level, experience, required_exp]
3+
func update_text(character: Character) -> void:
4+
text = "\n".join(
5+
[
6+
"Character",
7+
" Max HP: %d",
8+
" Strength: %d",
9+
" Magic: %d",
10+
"",
11+
" Level: %d",
12+
" Experience: %d",
13+
" Next level: %d",
14+
],
15+
) % [
16+
character.max_hp,
17+
character.strength,
18+
character.magic,
19+
character.level,
20+
character.experience,
21+
character.experience_required,
22+
]

0 commit comments

Comments
 (0)