public void Init()
        {
            IReinforceState state = new NormalState(this);

            _currentReinforceCounter      = _pbsUnit.DynamicProperties.Contains(k.reinforceCounter) ? _pbsUnit.DynamicProperties.GetOrAdd <int>(k.reinforceCounter) : GetReinforceCounterMax();
            _nextReinforceCounterIncrease = _pbsUnit.DynamicProperties.Contains(k.nextReinforceIncrease) ? _pbsUnit.DynamicProperties.GetOrAdd <DateTime>(k.nextReinforceIncrease) : DateTime.Now;

            if (_pbsUnit.DynamicProperties.Contains(k.offsetWithinDay))
            {
                _offsetHoursWithinDay = _pbsUnit.DynamicProperties.GetOrAdd <int>(k.offsetWithinDay);
            }


            if (_pbsUnit.DynamicProperties.Contains(k.isReinforced))
            {
                var isReinforced = _pbsUnit.DynamicProperties.GetOrAdd <int>(k.isReinforced) == 1;

                if (isReinforced)
                {
                    Logger.Info("Reinforce active state was inited " + _pbsUnit);
                    state = new ActiveReinforceState(this, null);
                    ((ActiveReinforceState)state).Init(_pbsUnit);
                }
            }


            if (_pbsUnit.DynamicProperties.Contains(k.vulnerable))
            {
                var isVulnerable = _pbsUnit.DynamicProperties.GetOrAdd <int>(k.vulnerable) == 1;

                if (isVulnerable)
                {
                    //minden stimmel, akkor mehetunk egybol
                    Logger.Info("Vulnerable state was inited " + _pbsUnit);
                    state = new VulnerableState(this);
                    ((VulnerableState)state).Init(_pbsUnit);
                }
            }

            _fsm.ChangeState(state);
        }
Exemplo n.º 2
0
 private void Awake()
 {
     invincibleState = new InvincibleState(this);
     vulnerableState = new VulnerableState(this);
 }