public void HandleSpecialAttackDeployedEvent(object cookie)
        {
            SpecialAttack specialAttack = (SpecialAttack)cookie;
            SpecialAttackDeployedAction specialAttackDeployedAction = new SpecialAttackDeployedAction();

            specialAttackDeployedAction.Time            = this.GetActionTime();
            specialAttackDeployedAction.SpecialAttackId = specialAttack.VO.Uid;
            specialAttackDeployedAction.BoardX          = specialAttack.TargetBoardX;
            specialAttackDeployedAction.BoardZ          = specialAttack.TargetBoardZ;
            specialAttackDeployedAction.TeamType        = specialAttack.TeamType;
            this.battleRecord.Add(specialAttackDeployedAction);
        }
        private void SpecialAttackDeployedActionCallback(uint id, object cookie)
        {
            SpecialAttackDeployedAction specialAttackDeployedAction = cookie as SpecialAttackDeployedAction;
            IDataController             dataController      = Service.Get <IDataController>();
            SpecialAttackTypeVO         specialAttackTypeVO = dataController.Get <SpecialAttackTypeVO>(specialAttackDeployedAction.SpecialAttackId);
            Vector3 vector = new Vector3(Units.BoardToWorldX(specialAttackDeployedAction.BoardX), 0f, Units.BoardToWorldZ(specialAttackDeployedAction.BoardZ));

            Service.Get <SpecialAttackController>().DeploySpecialAttack(specialAttackTypeVO, specialAttackDeployedAction.TeamType, vector);
            IntPosition boardPosition = Units.WorldToBoardIntPosition(vector);

            this.battleController.OnSpecialAttackDeployed(specialAttackTypeVO.Uid, specialAttackDeployedAction.TeamType, boardPosition);
        }