Beispiel #1
0
        public override void OnMoveComplete(WeenieError status)
        {
            //Console.WriteLine($"{Name}.OnMoveComplete({status})");

            base.OnMoveComplete(status);

            if (status != WeenieError.None)
            {
                return;
            }

            switch (GamePieceState)
            {
            // we are done, tell the match so the turn can finish
            case GamePieceState.WaitingForMoveToSquare:
                GamePieceState = GamePieceState.WaitingForMoveToSquareAnimComplete;
                break;

            // there is another piece on this square, attack it!
            case GamePieceState.WaitingForMoveToAttack:
                AttackTarget   = TargetPiece;
                GamePieceState = GamePieceState.Combat;
                break;
            }
        }
Beispiel #2
0
 public void OnDealtDamage(/*DamageEvent damageData*/)
 {
     // weenie piece is dead, time to move into the square completely
     if (TargetPiece.IsDead)
     {
         GamePieceState = GamePieceState.MoveToSquare;
     }
 }
Beispiel #3
0
        public override void Monster_Tick(double currentUnixTime)
        {
            NextMonsterTickTime = currentUnixTime + monsterTickInterval;
            IsMonster           = true;

            switch (GamePieceState)
            {
            case GamePieceState.MoveToSquare:
                GamePieceState = GamePieceState.WaitingForMoveToSquare;
                MoveWeenie(Position, 0.3f, true);
                break;

            // visual awareness range of piece is only 1, make sure we are close enough to attack
            case GamePieceState.MoveToAttack:
                GamePieceState = GamePieceState.WaitingForMoveToAttack;
                MoveWeenie(Position, PhysicsObj.GetRadius() + TargetPiece.PhysicsObj.GetRadius(), false);
                break;

            case GamePieceState.WaitingForMoveToSquare:
            case GamePieceState.WaitingForMoveToAttack:
                UpdatePosition();
                break;

            case GamePieceState.WaitingForMoveToSquareAnimComplete:

                /*if (PhysicsObj.IsAnimating)
                 * {
                 *  UpdatePosition();
                 *  break;
                 * }*/

                ChessMatch.PieceReady(Guid);
                GamePieceState = GamePieceState.None;
                break;

            case GamePieceState.Combat:

                if (CombatTable == null)
                {
                    GetCombatTable();
                }

                MeleeAttack();
                break;
            }
        }
Beispiel #4
0
 public void AttackEnqueue(Position dest, ObjectGuid victim)
 {
     GamePieceState = GamePieceState.MoveToAttack;
     Position       = dest;
     TargetPiece    = CurrentLandblock.GetObject(victim) as GamePiece;
 }
Beispiel #5
0
 public void MoveEnqueue(Position dest)
 {
     GamePieceState = GamePieceState.MoveToSquare;
     Position       = dest;
 }