/// <summary> /// 对星球增加建筑 /// </summary> /// <param name="_starID"></param> /// <param name="_buildingTime"></param> public void addBuildingToStar(uint dbid, int _starID, int _buildingType, int finishPercentage) { //LoggerHelper.Error("dbid:" + dbid); UnitStar _star = GetUnitStarById(_starID); if (_star.BelongTo != null && _star.BelongTo.ID != dbid) { LoggerHelper.Error("星球和建筑主人不对"); return; } //是否是升级建筑 int _index = _star.IsLevelUpBuilding(_buildingType); if (_index >= 0) { _star.RemoveBuilding(_index, _star.GetBuildingByIndex(_index)); } else {//新建建筑 _index = _star.GetAddBuildingIndex(); if (_index >= 0) { _star.AddBuildingLog(_buildingType); } } if (_index < 0) { return; } UnitBuilding _building = GetUnitBuildingFromPool(); Vector2 _pos = _star.GetAddBuildingPos(_index); if (_index >= 0) { _building.UnitId = _star.UnitId * 100 + _index; _building.BaseBuildingData = BuildingData.dataMap.Get(_buildingType); _building.PositionX = _pos.x; _building.PositionY = _pos.y; _building.UnitParent = BuildLayer; _building.InitPercentage = finishPercentage; _building.BelongToStar = _star; _building.AttackPlayerId = dbid; _building.InitUnit(); _building.SetGroup(GetGroupByPalyerId(dbid));//设置阵营信息 _star.AddBuilding(_index, _building); if (_starID == CurStarID)//根据当前准备建设的建筑来刷新战斗UI { UIManager.I.GetUILogic <StarInfoUIMgr>().ShowBuildings(true); } } m_starDataManager.StarOrEndStartFighting(_star); }
/// <summary> /// 攻击 建筑 /// </summary> /// <param name="_starID"></param> /// <param name="_buildingTime"></param> public void AttackBuilding(uint _attackplayerId, int _starID, int buildingPosition, int _Energy) { UnitStar _star = GetUnitStarById(_starID); UnitBuilding _building = _star.GetBuildingByIndex(buildingPosition); //LoggerHelper.Error("_building.BelongToStar.BelongTo.ID:" + _building.BelongToStar.BelongTo.ID + "_Energy:" + _Energy); if (_building != null) { //被攻击建筑所属 if ((_building.BelongToStar != null) && (_building.BelongToStar.BelongTo != null) && (_building.BelongToStar.BelongTo.ID == _attackplayerId)) { return; } _building.ReduceBuildingEnergy(_Energy); ShowFloatText(string.Concat(-_Energy), _building.PositionX, _building.PositionY, _building.BaseBuildingData.float_color); if (_building.CurEnergy <= 0) { _building.OnDead(); } else { _building.OnHit(); } } else { //LoggerHelper.Debug("没有该类建筑"); return; } //LoggerHelper.Error("_attackplayerId:" + _attackplayerId + "_building.CurEnergy:" + _building.CurEnergy); if (_building.CurEnergy <= 0) { //LoggerHelper.Error("_building.CurEnergy:" + _building.CurEnergy); _star.RemoveBuilding(buildingPosition, _building); //拆一个建筑后就可以占领星球 /*if (!AttackStar.Contains(_star)) * { * if (_star.IsInAttackStar()) * { * AttackStar.Add(_star); * } * }*/ IsAttackStar(_star); } _star.showAttackBuildingEffect(_building.UnitGO.transform.localPosition); }