public void ConstructRemovableObject(RemovableObjectType type, TilePosition position) { RemovableObjectConfigData configData = ConfigInterface.Instance.RemovableConfigHelper.GetRemovableObjectData(type); string prefabName = string.Format("{0}{1}{2}", ClientStringConstants.BATTLE_SCENE_RESOURCE_PREFAB_PREFIX_NAME, ClientStringConstants.REMOVABLE_OBJECT_PREFAB_PREFIX_NAME, configData.PrefabName); GameObject objectPrefab = Resources.Load(prefabName) as GameObject; GameObject newObject = GameObject.Instantiate(objectPrefab) as GameObject; EditorRemovableObjectBehavior objectBehavior = newObject.AddComponent <EditorRemovableObjectBehavior>(); objectBehavior.Position = position; objectBehavior.RemovableObjectType = type; newObject.transform.position = PositionConvertor.GetWorldPositionByBuildingTileIndex(position); newObject.transform.parent = this.m_SceneParent; this.PopulateMapData(position, configData.BuildingObstacleList, newObject); }
public void SaveMap() { var buildings = GameObject.FindObjectsOfType(typeof(EditorBuildingBehavior)); var objects = GameObject.FindObjectsOfType(typeof(EditorRemovableObjectBehavior)); var achievementBuildings = GameObject.FindObjectsOfType(typeof(EditorAchievementBuildingBehavior)); var defenseObjects = GameObject.FindObjectsOfType(typeof(EditorDefenseObjectBehavior)); BuildingNoGenerator buildingGenerator = new BuildingNoGenerator(); Hashtable map = new Hashtable(); ArrayList buildingList = new ArrayList(); foreach (var b in buildings) { EditorBuildingBehavior building = (EditorBuildingBehavior)b; Hashtable property = new Hashtable(); property.Add(EditorConfigInterface.Instance.MapBuildingTypeKey, (int)building.BuildingType); property.Add(EditorConfigInterface.Instance.MapBuildingNoKey, buildingGenerator.GetBuildingNO(building.BuildingType)); property.Add(EditorConfigInterface.Instance.MapBuildingLevelKey, building.Level); property.Add(EditorConfigInterface.Instance.MapBuildingRowKey, building.Position.Row); property.Add(EditorConfigInterface.Instance.MapBuildingColumnKey, building.Position.Column); buildingList.Add(property); } map.Add(EditorConfigInterface.Instance.MapBuildingKey, buildingList); ArrayList objectList = new ArrayList(); foreach (var o in objects) { EditorRemovableObjectBehavior removableObject = (EditorRemovableObjectBehavior)o; Hashtable property = new Hashtable(); property.Add(EditorConfigInterface.Instance.MapRemovableObjectTypeKey, (int)removableObject.RemovableObjectType); property.Add(EditorConfigInterface.Instance.MapRemovableObjectRowKey, removableObject.Position.Row); property.Add(EditorConfigInterface.Instance.MapRemovableObjectColumnKey, removableObject.Position.Column); objectList.Add(property); } map.Add(EditorConfigInterface.Instance.MapRemovableObjectKey, objectList); ArrayList achievementBuildingList = new ArrayList(); foreach (var a in achievementBuildings) { EditorAchievementBuildingBehavior achievementBuilding = (EditorAchievementBuildingBehavior)a; Hashtable property = new Hashtable(); property.Add(EditorConfigInterface.Instance.MapAchievementBuildingTypeKey, (int)achievementBuilding.AchievementBuildingType); property.Add(EditorConfigInterface.Instance.MapAchievementBuildingRowKey, achievementBuilding.Position.Row); property.Add(EditorConfigInterface.Instance.MapAchievementBuildingColumnKey, achievementBuilding.Position.Column); achievementBuildingList.Add(property); } map.Add(EditorConfigInterface.Instance.MapAchievementBuildingKey, achievementBuildingList); ArrayList defenseObjectList = new ArrayList(); foreach (var d in defenseObjects) { EditorDefenseObjectBehavior defenseObject = (EditorDefenseObjectBehavior)d; Hashtable property = new Hashtable(); property.Add(EditorConfigInterface.Instance.MapDefenseObjectTypeKey, (int)defenseObject.PropsType); property.Add(EditorConfigInterface.Instance.MapDefenseObjectRowKey, defenseObject.Position.Row); property.Add(EditorConfigInterface.Instance.MapDefenseObjectColumnKey, defenseObject.Position.Column); defenseObjectList.Add(property); } map.Add(EditorConfigInterface.Instance.MapDefenseObjectKey, defenseObjectList); FileStream fs = Application.platform == RuntimePlatform.OSXEditor ? new FileStream(this.m_MapName + "." + EditorConfigInterface.Instance.MapSuffix, FileMode.Create) : new FileStream(EditorConfigInterface.Instance.MapStorePath + "/" + this.m_MapName + "." + EditorConfigInterface.Instance.MapSuffix, FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.Write(JSONHelper.jsonEncode(map)); sw.Close(); Debug.Log("write finish!"); }