diff --git a/CustomTable.cs b/CustomTable.cs index 78a3032..6536c95 100644 --- a/CustomTable.cs +++ b/CustomTable.cs @@ -1,12 +1,22 @@ using System; +using System.Runtime.Serialization; using Microsoft.Xna.Framework; +using MonoGame.Extended; using TinyLife.Objects; using TinyLife.World; namespace ExampleMod { public class CustomTable : Furniture { + private static readonly Random Random = new(); + + // anything whose base classes have the DataContract attribute automatically gets saved and loaded to and from disk + // this means that you can add custom DataMember members to have them saved and loaded + [DataMember] + public float TestValue; + public CustomTable(Guid id, FurnitureType type, int[] colors, Map map, Vector2 pos) : base(id, type, colors, map, pos) { + this.TestValue = Random.NextSingle(); } public override void OnAdded() { @@ -19,5 +29,11 @@ namespace ExampleMod { ExampleMod.Logger.Info("We were removed from " + this.Position); } + // validate is called when this object is loaded from disk + // returning false causes the object to be marked as invalid and removed + public override bool Validate() { + return base.Validate() && this.TestValue <= 1; + } + } } \ No newline at end of file diff --git a/SitDownOnGrassAction.cs b/SitDownOnGrassAction.cs index 16c70f9..4377a70 100644 --- a/SitDownOnGrassAction.cs +++ b/SitDownOnGrassAction.cs @@ -9,6 +9,7 @@ using Action = TinyLife.Actions.Action; namespace ExampleMod { // we use a multi action because we want to walk to the location, and then execute the main sitting part + // see CustomTable for information on how to store custom action-specific information to disk as well public class SitDownOnGrassAction : MultiAction { public SitDownOnGrassAction(ActionType type, ActionInfo info) : base(type, info) {