public void RefreshActions() { foreach (var item in TurnActions) { Entity.Destroy(item); } TurnActions.Clear(); foreach (var item in HeroEntities) { var turnAction = item.Value.CreateAction <TurnAction>(); if (MonsterEntities.ContainsKey(item.Key)) { turnAction.Target = MonsterEntities[item.Key]; } else { turnAction.Target = MonsterEntities.Values.ToArray().First(); } TurnActions.Add(turnAction); } foreach (var item in MonsterEntities) { var turnAction = item.Value.CreateAction <TurnAction>(); if (HeroEntities.ContainsKey(item.Key)) { turnAction.Target = HeroEntities[item.Key]; } else { turnAction.Target = HeroEntities.Values.ToArray().First(); } TurnActions.Add(turnAction); } }
public CombatEntity AddHeroEntity(int seat) { var entity = AddChild <CombatEntity>(); entity.IsHero = true; HeroEntities.Add(seat, entity); entity.SeatNumber = seat; return(entity); }
public void OnCombatEntityDead(CombatEntity combatEntity) { if (combatEntity.IsHero) { HeroEntities.Remove(combatEntity.SeatNumber); } else { MonsterEntities.Remove(combatEntity.SeatNumber); } }
public void FromJson(string content) { ListTmp tmp = new ListTmp(content); heroes = new Heroes(); stats = new HeroEntities(); weaponclasses = new KeyValueArray(); movetypes = new KeyValueArray(); weapons = new Weapons(); heroes.FromJson(tmp.Get(0)); stats.FromJson(tmp.Get(1)); weaponclasses.FromJson(tmp.Get(2)); movetypes.FromJson(tmp.Get(3)); weapons.FromJson(tmp.Get(4)); }
public async void StartCombat() { RefreshActions(); foreach (var item in TurnActions) { if (item.Creator.CheckDead() || item.Target.CheckDead()) { continue; } await item.ApplyTurn(); } await TimerComponent.Instance.WaitAsync(1000); if (HeroEntities.Count == 0 || MonsterEntities.Count == 0) { HeroEntities.Clear(); MonsterEntities.Clear(); await TimerComponent.Instance.WaitAsync(2000); this.Publish(new CombatEndEvent()); return; } StartCombat(); }