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);
    }
Exemple #2
0
    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);
    }