Example #1
0
    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);
        }
    }
Example #2
0
 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));
 }
Example #3
0
    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);
    }
Example #4
0
    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);
    }