Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        public CombatEntity AddHeroEntity(int seat)
        {
            var entity = AddChild <CombatEntity>();

            entity.IsHero = true;
            HeroEntities.Add(seat, entity);
            entity.SeatNumber = seat;
            return(entity);
        }
Beispiel #3
0
 public void OnCombatEntityDead(CombatEntity combatEntity)
 {
     if (combatEntity.IsHero)
     {
         HeroEntities.Remove(combatEntity.SeatNumber);
     }
     else
     {
         MonsterEntities.Remove(combatEntity.SeatNumber);
     }
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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();
        }