Exemple #1
0
 public override bool SetComponentData(UrbComponentData Data)
 {
     FoodSubstances = UrbEncoder.GetEnumArray <UrbSubstanceTag>("FoodSubstances", Data);
     FoodScents     = UrbEncoder.GetEnumArray <UrbScentTag>("FoodScents", Data);
     Stomach        = new UrbComposition(UrbEncoder.GetSubstancesFromArray("StomachContents", Data));
     return(true);
 }
Exemple #2
0
 public override bool SetComponentData(UrbComponentData Data)
 {
     BirthTime       = UrbEncoder.GetField("BirthTime", Data);
     gameObject.name = UrbEncoder.GetString("Name", Data);
     TileprintString = UrbEncoder.GetString("TileprintString", Data);
     return(true);
 }
    public override UrbComponentData GetComponentData()
    {
        UrbComponentData Data = base.GetComponentData();

        Data.Fields = new UrbFieldData[]
        {
            new UrbFieldData {
                Name = "EnergyDebt", Value = EnergyDebt
            }
        };

        Data.Strings = new UrbStringData[]
        {
            new UrbStringData {
                Name = "BodyEnergyReserveStorage", Value = BodyEnergyReserveStorage.ToString()
            }
        };

        Data.FieldArrays = new UrbFieldArrayData[]
        {
            UrbEncoder.GetArrayFromSubstances("BodyGrowthRecipe", BodyGrowthRecipe),
        };

        return(Data);
    }
Exemple #4
0
    public override UrbComponentData GetComponentData()
    {
        UrbComponentData Data = base.GetComponentData();


        Data.Fields = new UrbFieldData[]
        {
            new UrbFieldData {
                Name = "Height", Value = Height
            }
        };

        UrbSubstance[] BodyContents = (BodyComposition == null)? BodyRecipe : BodyComposition.GetCompositionIngredients();

        Data.FieldArrays = new UrbFieldArrayData[]
        {
            UrbEncoder.GetArrayFromSubstances("BodyRecipe", BodyRecipe),
            UrbEncoder.GetArrayFromSubstances("BodyContents", BodyContents),
            UrbEncoder.GetArrayFromSubstances("CriticalBodyPartAmounts", CriticalBodyPartAmounts),
        };

        Data.StringArrays = new UrbStringArrayData[]
        {
            UrbEncoder.EnumsToArray("SkinRecipe", SkinRecipe),
        };

        return(Data);
    }
Exemple #5
0
 public override bool SetComponentData(UrbComponentData Data)
 {
     GoalTag         = UrbEncoder.GetEnum <UrbScentTag>("GoalTag", Data);
     PassableTerrain = UrbEncoder.GetEnum <UrbPathTerrain>("PassableTerrain", Data);
     Size            = (int)UrbEncoder.GetField("Size", Data);
     return(true);
 }
Exemple #6
0
 protected void EncodeOffspringData()
 {
     OffspringData = new UrbObjectData[OffspringObjects.Length];
     for (int o = 0; o < OffspringObjects.Length; o++)
     {
         OffspringData[o] = UrbEncoder.Read(OffspringObjects[o]);
     }
 }
Exemple #7
0
 public override bool SetComponentData(UrbComponentData Data)
 {
     Height                  = UrbEncoder.GetField("Height", Data);
     BodyRecipe              = UrbEncoder.GetSubstancesFromArray("BodyRecipe", Data);
     SkinRecipe              = UrbEncoder.GetEnumArray <UrbSubstanceTag>("SkinRecipe", Data);
     BodyComposition         = new UrbComposition(UrbEncoder.GetSubstancesFromArray("BodyContents", Data));
     CriticalBodyPartAmounts = UrbEncoder.GetSubstancesFromArray("CriticalBodyPartAmounts", Data);
     return(true);
 }
Exemple #8
0
    public override UrbComponentData GetComponentData()
    {
        UrbComponentData Data = new UrbComponentData
        {
            Type = this.GetType().ToString(),
        };

        Data.Fields = new UrbFieldData[]
        {
            new UrbFieldData {
                Name = "MateRequirement", Value = MateRequirement
            },
            new UrbFieldData {
                Name = "MateCrowding", Value = MateCrowding
            },
            new UrbFieldData {
                Name = "OffspringCount", Value = OffspringCount
            },
            new UrbFieldData {
                Name = "OffspringRequiredSpace", Value = OffspringRequiredSpace
            },
            new UrbFieldData {
                Name = "DispersalDistance", Value = DispersalDistance
            },
            new UrbFieldData {
                Name = "Gestation", Value = Gestation
            },
            new UrbFieldData {
                Name = "Gestating", Value = (Gestating)? 1 : 0
            },
        };

        Data.Strings = new UrbStringData[]
        {
            new UrbStringData {
                Name = "BreedType", Value = BreedType.ToString()
            },
            new UrbStringData {
                Name = "RequiredOffspringTerrain", Value = RequiredOffspringTerrain.ToString()
            }
        };

        Data.StringArrays = new UrbStringArrayData[]
        {
            UrbEncoder.EnumsToArray <UrbScentTag>("MateScents", MateScents),
            UrbEncoder.EnumsToArray <UrbScentTag>("RivalScents", RivalScents),
            UrbEncoder.ObjectsDataToArray("OffspringData", OffspringData)
        };

        Data.FieldArrays = new UrbFieldArrayData[]
        {
            UrbEncoder.GetArrayFromSubstances("GestationRecipe", GestationRecipe)
        };

        return(Data);
    }
 public override bool SetComponentData(UrbComponentData Data)
 {
     EnergyDebt = UrbEncoder.GetField("EnergyDebt", Data);
     BodyEnergyReserveStorage = UrbEncoder.GetEnum <UrbSubstanceTag>("BodyEnergyReserveStorage", Data);
     BodyGrowthRecipe         = UrbEncoder.GetSubstancesFromArray("BodyGrowthRecipe", Data);
     InitializeGrowthRecipes();
     if (IsEater)
     {
         InitializeReserveRecipes();
     }
     return(true);
 }
Exemple #10
0
    public UrbTileData GetTileData()
    {
        UrbTileData output = new UrbTileData();

        if (Links.Length > 0)
        {
            List <UrbTileLinkData> WorkingList = new List <UrbTileLinkData>();
            foreach (var link in Links)
            {
                if (link == null)
                {
                    continue;
                }

                UrbTileLinkData TempLink = new UrbTileLinkData();
                TempLink.MapID = UrbSystemIO.GetMapID(link.OwningMap);
                TempLink.X     = link.XAddress;
                TempLink.Y     = link.YAddress;
                WorkingList.Add(TempLink);
            }
            output.Links = WorkingList.ToArray();
        }
        else
        {
            output.Links = new UrbTileLinkData[0];
        }

        if (Contents.Count > 0)
        {
            output.Contents = new int[Contents.Count];
            output.Objects  = new UrbObjectData[Contents.Count];
            for (int c = 0; c < Contents.Count; c++)
            {
                output.Contents[c] = UrbSystemIO.GetAgentID(Contents[c]);
                output.Objects[c]  = UrbEncoder.Read(Contents[c].gameObject);
            }
        }
        else
        {
            output.Contents = new int[0];
        }

        output.Blocked = Blocked;

        output.Environment = Environment.GetEnvironmentData();

        return(output);
    }
Exemple #11
0
    public override UrbComponentData GetComponentData()
    {
        UrbComponentData Data = base.GetComponentData();


        UrbSubstance[] StomachContents = (Stomach == null)? new UrbSubstance[0] : Stomach.GetCompositionIngredients();

        Data.FieldArrays = new UrbFieldArrayData[]
        {
            UrbEncoder.GetArrayFromSubstances("StomachContents", StomachContents),
        };

        Data.StringArrays = new UrbStringArrayData[]
        {
            UrbEncoder.EnumsToArray("FoodSubstances", FoodSubstances),
            UrbEncoder.EnumsToArray("FoodScents", FoodScents)
        };

        return(Data);
    }
Exemple #12
0
    public override bool SetComponentData(UrbComponentData Data)
    {
        MateRequirement        = (int)UrbEncoder.GetField("MateRequirement", Data);
        MateCrowding           = (int)UrbEncoder.GetField("MateCrowding", Data);
        OffspringCount         = (int)UrbEncoder.GetField("OffspringCount", Data);
        OffspringRequiredSpace = UrbEncoder.GetField("OffspringRequiredSpace", Data);

        DispersalDistance = (int)UrbEncoder.GetField("DispersalDistance", Data);
        Gestation         = UrbEncoder.GetField("Gestation", Data);
        Gestating         = (UrbEncoder.GetField("Gestating", Data) > 0.0f);

        BreedType = UrbEncoder.GetEnum <UrbBreedTag>("BreedType", Data);
        RequiredOffspringTerrain = UrbEncoder.GetEnum <UrbPathTerrain>("RequiredOffspringTerrain", Data);
        OffspringData            = UrbEncoder.GetObjectDataArray("OffspringData", Data);

        MateScents  = UrbEncoder.GetEnumArray <UrbScentTag>("MateScents", Data);
        RivalScents = UrbEncoder.GetEnumArray <UrbScentTag>("RivalScents", Data);

        GestationRecipe = UrbEncoder.GetSubstancesFromArray("GestationRecipe", Data);

        return(true);
    }
    public static bool SpawnAgent(UrbAgent TestAgent, UrbTile Tile, out GameObject spawned, UrbObjectData Data = null)
    {
        Assert.IsTrue(Tile != null, "Tile != null");
        Assert.IsTrue(Tile.Occupants != null, "Tile.Occupants != null");

        s_SpawnAgent_prof.Begin();

        if (Tile.Occupants.Count >= UrbTile.MaximumOccupants)
        {
            spawned = null;
            //Debug.Log("Failed to spawn agent because Tile hit max occupancy!", TestAgent);
            s_SpawnAgent_prof.End();
            return(false);
        }

        if (TestAgent.WasDestroyed)
        {
            spawned = null;
            //Debug.Log("Failed to spawn agent because TestAgent was null!", TestAgent);
            s_SpawnAgent_prof.End();
            return(false);
        }

        UrbTileprint TestPrint = new UrbTileprint(TestAgent.TileprintString);

        if (TestPrint.TilePrintCollisionCheck(Tile))
        {
            spawned = null;
            //Debug.Log("Failed to spawn agent because of TestPrint check on Tile!");
            s_SpawnAgent_prof.End();
            return(false);
        }

        Vector3 SpawnLocation = Tile.Location;

        spawned = Object.Instantiate(TestAgent.gameObject, SpawnLocation, Quaternion.identity);

        if (Data != null)
        {
            UrbEncoder.Write(Data, spawned);
        }

        // Tweaked the Critter prefabs so they *should* spawn as inactive
        // if (spawned.activeSelf == false)
        // {
        //     Debug.Log("the spawned object was inactive!");
        // }

        UrbAgent Agent = spawned.GetComponent <UrbAgent>();

        //Doing this should mean not required to manually activate children
        spawned.SetActive(true);

        if (!Agent.HasAwakeBeenCalled)
        {
            Agent.gameObject.SetActive(true);
        }

        //This loop is kept around mostly out of concern that Agent SetActive
        //may fail to trigger children. Decent chance this is no longer required.
        //light testing shows removing may be acceptable.
        foreach (var urb in Agent.GetComponents <UrbBase>())
        {
            if (!urb.isActiveAndEnabled)
            {
                urb.gameObject.SetActive(true);
            }
        }

        Tile.OnAgentArrive(Agent);
        UrbAgent.TotalAgents++;

        s_SpawnAgent_prof.End();
        return(true);
    }
Exemple #14
0
 public override bool SetComponentData(UrbComponentData Data)
 {
     PerceptionPrintString = UrbEncoder.GetString("PerceptionPrintString", Data);
     ContactPrintString = UrbEncoder.GetString("ContactPrintString", Data);
     return true;
 }