BattleSprites now observes hero and monster positions
This commit is contained in:
parent
2e5a971581
commit
6aa13cdbb7
3 changed files with 30 additions and 15 deletions
|
|
@ -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) {
|
private static int TrueMod(int a, int b) {
|
||||||
return (a % b + b) % 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) {
|
public void SetupDefault(DefaultEffect effect) {
|
||||||
DefaultHeroCard previousDefault = this.state.PlayArea.SetupDefault(effect);
|
DefaultHeroCard previousDefault = this.state.PlayArea.SetupDefault(effect);
|
||||||
if (previousDefault != null) {
|
if (previousDefault != null) {
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,14 @@ public class BattleSprites: MonoBehaviour
|
||||||
public RuntimeAnimatorController mRuntimeAnimatorController;
|
public RuntimeAnimatorController mRuntimeAnimatorController;
|
||||||
public BattlePlayerControls mBattlePlayerControls;
|
public BattlePlayerControls mBattlePlayerControls;
|
||||||
|
|
||||||
|
private BattleState mState;
|
||||||
private Dictionary<BattleHero, GameObject> mHeroSprites;
|
private Dictionary<BattleHero, GameObject> mHeroSprites;
|
||||||
private Dictionary<BattleHero, HeroInfoUI> mHeroUIs;
|
private Dictionary<BattleHero, HeroInfoUI> mHeroUIs;
|
||||||
private Dictionary<BattleMonster, GameObject> mMonsterSprites;
|
private Dictionary<BattleMonster, GameObject> mMonsterSprites;
|
||||||
private Dictionary<BattleMonster, HeroInfoUI> mMonsterUIs;
|
private Dictionary<BattleMonster, HeroInfoUI> mMonsterUIs;
|
||||||
|
|
||||||
public void Init(BattleHero[] heroes, BattleMonster[] monsters, BattleState battleState) {
|
public void Init(BattleHero[] heroes, BattleMonster[] monsters, BattleState battleState) {
|
||||||
|
mState = battleState;
|
||||||
mHeroSprites = new Dictionary<BattleHero, GameObject>();
|
mHeroSprites = new Dictionary<BattleHero, GameObject>();
|
||||||
mHeroUIs = new Dictionary<BattleHero, HeroInfoUI>();
|
mHeroUIs = new Dictionary<BattleHero, HeroInfoUI>();
|
||||||
mMonsterSprites = new Dictionary<BattleMonster, GameObject>();
|
mMonsterSprites = new Dictionary<BattleMonster, GameObject>();
|
||||||
|
|
@ -56,6 +58,8 @@ public class BattleSprites: MonoBehaviour
|
||||||
mMonsterUIs[monster] = monsterUI;
|
mMonsterUIs[monster] = monsterUI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mState.OnHeroPositionsSet += this.RepositionHeroes;
|
||||||
|
mState.OnMonsterPositionsSet += this.RepositionMonsters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PositionSprite(TeamChoice team, GameObject sprite, int i) {
|
private void PositionSprite(TeamChoice team, GameObject sprite, int i) {
|
||||||
|
|
@ -75,4 +79,16 @@ public class BattleSprites: MonoBehaviour
|
||||||
public void PositionMonster(BattleMonster monster, int i) {
|
public void PositionMonster(BattleMonster monster, int i) {
|
||||||
PositionSprite(TeamChoice.Monsters, mMonsterSprites[monster], 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@ using UnityEngine;
|
||||||
|
|
||||||
public class BattleState: MonsterViewpoint
|
public class BattleState: MonsterViewpoint
|
||||||
{
|
{
|
||||||
|
public delegate void Procedure();
|
||||||
|
public event Procedure OnHeroPositionsSet;
|
||||||
|
public event Procedure OnMonsterPositionsSet;
|
||||||
|
|
||||||
private BattleHero[] heroes;
|
private BattleHero[] heroes;
|
||||||
|
|
||||||
|
|
@ -88,6 +91,7 @@ public class BattleState: MonsterViewpoint
|
||||||
newHeroes[newPositions[i]] = hero;
|
newHeroes[newPositions[i]] = hero;
|
||||||
}
|
}
|
||||||
this.heroes = newHeroes;
|
this.heroes = newHeroes;
|
||||||
|
TriggerOnHeroPositionsSet();
|
||||||
} else {
|
} else {
|
||||||
BattleMonster[] newMonsters = new BattleMonster[n];
|
BattleMonster[] newMonsters = new BattleMonster[n];
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
|
|
@ -95,9 +99,18 @@ public class BattleState: MonsterViewpoint
|
||||||
newMonsters[newPositions[i]] = monster;
|
newMonsters[newPositions[i]] = monster;
|
||||||
}
|
}
|
||||||
this.monsters = newMonsters;
|
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 BattleHero[] Heroes {get => this.heroes;}
|
||||||
public BattleMonster[] Monsters {get => this.monsters;}
|
public BattleMonster[] Monsters {get => this.monsters;}
|
||||||
public BattleClock Clock {get => this.clock;}
|
public BattleClock Clock {get => this.clock;}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue