public override void Enter(IStateMachineMessage message = null) { timePassed = 0; pointTimer.Start(addPointsTimeIntervalInSeconds); damageTimer.Start(applyDamageIntervalInSeconds); addEnergyTimer.Start(GameValues.treeAddDemonEnergyPerSecondsInterval); }
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); }
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(); }
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); }
public override void Enter(IStateMachineMessage message = null) { timer.Connect("timeout", this, nameof(OnTimerTimeout)); timer.Start(new Random().Next(10, 30)); }
public override void Enter(IStateMachineMessage message = null) { pointTimer.Start(addPointsTimeIntervalInSeconds); addEnergyTimer.Start(GameValues.treeAddEnergyPerSecondsInterval); }
public override void Enter(IStateMachineMessage message = null) { }
public abstract void Enter(IStateMachineMessage message = null);