Skip to content

Commit 584ff14

Browse files
authored
Merge pull request #83 from Project-Funk-Engine/IDK_Im_Testing_Things
Enemy effects and Scalable relics
2 parents 5161e01 + b4f8023 commit 584ff14

File tree

6 files changed

+125
-29
lines changed

6 files changed

+125
-29
lines changed

Classes/Relics/RelicEffect.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,32 @@
55
public partial class RelicEffect : IBattleEvent
66
{
77
private BattleEffectTrigger Trigger { get; set; }
8-
public int BaseValue;
9-
private Action<BattleDirector, int> OnRelicEffect;
8+
private int _baseValue;
9+
public int Value;
10+
private Action<BattleDirector, RelicEffect, int> _onRelicEffect;
11+
private bool _effectPersists = false;
1012

1113
public RelicEffect(
1214
BattleEffectTrigger trigger,
1315
int val,
14-
Action<BattleDirector, int> onRelicEffect
16+
Action<BattleDirector, RelicEffect, int> onRelicEffect
1517
)
1618
{
17-
BaseValue = val;
19+
_baseValue = val;
20+
Value = _baseValue;
1821
Trigger = trigger;
19-
OnRelicEffect = onRelicEffect;
22+
_onRelicEffect = onRelicEffect;
23+
}
24+
25+
public void OnBattleEnd()
26+
{
27+
if (!_effectPersists)
28+
Value = _baseValue;
2029
}
2130

2231
public void OnTrigger(BattleDirector battleDirector)
2332
{
24-
OnRelicEffect(battleDirector, BaseValue);
33+
_onRelicEffect(battleDirector, this, Value);
2534
}
2635

2736
public BattleEffectTrigger GetTrigger()

Globals/Scribe.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public partial class Scribe : Node
9494
new RelicEffect(
9595
BattleEffectTrigger.OnPickup,
9696
10,
97-
(director, val) =>
97+
(director, self, val) =>
9898
{
9999
StageProducer.PlayerStats.MaxHealth += val;
100100
StageProducer.PlayerStats.CurrentHealth += val;
@@ -111,7 +111,7 @@ public partial class Scribe : Node
111111
new RelicEffect(
112112
BattleEffectTrigger.NotePlaced,
113113
2,
114-
(director, val) =>
114+
(director, self, val) =>
115115
{
116116
director.Player.Heal(val);
117117
}
@@ -126,10 +126,11 @@ public partial class Scribe : Node
126126
{
127127
new RelicEffect(
128128
BattleEffectTrigger.OnLoop,
129-
2,
130-
(director, val) =>
129+
1,
130+
(director, self, val) =>
131131
{
132132
director.NotePlacementBar.IncreaseBonusMult(val);
133+
self.Value++;
133134
}
134135
),
135136
}
@@ -143,9 +144,10 @@ public partial class Scribe : Node
143144
new RelicEffect(
144145
BattleEffectTrigger.OnLoop,
145146
20,
146-
(director, val) =>
147+
(director, self, val) =>
147148
{
148149
director.NotePlacementBar.IncreaseCharge(val);
150+
self.Value++;
149151
}
150152
),
151153
}

scenes/BattleDirector/scripts/BattleDirector.cs

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ public override void _Ready()
8585
.Instantiate<EnemyPuppet>();
8686
AddChild(Enemy);
8787
Enemy.Defeated += CheckBattleStatus;
88+
AddEnemyEffects();
8889

8990
CM.PrepChart(_curSong);
9091
CD.Prep();
@@ -200,20 +201,22 @@ private void CheckBattleStatus(PuppetTemplate puppet)
200201
{
201202
if (puppet == Player)
202203
{
203-
LostBattle();
204+
BattleLost();
204205
return;
205206
}
207+
else if (puppet == Enemy)
208+
BattleWon(); //will have to adjust this to account for when we have multiple enemies at once
209+
}
206210

207-
//will have to adjust this to account for when we have multiple enemies at once
208-
if (puppet == Enemy)
209-
{
210-
Audio.StreamPaused = true;
211-
GD.Print("Enemy is dead");
212-
ShowRewardSelection(3);
213-
}
211+
private void BattleWon()
212+
{
213+
Audio.StreamPaused = true;
214+
GD.Print("Enemy is dead");
215+
CleanUpRelics();
216+
ShowRewardSelection(3);
214217
}
215218

216-
private void LostBattle()
219+
private void BattleLost()
217220
{
218221
GD.Print("Player is Dead");
219222
Audio.StreamPaused = true;
@@ -241,21 +244,45 @@ private void ShowRewardSelection(int amount)
241244
private delegate void ChartLoopHandler(BattleDirector BD);
242245
private event ChartLoopHandler ChartLooped;
243246

247+
private void AddEvent(IBattleEvent bEvent)
248+
{
249+
switch (bEvent.GetTrigger()) //TODO: Look into a way to get eventhandler from string
250+
{
251+
case BattleEffectTrigger.NotePlaced:
252+
NotePlaced += bEvent.OnTrigger;
253+
break;
254+
case BattleEffectTrigger.OnLoop:
255+
ChartLooped += bEvent.OnTrigger;
256+
break;
257+
}
258+
}
259+
260+
private void AddEnemyEffects()
261+
{
262+
foreach (var effect in Enemy.GetBattleEvents())
263+
{
264+
AddEvent(effect);
265+
}
266+
}
267+
244268
private void EventizeRelics()
245269
{
246270
foreach (var relic in Player.Stats.CurRelics)
247271
{
248272
foreach (var effect in relic.Effects)
249273
{
250-
switch (effect.GetTrigger()) //TODO: Look into a way to get eventhandler from string
251-
{
252-
case BattleEffectTrigger.NotePlaced:
253-
NotePlaced += effect.OnTrigger;
254-
break;
255-
case BattleEffectTrigger.OnLoop:
256-
ChartLooped += effect.OnTrigger;
257-
break;
258-
}
274+
AddEvent(effect);
275+
}
276+
}
277+
}
278+
279+
private void CleanUpRelics()
280+
{
281+
foreach (var relic in Player.Stats.CurRelics)
282+
{
283+
foreach (var effect in relic.Effects)
284+
{
285+
effect.OnBattleEnd();
259286
}
260287
}
261288
}

scenes/Puppets/Enemies/BossBlood/P_BossBlood.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Linq;
3+
using FunkEngine;
24
using Godot;
35

46
public partial class P_BossBlood : EnemyPuppet
@@ -13,5 +15,18 @@ public override void _Ready()
1315
enemTween.SetEase(Tween.EaseType.In);
1416
enemTween.SetLoops();
1517
enemTween.Play();
18+
19+
_battleEvents = new EnemyEffect[]
20+
{
21+
new EnemyEffect(
22+
this,
23+
BattleEffectTrigger.OnLoop,
24+
5,
25+
(director, eff, val) =>
26+
{
27+
eff.Owner.Heal(val);
28+
}
29+
),
30+
};
1631
}
1732
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System;
2+
using FunkEngine;
3+
using Godot;
4+
5+
public partial class EnemyEffect : IBattleEvent
6+
{
7+
private BattleEffectTrigger Trigger { get; set; }
8+
public EnemyPuppet Owner;
9+
private int _baseValue;
10+
public int Value;
11+
private Action<BattleDirector, EnemyEffect, int> _onEnemyEffect;
12+
13+
public EnemyEffect(
14+
EnemyPuppet owner,
15+
BattleEffectTrigger trigger,
16+
int val,
17+
Action<BattleDirector, EnemyEffect, int> onEnemyEffect
18+
)
19+
{
20+
Owner = owner;
21+
_baseValue = val;
22+
Value = _baseValue;
23+
Trigger = trigger;
24+
_onEnemyEffect = onEnemyEffect;
25+
}
26+
27+
public void OnTrigger(BattleDirector battleDirector)
28+
{
29+
_onEnemyEffect(battleDirector, this, Value);
30+
}
31+
32+
public BattleEffectTrigger GetTrigger()
33+
{
34+
return Trigger;
35+
}
36+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
using System;
2+
using FunkEngine;
23
using Godot;
34

45
public partial class EnemyPuppet : PuppetTemplate
56
{
67
//TODO: What do enemies need?
8+
protected EnemyEffect[] _battleEvents = Array.Empty<EnemyEffect>();
9+
10+
public virtual EnemyEffect[] GetBattleEvents()
11+
{
12+
return _battleEvents;
13+
}
714
}

0 commit comments

Comments
 (0)