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; } }
public void OnDealtDamage(/*DamageEvent damageData*/) { // weenie piece is dead, time to move into the square completely if (TargetPiece.IsDead) { GamePieceState = GamePieceState.MoveToSquare; } }
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; } }
public void AttackEnqueue(Position dest, ObjectGuid victim) { GamePieceState = GamePieceState.MoveToAttack; Position = dest; TargetPiece = CurrentLandblock.GetObject(victim) as GamePiece; }
public void MoveEnqueue(Position dest) { GamePieceState = GamePieceState.MoveToSquare; Position = dest; }