예제 #1
0
        public override void DoCommand()
        {
            base.DoCommand();

            //Debug.Log("放置英雄在第: " + BLTimelineController.Instance().current_logic_frame + " 帧.");

            // 暂时用team id 代替player id,在房间内是不重复的
            BLPlayerData player_data = BLPlayerDataManager.Instance().GetPlayerData(player_id);

            // 检查是否为可放置的状态
            if (player_data.IsCanPutHero(hero_index))
            {
                BLPlayerHeroData hero_data    = player_data.GetHeroData(hero_index);
                BL.BLIntVector3  born_point   = BattleField.battle_field.born_point[player_id];
                int             unit_id       = BL.BLUnitManager.Instance().GetHeroUnitID(player_id, hero_index);
                string          unit_gds_name = hero_data.hero_gds_name;
                BL.BLIntVector3 born_pos      = BL.BLUnitManager.Instance().GetRandomPosition(born_point);

                BL.BLUnitManager.Instance().CreateHeroUnit(unit_id, unit_gds_name, born_pos, team_id);

                // 建筑上移除
                BLUnitBase unit = BLUnitManager.Instance().GetUnit(hero_data.build_site_id);
                Debug.Assert(unit.unit_type == UnitType.Building);
                BLUnitBuilding build_unit = unit as BLUnitBuilding;

                build_unit.RemoveUnit(unit_id);
            }
        }
예제 #2
0
        public void Init(int player_id_, int team_id_)
        {
            team_id   = team_id_;
            player_id = player_id_;

            for (int i = 0; i < hero_config.Length; ++i)
            {
                int hero_index             = i;
                BLPlayerHeroData hero_data = new BLPlayerHeroData();

                hero_data.hero_gds_name = hero_config[hero_index];
                hero_data.build_site_id = BLUnitManager.Instance().GetBaseID(player_id);

                BLUnitBase unit = BLUnitManager.Instance().GetUnit(hero_data.build_site_id);

                if (unit != null)
                {
                    Debug.Assert(unit.unit_type == UnitType.Building);
                    BLUnitBuilding build_unit = unit as BLUnitBuilding;

                    int unit_id = BLUnitManager.Instance().GetHeroUnitID(player_id, hero_index);
                    build_unit.AddReviveUnit(hero_data.hero_gds_name, unit_id, 0);
                }

                all_hero_data.Add(hero_data);
            }
        }
예제 #3
0
        public bool IsCanPutHero(int hero_index)
        {
            if (IsHeroAlreadyPut(hero_index))
            {
                // 已经放置了这个将军
                return(false);
            }

            BLPlayerHeroData hero_data = GetHeroData(hero_index);
            int unit_id = BLUnitManager.Instance().GetHeroUnitID(player_id, hero_index);

            // 检查资源

            // 检查复活状态
            BLUnitBase unit = BLUnitManager.Instance().GetUnit(hero_data.build_site_id);

            Debug.Assert(unit.unit_type == UnitType.Building);
            BLUnitBuilding build_unit = unit as BLUnitBuilding;

            return(build_unit.IsUnitCanRevive(unit_id));
        }
예제 #4
0
    public void UpdateUI()
    {
        BL.BLPlayerData player_data = BL.BLPlayerDataManager.Instance().GetPlayerData(BattleField.battle_field.my_player_id);

        for (int i = 0; i < BattleField.MAX_HERO_COUNT; ++i)
        {
            BL.BLPlayerHeroData hero_data = player_data.GetHeroData(i);

            all_hero_names[i].text = hero_data.hero_gds_name;

            if (player_data.IsHeroAlreadyPut(i))
            {
                all_hero_states[i].text = "已上场";
            }
            else
            {
                int unit_id = BL.BLUnitManager.Instance().GetHeroUnitID(player_data.player_id, i);

                BL.BLUnitBase unit_base = BL.BLUnitManager.Instance().GetUnit(hero_data.build_site_id);
                Debug.Assert(unit_base.unit_type == UnitType.Building);

                BL.BLUnitBuilding unit_building = unit_base as BL.BLUnitBuilding;

                if (unit_building.IsUnitCanRevive(unit_id))
                {
                    all_hero_states[i].text = "就绪";
                }
                else
                {
                    int time_remain = (int)(unit_building.GetUnitReviveRemainFrames(unit_id) * BL.BLTimelineController.SECOND_PER_FRAME);

                    all_hero_states[i].text = time_remain.ToString() + "秒";
                }
            }
        }
    }