Skip to content

Commit

Permalink
🦞 Preview damage
Browse files Browse the repository at this point in the history
  • Loading branch information
tomrijnbeek committed Oct 2, 2023
1 parent 4c4bc92 commit 0f84c62
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 5 deletions.
8 changes: 8 additions & 0 deletions entities/player/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ public sealed class Player : Character
[Signal]
public delegate void ScoreAdded(int amount);

[Signal]
public delegate void DamagePrepared(int amount);

protected override Vector2 Forward => Vector2.Down;

protected override void OnDeath()
Expand Down Expand Up @@ -55,4 +58,9 @@ public void AddScore(int amount)
{
EmitSignal(nameof(ScoreAdded), amount);
}

public void PreviewDamage(int amount)
{
EmitSignal(nameof(DamagePrepared), amount);
}
}
6 changes: 6 additions & 0 deletions scenes/main/Main.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public override void _Process(float delta)

private void onRoomExited()
{
GetNode<TopHud>("TopHud").DiscardDamagePreview();
if (gameOver) return;
if (dungeonTraverser.MoveForward())
{
Expand All @@ -63,6 +64,11 @@ private void onPlayerHealthChanged(int newHealth, int maxHealth, int healthChang
}
}

private void onDamagePrepared(int damage)
{
GetNode<TopHud>("TopHud").PreviewDamage(damage);
}

private void onPlayerDied()
{
doGameOver();
Expand Down
29 changes: 25 additions & 4 deletions scenes/main/TopHud.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,38 @@ public sealed class TopHud : Control
{
private const int maxWidth = 58;

private int health;
private int maxHealth;

public override void _Ready()
{
UpdateScore(0);
}

public void UpdateHealth(int newHealth, int maxHealth)
public void UpdateHealth(int newHealth, int newMaxHealth)
{
health = newHealth;
maxHealth = newMaxHealth;

updateBarWidth(GetNode<NinePatchRect>("HealthFill"), health);
updateBarWidth(GetNode<NinePatchRect>("HealthPreview"), health);
}

public void PreviewDamage(int amount)
{
updateBarWidth(GetNode<NinePatchRect>("HealthFill"), Math.Max(0, health - amount));
}

public void DiscardDamagePreview()
{
updateBarWidth(GetNode<NinePatchRect>("HealthFill"), health);
}

private void updateBarWidth(Control rect, int h)
{
var healthFill = GetNode<NinePatchRect>("HealthFill");
var percentage = (float) newHealth / maxHealth;
var percentage = (float) h / maxHealth;
var pixelWidth = (int) Math.Round(percentage * maxWidth);
healthFill.RectSize = new Vector2(pixelWidth, healthFill.RectSize.y);
rect.RectSize = new Vector2(pixelWidth, rect.RectSize.y);
}

public void UpdateScore(int newScore)
Expand Down
12 changes: 11 additions & 1 deletion scenes/main/TopHud.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,21 @@ custom_colors/font_color = Color( 0.654902, 0.560784, 0.541176, 1 )
custom_fonts/font = ExtResource( 4 )
text = "Score: 123"

[node name="HealthPreview" type="NinePatchRect" parent="."]
modulate = Color( 0.458824, 0.247059, 0.247059, 1 )
margin_left = 17.0
margin_top = 5.0
margin_right = 22.0
margin_bottom = 8.0
rect_pivot_offset = Vector2( -12, -7 )
texture = ExtResource( 1 )

[node name="HealthFill" type="NinePatchRect" parent="."]
margin_left = 17.0
margin_top = 5.0
margin_right = 17.0
margin_right = 18.0
margin_bottom = 8.0
rect_pivot_offset = Vector2( -12, -7 )
texture = ExtResource( 1 )

[node name="Backpack" type="TextureRect" parent="."]
Expand Down
1 change: 1 addition & 0 deletions scenes/main/main.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ script = ExtResource( 7 )
visible = false

[connection signal="RoomExited" from="Room" to="." method="onRoomExited"]
[connection signal="DamagePrepared" from="Player" to="." method="onDamagePrepared"]
[connection signal="HealthChanged" from="Player" to="." method="onPlayerHealthChanged"]
[connection signal="PlayerDied" from="Player" to="." method="onPlayerDied"]
[connection signal="ScoreAdded" from="Player" to="." method="onScoreAdded"]
2 changes: 2 additions & 0 deletions scenes/room/steps/EncounterStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ private void punch()

private void startPlayerTurn()
{
player.PreviewDamage(hazard.Type.AttackDamage());
player.ShowPunchButton();
waitingForInteraction = true;
cursor.Enable();
Expand All @@ -102,6 +103,7 @@ private void finishPlayerTurn()
}

player.AddScore(hazard.Type.Score());
player.PreviewDamage(0);
QueueFree();
complete();
}
Expand Down

0 comments on commit 0f84c62

Please sign in to comment.