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); } }
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() + "秒"; } } } }