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); }
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); }
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); }
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); }
protected void EncodeOffspringData() { OffspringData = new UrbObjectData[OffspringObjects.Length]; for (int o = 0; o < OffspringObjects.Length; o++) { OffspringData[o] = UrbEncoder.Read(OffspringObjects[o]); } }
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); }
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); }
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); }
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); }
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); }
public override bool SetComponentData(UrbComponentData Data) { PerceptionPrintString = UrbEncoder.GetString("PerceptionPrintString", Data); ContactPrintString = UrbEncoder.GetString("ContactPrintString", Data); return true; }