private void ConstructDefenseObject(BattleDefenseObjectParameter param) { PropsConfigData configData = ConfigInterface.Instance.PropsConfigHelper.GetPropsData(param.PropsType); PropsDefenseScopeConfigData defenseData = configData.FunctionConfigData as PropsDefenseScopeConfigData; PropsDefenseScopeLastingConfigData lastingData = configData.FunctionConfigData as PropsDefenseScopeLastingConfigData; DefenseObjectConfigWrapper configWrapper = new DefenseObjectConfigWrapper(configData.FunctionConfigData); GameObject defenseObjectPrefab = Resources.Load(ClientStringConstants.BATTLE_SCENE_RESOURCE_PREFAB_PREFIX_NAME + ClientStringConstants.DEFENSE_OBJECT_PREFAB_PREFIX_NAME + configWrapper.PrefabName) as GameObject; GameObject defenseObject = GameObject.Instantiate(defenseObjectPrefab) as GameObject; defenseObject.transform.position = PositionConvertor.GetWorldPositionFromBuildingTileIndex (new TilePosition(param.PositionColumn, param.PositionRow)); DefenseObjectAI ai = defenseObject.GetComponent <DefenseObjectAI>(); ai.enabled = false; DefenseObjectPropertyBehavior property = defenseObject.GetComponent <DefenseObjectPropertyBehavior>(); property.DefenseObjectID = param.DefenseObjectID; property.BuildingPosition = new TilePosition(param.PositionColumn, param.PositionRow); property.ActorObstacleList = new List <TilePosition>(); property.BuildingObstacleList = new List <TilePosition>(); if (defenseData != null) { BombBehavior bomb = defenseObject.GetComponent <BombBehavior>(); bomb.AttackCategory = defenseData.AttackCategory; bomb.Damage = defenseData.Damage; bomb.PushVelocity = defenseData.PushVelocity; bomb.PushTicks = defenseData.PushTicks; bomb.Scope = defenseData.Scope; bomb.TriggerScope = defenseData.TriggerScope; bomb.TriggerTick = defenseData.TriggerTicks; bomb.TargetType = (TargetType)defenseData.TargetType; bomb.ParentNode = this.m_BulletParent; } else if (lastingData != null) { LastingEffectBehavior lasting = defenseObject.GetComponent <LastingEffectBehavior>(); lasting.AttackCategory = lastingData.AttackCategory; lasting.Damage = lastingData.Damage; lasting.IntervalTicks = lastingData.IntervalTicks; lasting.TotalTimes = lastingData.TotalTimes; lasting.Scope = lastingData.Scope; lasting.TriggerScope = lastingData.TriggerScope; lasting.TriggerTick = lastingData.TriggerTicks; lasting.TargetType = (TargetType)lastingData.TargetType; //lasting.ParentNode = this.m_ParentNode; } defenseObject.transform.parent = this.m_ParentNode; this.m_SceneHelper.ConstructDefenseObject(defenseObject); }
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); }