private void ConstructAchievementBuilding(BattleAchievementBuildingParameter param, Age age) { AchievementBuildingConfigData configData = ConfigInterface.Instance.AchievementBuildingConfigHelper.GetAchievementBuildingData(param.AchievementBuildingType); string prefabName = string.Format("{0}{1}{2}", ClientStringConstants.BATTLE_SCENE_RESOURCE_PREFAB_PREFIX_NAME, ClientStringConstants.ACHIEVEMENT_BULIDING_PREFAB_PREFIX_NAME, configData.PrefabName); GameObject buildingPrefab = Resources.Load(prefabName) as GameObject; GameObject buildingObject = GameObject.Instantiate(buildingPrefab) as GameObject; buildingObject.transform.position = PositionConvertor.GetWorldPositionFromBuildingTileIndex (new TilePosition(param.PositionColumn, param.PositionRow)); buildingObject.transform.parent = this.m_ParentNode; AchievementBuildingPropertyBehavior property = buildingObject.GetComponent <AchievementBuildingPropertyBehavior>(); property.AchievementBuildingType = param.AchievementBuildingType; property.BuildingNO = param.AchievementBuildingNo; property.IsDropProps = param.IsDropProps; property.BuildingCategory = (BuildingCategory)configData.Category; property.BuildingPosition = new TilePosition(param.PositionColumn, param.PositionRow); property.BuildingObstacleList = new List <TilePosition>(); property.ActorObstacleList = new List <TilePosition>(); foreach (TilePoint buildingObstacle in configData.BuildingObstacleList) { property.BuildingObstacleList.Add(buildingObstacle.ConvertToTilePosition()); } foreach (TilePoint actorObstacle in configData.ActorObstacleList) { property.ActorObstacleList.Add(actorObstacle.ConvertToTilePosition()); } property.Buffs = BuildingBuffSystem.Instance.GetBuffs(property.BuildingCategory); AchievementBuildingHPBehavior hp = buildingObject.GetComponent <AchievementBuildingHPBehavior>(); hp.TotalHP = Mathf.Max(1, configData.MaxHP + property.BuffHPEffect); hp.SceneHelper = this.m_SceneHelper; hp.ArmorCategory = configData.ArmorCategory; BuildingSurfaceBehavior surface = buildingObject.GetComponent <BuildingSurfaceBehavior>(); if (surface != null) { surface.SetSurface(age, param.AchievementBuildingType); } this.m_SceneHelper.ConstructAchievementBuilding(buildingObject); }
public static FindRivalResponseParameter ConvertJSONToParameter(Hashtable map) { FindRivalResponseParameter result = new FindRivalResponseParameter(); result.Objects = new List <BattleRemovableObjectParameter>(); result.Buildings = new List <BattleBuildingParameter>(); result.AchievementBuildings = new List <BattleAchievementBuildingParameter>(); result.DefenseObjects = new List <BattleDefenseObjectParameter>(); result.RivalHonour = 10000; result.RivalID = -100; result.RivalLevel = -100; result.RivalName = "电脑"; result.TotalFood = 0; result.TotalGold = 0; result.TotalOil = 0; if (map.ContainsKey(EditorConfigInterface.Instance.MapBuildingKey)) { var buildings = (ArrayList)map[EditorConfigInterface.Instance.MapBuildingKey]; foreach (var b in buildings) { Hashtable building = (Hashtable)b; BattleBuildingParameter param = new BattleBuildingParameter(); param.BuildingNO = Convert.ToInt32(building[EditorConfigInterface.Instance.MapBuildingNoKey]); param.BuildingType = (BuildingType)(Convert.ToInt32(building[EditorConfigInterface.Instance.MapBuildingTypeKey])); param.IsUpgrading = false; param.Level = Convert.ToInt32(building[EditorConfigInterface.Instance.MapBuildingLevelKey]); param.PositionColumn = Convert.ToInt32(building[EditorConfigInterface.Instance.MapBuildingColumnKey]); param.PositionRow = Convert.ToInt32(building[EditorConfigInterface.Instance.MapBuildingRowKey]); BuildingConfigData configData = ConfigInterface.Instance.BuildingConfigHelper.GetBuildingData(param.BuildingType, param.Level); if (configData.StoreGoldCapacity > 0) { if (configData.CanProduceGold) { param.CurrentGold = configData.StoreGoldCapacity; } else { result.TotalGold += configData.StoreGoldCapacity; } } if (configData.StoreFoodCapacity > 0) { if (configData.CanProduceFood) { param.CurrentFood = configData.StoreFoodCapacity; } else { result.TotalFood += configData.StoreFoodCapacity; } } if (configData.StoreOilCapacity > 0) { if (configData.CanProduceOil) { param.CurrentOil = configData.StoreOilCapacity; } else { result.TotalOil += configData.StoreOilCapacity; } } result.Buildings.Add(param); } } if (map.ContainsKey(EditorConfigInterface.Instance.MapRemovableObjectKey)) { var objects = (ArrayList)map[EditorConfigInterface.Instance.MapRemovableObjectKey]; foreach (var o in objects) { Hashtable removableObject = (Hashtable)o; BattleRemovableObjectParameter param = new BattleRemovableObjectParameter(); param.ObjectType = (RemovableObjectType)(Convert.ToInt32(removableObject[EditorConfigInterface.Instance.MapRemovableObjectTypeKey])); param.PositionRow = Convert.ToInt32(removableObject[EditorConfigInterface.Instance.MapBuildingRowKey]); param.PositionColumn = Convert.ToInt32(removableObject[EditorConfigInterface.Instance.MapBuildingColumnKey]); result.Objects.Add(param); } } if (map.ContainsKey(EditorConfigInterface.Instance.MapAchievementBuildingKey)) { var achievementBuildings = (ArrayList)map[EditorConfigInterface.Instance.MapAchievementBuildingKey]; int buildingNo = 0; foreach (var a in achievementBuildings) { Hashtable achievementBuilding = (Hashtable)a; BattleAchievementBuildingParameter param = new BattleAchievementBuildingParameter(); param.AchievementBuildingNo = ++buildingNo; param.AchievementBuildingType = (AchievementBuildingType)(Convert.ToInt32(achievementBuilding[EditorConfigInterface.Instance.MapAchievementBuildingTypeKey])); param.IsDropProps = false; param.PositionRow = Convert.ToInt32(achievementBuilding[EditorConfigInterface.Instance.MapAchievementBuildingRowKey]); param.PositionColumn = Convert.ToInt32(achievementBuilding[EditorConfigInterface.Instance.MapAchievementBuildingColumnKey]); result.AchievementBuildings.Add(param); } } if (map.ContainsKey(EditorConfigInterface.Instance.MapDefenseObjectKey)) { var defenseObjects = (ArrayList)map[EditorConfigInterface.Instance.MapDefenseObjectKey]; long objectID = 0; foreach (var d in defenseObjects) { Hashtable defenseObject = (Hashtable)d; BattleDefenseObjectParameter param = new BattleDefenseObjectParameter(); param.DefenseObjectID = objectID++; param.PropsType = (PropsType)(Convert.ToInt32(defenseObject[EditorConfigInterface.Instance.MapDefenseObjectTypeKey])); param.PositionRow = Convert.ToInt32(defenseObject[EditorConfigInterface.Instance.MapDefenseObjectRowKey]); param.PositionColumn = Convert.ToInt32(defenseObject[EditorConfigInterface.Instance.MapDefenseObjectColumnKey]); result.DefenseObjects.Add(param); } } return(result); }