BattleSprites now observes hero and monster positions

This commit is contained in:
henriquenakashima 2020-10-13 22:33:12 -04:00
parent 2e5a971581
commit 6aa13cdbb7
3 changed files with 30 additions and 15 deletions

View file

@ -516,27 +516,13 @@ public class BattleController : MonoBehaviour, IBattleEffectApplier, IBattleEffe
}
}
MoveTeamToNewPositions(effect.Team, newPositions);
this.state.MoveTeamToNewPositions(effect.Team, newPositions);
}
private static int TrueMod(int a, int b) {
return (a % b + b) % b;
}
private void MoveTeamToNewPositions(TeamChoice team, int[] newPositions) {
this.state.MoveTeamToNewPositions(team, newPositions);
if (team == TeamChoice.Heroes) {
for (int i = 0; i < this.state.Heroes.Length; i++) {
this.battleSprites.PositionHero(this.state.Heroes[i], i);
}
} else {
for (int i = 0; i < this.state.Monsters.Length; i++) {
this.battleSprites.PositionMonster(this.state.Monsters[i], i);
}
}
}
public void SetupDefault(DefaultEffect effect) {
DefaultHeroCard previousDefault = this.state.PlayArea.SetupDefault(effect);
if (previousDefault != null) {

View file

@ -11,12 +11,14 @@ public class BattleSprites: MonoBehaviour
public RuntimeAnimatorController mRuntimeAnimatorController;
public BattlePlayerControls mBattlePlayerControls;
private BattleState mState;
private Dictionary<BattleHero, GameObject> mHeroSprites;
private Dictionary<BattleHero, HeroInfoUI> mHeroUIs;
private Dictionary<BattleMonster, GameObject> mMonsterSprites;
private Dictionary<BattleMonster, HeroInfoUI> mMonsterUIs;
public void Init(BattleHero[] heroes, BattleMonster[] monsters, BattleState battleState) {
mState = battleState;
mHeroSprites = new Dictionary<BattleHero, GameObject>();
mHeroUIs = new Dictionary<BattleHero, HeroInfoUI>();
mMonsterSprites = new Dictionary<BattleMonster, GameObject>();
@ -56,6 +58,8 @@ public class BattleSprites: MonoBehaviour
mMonsterUIs[monster] = monsterUI;
}
mState.OnHeroPositionsSet += this.RepositionHeroes;
mState.OnMonsterPositionsSet += this.RepositionMonsters;
}
private void PositionSprite(TeamChoice team, GameObject sprite, int i) {
@ -75,4 +79,16 @@ public class BattleSprites: MonoBehaviour
public void PositionMonster(BattleMonster monster, int i) {
PositionSprite(TeamChoice.Monsters, mMonsterSprites[monster], i);
}
private void RepositionHeroes() {
for (int i = 0; i < mState.Heroes.Length; i++) {
PositionHero(mState.Heroes[i], i);
}
}
private void RepositionMonsters() {
for (int i = 0; i < mState.Monsters.Length; i++) {
PositionMonster(mState.Monsters[i], i);
}
}
}

View file

@ -5,6 +5,9 @@ using UnityEngine;
public class BattleState: MonsterViewpoint
{
public delegate void Procedure();
public event Procedure OnHeroPositionsSet;
public event Procedure OnMonsterPositionsSet;
private BattleHero[] heroes;
@ -88,6 +91,7 @@ public class BattleState: MonsterViewpoint
newHeroes[newPositions[i]] = hero;
}
this.heroes = newHeroes;
TriggerOnHeroPositionsSet();
} else {
BattleMonster[] newMonsters = new BattleMonster[n];
for (int i = 0; i < n; i++) {
@ -95,9 +99,18 @@ public class BattleState: MonsterViewpoint
newMonsters[newPositions[i]] = monster;
}
this.monsters = newMonsters;
TriggerOnMonsterPositionsSet();
}
}
private void TriggerOnHeroPositionsSet() {
if (OnHeroPositionsSet != null) OnHeroPositionsSet();
}
private void TriggerOnMonsterPositionsSet() {
if (OnMonsterPositionsSet != null) OnMonsterPositionsSet();
}
public BattleHero[] Heroes {get => this.heroes;}
public BattleMonster[] Monsters {get => this.monsters;}
public BattleClock Clock {get => this.clock;}