private static void CreateNewResource(PoolGameObjects.TypePoolPrefabs typePoolResource, AlienJob job, ReaderScene.DataObjectInfoID targetInfo, ModelNPC.GameDataAlien p_dataNPC) { PaletteMapController.SelCheckOptDel deleteOpt = PaletteMapController.SelCheckOptDel.None; PaletteMapController.SelCheckOptDel checkOpt = PaletteMapController.SelCheckOptDel.DelTerra; if (typePoolResource != PoolGameObjects.TypePoolPrefabs.PoolFloor && typePoolResource != PoolGameObjects.TypePoolPrefabs.PoolPerson) { checkOpt = PaletteMapController.SelCheckOptDel.DelPrefab; } ModelNPC.ObjectData spawnObject = Storage.GenWorld.GetCreatePrefab(job.ResourceResult, targetInfo.Field); bool isSpawned = Storage.Data.AddDataObjectInGrid(spawnObject, targetInfo.Field, "CheckJobAlien", p_modeDelete: deleteOpt, p_modeCheck: checkOpt, p_dataNPC: p_dataNPC); spawnObject.PortalId = p_dataNPC.PortalId; if (!isSpawned) { Debug.Log(Storage.EventsUI.ListLogAdd = "### JOB [" + job.Job.ToString() + "]: Not Spawn " + spawnObject.NameObject); } else if (job.Job == TypesJobs.Build) { ManagerPortals.AddConstruction(spawnObject, p_dataNPC); } }
public bool AddConstructInGridData(string nameField, DataTile itemTile, bool isClaerField) { PaletteMapController.SelCheckOptDel modeDelete = PaletteMapController.SelCheckOptDel.None; if (isClaerField) { modeDelete = PaletteMapController.SelCheckOptDel.DelFull; } return(AddConstructInGridData(nameField, itemTile, modeDelete)); }
public bool AddConstructInGridData(string nameField, DataTile itemTile, PaletteMapController.SelCheckOptDel p_TypeModeOptStartDelete = PaletteMapController.SelCheckOptDel.None, PaletteMapController.SelCheckOptDel p_TypeModeOptStartCheck = PaletteMapController.SelCheckOptDel.None) { TypePrefabs prefabName = TypePrefabs.PrefabField; string personTextureName = ""; if (itemTile == null) { Debug.Log("####### AddConstructInGridData itemTile == null"); return(false); } //ArgumentException: The requested value 'SpriteBossAlien(Clone)' was not found. TypesStructure structType = (TypesStructure)Enum.Parse(typeof(TypesStructure), itemTile.Tag);; if (structType == TypesStructure.Terra) { prefabName = TypePrefabs.PrefabField; } if (structType == TypesStructure.Person) { personTextureName = itemTile.Name.ClearClone(); prefabName = TypePrefabs.PrefabBoss; } if (structType == TypesStructure.Prefab) { //ArgumentException: The requested value 'SpriteBossAlien(Clone)' was not found. prefabName = (TypePrefabs)Enum.Parse(typeof(TypePrefabs), itemTile.Name); } Vector2 posStruct = Helper.GetPositByField(nameField); int x = (int)posStruct.x; int y = (int)posStruct.y; int _y = y * (-1); Vector3 pos = new Vector3(x, _y, 0) * Spacing; pos.z = -1; if (prefabName == TypePrefabs.PrefabUfo) { pos.z = -2; } string nameObject = Helper.CreateName(prefabName.ToString(), nameField, "-1");// prefabName.ToString() + "_" + nameFiled + "_" + i; ModelNPC.ObjectData objDataSave = BilderGameDataObjects.BildObjectData(prefabName); objDataSave.CreateID(nameObject); objDataSave.SetNameObject(nameObject, true); if (PoolGameObjects.IsUseTypePoolPrefabs) { objDataSave.ModelView = itemTile.Name; } else { if (structType == TypesStructure.Terra) { var objTerra = objDataSave as ModelNPC.TerraData; if (objTerra == null) { Debug.Log("####### AddConstructInGridData: structType is TypesStructure.Terra objDataSave Not is ModelNPC.TerraData !!!!"); return(false); } objTerra.ModelView = itemTile.Name; } if (structType == TypesStructure.TerraPrefab) { var objTerraPrefab = objDataSave as ModelNPC.WallData; if (objTerraPrefab == null) { Debug.Log("####### AddConstructInGridData: structType is TypesStructure.TerraPrefab objDataSave Not is ModelNPC.TerraData !!!!"); return(false); } objTerraPrefab.ModelView = itemTile.Name; } } if (structType == TypesStructure.Person) { var objPerson = objDataSave as ModelNPC.GameDataBoss; if (objPerson == null) { Debug.Log("####### AddConstructInGridData: structType is TypesStructure.Terra objDataSave Not is ModelNPC.TerraData !!!!"); return(false); } } bool res = Storage.Data.AddDataObjectInGrid(objDataSave, nameField, "CreateDataGamesObjectsWorld", p_TypeModeOptStartDelete, p_TypeModeOptStartCheck); objDataSave.SetPosition(pos); return(res); }
public bool AddDataObjectInGrid(ModelNPC.ObjectData objDataSave, string nameField, string callFunc, PaletteMapController.SelCheckOptDel p_modeDelete = PaletteMapController.SelCheckOptDel.None, PaletteMapController.SelCheckOptDel p_modeCheck = PaletteMapController.SelCheckOptDel.None, ModelNPC.ObjectData p_dataNPC = null) { bool isLog = false; if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: d: " + p_modeDelete + " c: " + p_modeCheck + " +++ " + objDataSave.NameObject; } ModelNPC.FieldData fieldData; if (!_GridDataG.FieldsD.ContainsKey(nameField)) { fieldData = AddNewFieldInGrid(nameField, callFunc); } else { fieldData = _GridDataG.FieldsD[nameField]; if (p_modeDelete != PaletteMapController.SelCheckOptDel.DelFull) { if (p_modeDelete != PaletteMapController.SelCheckOptDel.DelFull && p_modeCheck == PaletteMapController.SelCheckOptDel.DelFull) { return(false); } if (p_modeDelete != PaletteMapController.SelCheckOptDel.DelType && p_modeCheck == PaletteMapController.SelCheckOptDel.DelType) { int indTM = -1; if (p_dataNPC != null) { indTM = fieldData.Objects.FindIndex(p => p.TypePrefabName == objDataSave.TypePrefabName && p.NameObject != p_dataNPC.NameObject); } else { indTM = fieldData.Objects.FindIndex(p => p.TypePrefabName == objDataSave.TypePrefabName); } if (indTM != -1) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "Check Type"; } return(false); } } if (p_modeDelete != PaletteMapController.SelCheckOptDel.DelPrefab && p_modeCheck == PaletteMapController.SelCheckOptDel.DelPrefab) { //var indTM = fieldData.Objects.FindIndex(p => p.TagObject.IsTerra()); //var indTM = fieldData.Objects.FindIndex(p => !p.TypePrefabName.IsField()); //var indTM = fieldData.Objects.FindIndex(p => !p.IsFloor()); int indTM = -1; if (p_dataNPC != null) { indTM = fieldData.Objects.FindIndex(p => !p.IsFloor() && p.NameObject != p_dataNPC.NameObject); } else { indTM = fieldData.Objects.FindIndex(p => !p.IsFloor()); } if (indTM != -1) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "Check Prefab"; } return(false); } } if (p_modeDelete != PaletteMapController.SelCheckOptDel.DelTerra && p_modeCheck == PaletteMapController.SelCheckOptDel.DelTerra) { //var indTM = fieldData.Objects.FindIndex(p => !p.TagObject.IsTerra()); //var indTM = fieldData.Objects.FindIndex(p => !p.TypePrefabName.IsField()); int indTM = -1; if (p_dataNPC != null) { indTM = fieldData.Objects.FindIndex(p => p.IsFloor() && p.NameObject != p_dataNPC.NameObject); } else { indTM = fieldData.Objects.FindIndex(p => p.IsFloor()); } if (indTM != -1) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "Check Terra"; } return(false); } } if (p_modeDelete == PaletteMapController.SelCheckOptDel.DelType) { List <ModelNPC.ObjectData> ListRemove; if (p_dataNPC != null) { ListRemove = fieldData.Objects.Where(p => p.TypePrefabName == objDataSave.TypePrefabName && p.NameObject != p_dataNPC.NameObject).ToList(); } else { ListRemove = fieldData.Objects.Where(p => p.TypePrefabName == objDataSave.TypePrefabName).ToList(); } //var ListRemove = fieldData.Objects.Where(p => p.TypePrefabName == objDataSave.TypePrefabName).ToList(); for (int i = ListRemove.Count - 1; i >= 0; i--) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "CLEAR type"; } fieldData.Objects.Remove(ListRemove[i]); if (Storage.Instance.ReaderSceneIsValid) { temp_string = ListRemove[i].Id; Storage.ReaderWorld.RemoveObjectInfo(temp_string); } } } else if (p_modeDelete == PaletteMapController.SelCheckOptDel.DelPrefab) { //var ListRemove = fieldData.Objects.Where(p => !p.TypePrefabName.IsField()).ToList(); List <ModelNPC.ObjectData> ListRemove; if (p_dataNPC != null) { ListRemove = fieldData.Objects.Where(p => !p.IsFloor() && p.NameObject != p_dataNPC.NameObject).ToList(); } else { ListRemove = fieldData.Objects.Where(p => !p.IsFloor()).ToList(); } //var ListRemove = fieldData.Objects.Where(p => !p.IsFloor()).ToList(); for (int i = ListRemove.Count - 1; i >= 0; i--) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "CLEAR prefab"; } fieldData.Objects.Remove(ListRemove[i]); if (Storage.Instance.ReaderSceneIsValid) { temp_string = ListRemove[i].Id; Storage.ReaderWorld.RemoveObjectInfo(temp_string); } } } else if (p_modeDelete == PaletteMapController.SelCheckOptDel.DelTerra) { //var ListRemove = fieldData.Objects.Where(p => p.TypePrefabName.IsField()).ToList(); List <ModelNPC.ObjectData> ListRemove; if (p_dataNPC != null) { ListRemove = fieldData.Objects.Where(p => p.IsFloor() && p.NameObject != p_dataNPC.NameObject).ToList(); } else { ListRemove = fieldData.Objects.Where(p => p.IsFloor()).ToList(); } //var ListRemove = fieldData.Objects.Where(p => p.IsFloor()).ToList(); for (int i = ListRemove.Count - 1; i >= 0; i--) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "CLEAR terra"; } fieldData.Objects.Remove(ListRemove[i]); if (Storage.Instance.ReaderSceneIsValid) { temp_string = ListRemove[i].Id; Storage.ReaderWorld.RemoveObjectInfo(temp_string); } } } } } if (p_modeDelete == PaletteMapController.SelCheckOptDel.DelFull) { if (isLog) { Storage.EventsUI.ListLogAdd = "Add IN GRID: " + "CLEAR FULL "; } fieldData.Objects.Clear(); } if (isTestSlow) { var ind = fieldData.Objects.FindIndex(p => p.NameObject == objDataSave.NameObject); if (ind != -1) { Debug.Log("########## AddDataObjectInGrid [" + objDataSave.NameObject + "] DUBLICATE: in " + nameField + " " + callFunc); Storage.Log.GetHistory(objDataSave.NameObject); return(false); } } fieldData.Objects.Add(objDataSave); if (Storage.Instance.ReaderSceneIsValid) { Storage.ReaderWorld.UpdateField(objDataSave, fieldData.NameField); } if (Storage.Map.IsGridMap) { Storage.Map.CheckSector(nameField); } Storage.Log.SaveHistory(objDataSave.NameObject, "AddDataObjectInGrid", callFunc, nameField, "", null, objDataSave); return(true); }