private void HandleHeroDeployedEvent(object cookie)
        {
            SmartEntity    smartEntity = (SmartEntity)cookie;
            TroopComponent troopComp   = smartEntity.TroopComp;

            if (troopComp == null)
            {
                return;
            }
            TransformComponent transformComp = smartEntity.TransformComp;

            if (transformComp == null)
            {
                return;
            }
            HeroDeployedAction heroDeployedAction = new HeroDeployedAction();

            heroDeployedAction.Time     = this.GetActionTime();
            heroDeployedAction.TroopUid = troopComp.TroopType.Uid;
            heroDeployedAction.BoardX   = transformComp.CenterGridX();
            heroDeployedAction.BoardZ   = transformComp.CenterGridZ();
            TeamComponent teamComp = smartEntity.TeamComp;

            heroDeployedAction.TeamType = teamComp.TeamType;
            this.battleRecord.Add(heroDeployedAction);
        }
        private void HeroDeployedActionCallback(uint id, object cookie)
        {
            HeroDeployedAction heroDeployedAction = cookie as HeroDeployedAction;
            IDataController    dataController     = Service.Get <IDataController>();
            TroopTypeVO        troopTypeVO        = dataController.Get <TroopTypeVO>(heroDeployedAction.TroopUid);
            IntPosition        boardPosition      = new IntPosition(heroDeployedAction.BoardX, heroDeployedAction.BoardZ);
            SmartEntity        cookie2            = Service.Get <TroopController>().SpawnHero(troopTypeVO, heroDeployedAction.TeamType, boardPosition);

            Service.Get <EventManager>().SendEvent(EventId.AddDecalToTroop, cookie2);
            this.battleController.OnHeroDeployed(troopTypeVO.Uid, heroDeployedAction.TeamType, boardPosition);
        }