Exemplo n.º 1
0
 public override void Enter(IStateMachineMessage message = null)
 {
     timePassed = 0;
     pointTimer.Start(addPointsTimeIntervalInSeconds);
     damageTimer.Start(applyDamageIntervalInSeconds);
     addEnergyTimer.Start(GameValues.treeAddDemonEnergyPerSecondsInterval);
 }
Exemplo n.º 2
0
        public override void Enter(IStateMachineMessage message = null)
        {
            if (treeState.treeHealth < initialHealth)
            {
                treeState.treeHealth = initialHealth;
            }

            treeGrowthTimer.Start(60f / treeGrowthRatePerMinute);
            pointTimer.Start(GameValues.treeAddPointsIntervalInSeconds);
            addEnergyTimer.Start(GameValues.treeAddEnergyPerSecondsInterval);
        }
Exemplo n.º 3
0
        public override void Enter(IStateMachineMessage message = null)
        {
            //TODO: show death animation
            //TODO: after animation finish:
            var isPlayerInActionRadius = GetOwner <TreeTileMapObject>().EntityInActionRadius(NodeGetter.GetFirstNodeInGroup <Player>(GetTree(), GameConstants.PlayerGroup, true));

            pathfindingTileMap.tileMapManipulator.DeleteTree(GetGlobalPosition());
            if (isPlayerInActionRadius)
            {
                pathfindingTileMap.tileMapManipulator.CheckLoosingCondition();
            }
        }
        public override void Enter(IStateMachineMessage message = null) {
            if (!(message is MoveToPositionMessage)) {
                throw new Exception("State message is not of Type \"MoveToPositionMessage\"");
            }

            soundPlayer = soundEngineNode.PlaySfxLoop2D(deamonWalkSound, NodeGetter.GetFirstNodeInGroup<Demon>(GetTree(), GameConstants.DemonGroup, true));

            GetNode<Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.DemonTargetReached), this, nameof(TargetReached));
            GetNode<Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.TargetCannotBeReached), this, nameof(TargetCannotBeReached));
            GetNode<Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.InvalidateDemonPath), this, nameof(OnPathInvalidated));
            targetPosition = ((MoveToPositionMessage) message).GetTargetPosition();
            OnPathInvalidated();
        }
Exemplo n.º 5
0
        public override void Enter(IStateMachineMessage message = null)
        {
            if (!(message is MoveToPositionMessage))
            {
                throw new Exception("State message is not of Type \"MoveToPositionMessage\"");
            }

            soundPlayer = soundEngineNode.PlaySfxLoop(playerWalkSound, this);

            GetNode <Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.PlayerTargetReached), this, nameof(TargetReached));
            GetNode <Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.TargetCannotBeReached), this, nameof(PlayerTargetCannotBeReached));
            GetNode <Eventing>(Eventing.EventingNodePath).Connect(nameof(Eventing.InvalidatePlayerPath), this, nameof(OnPathInvalidated));
            targetPosition = ((MoveToPositionMessage)message).GetTargetPosition();
            OnPathInvalidated();
        }
        public void TransitionTo(NodePath targetStatePath, IStateMachineMessage message = null)
        {
            if (!HasNode(targetStatePath))
            {
                Logger.Error($"This StateMachine has no state with path {targetStatePath}!");
                return;
            }

            if (GetTree().GetNetworkPeer() != null && IsNetworkMaster())
            {
                Rpc(nameof(TransitionTo), targetStatePath, message);
            }

            var targetState = GetNode <State>(targetStatePath);

//            Logger.Debug($"Transitioning from state {currentState.GetName()} to {targetState.GetName()}");
            currentState?.Exit();
            currentState = targetState;
            targetState.Enter(message);
        }
Exemplo n.º 7
0
 public override void Enter(IStateMachineMessage message = null)
 {
     timer.Connect("timeout", this, nameof(OnTimerTimeout));
     timer.Start(new Random().Next(10, 30));
 }
Exemplo n.º 8
0
 public override void Enter(IStateMachineMessage message = null)
 {
     pointTimer.Start(addPointsTimeIntervalInSeconds);
     addEnergyTimer.Start(GameValues.treeAddEnergyPerSecondsInterval);
 }
Exemplo n.º 9
0
 public override void Enter(IStateMachineMessage message = null)
 {
 }
Exemplo n.º 10
0
 public abstract void Enter(IStateMachineMessage message = null);