diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..634ecdc --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +bin/ +obj/ +/packages/ +.idea \ No newline at end of file diff --git a/Content/ExampleMod/CustomFurniture.atlas b/Content/ExampleMod/CustomFurniture.atlas new file mode 100644 index 0000000..34fae15 --- /dev/null +++ b/Content/ExampleMod/CustomFurniture.atlas @@ -0,0 +1,3 @@ +CustomTableUp +loc 0 0 32 32 +piv 16 16 \ No newline at end of file diff --git a/Content/ExampleMod/CustomFurniture.png b/Content/ExampleMod/CustomFurniture.png new file mode 100644 index 0000000..31dd5d4 Binary files /dev/null and b/Content/ExampleMod/CustomFurniture.png differ diff --git a/CustomTable.cs b/CustomTable.cs new file mode 100644 index 0000000..78a3032 --- /dev/null +++ b/CustomTable.cs @@ -0,0 +1,23 @@ +using System; +using Microsoft.Xna.Framework; +using TinyLife.Objects; +using TinyLife.World; + +namespace ExampleMod { + public class CustomTable : Furniture { + + public CustomTable(Guid id, FurnitureType type, int[] colors, Map map, Vector2 pos) : base(id, type, colors, map, pos) { + } + + public override void OnAdded() { + base.OnAdded(); + ExampleMod.Logger.Info("We were added at " + this.Position); + } + + public override void OnRemoved() { + base.OnRemoved(); + ExampleMod.Logger.Info("We were removed from " + this.Position); + } + + } +} \ No newline at end of file diff --git a/ExampleMod.cs b/ExampleMod.cs new file mode 100644 index 0000000..35caf27 --- /dev/null +++ b/ExampleMod.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using ExtremelySimpleLogger; +using Microsoft.Xna.Framework; +using MLEM.Data; +using MLEM.Data.Content; +using MLEM.Misc; +using TinyLife; +using TinyLife.Mods; +using TinyLife.Objects; +using TinyLife.Utilities; + +namespace ExampleMod { + public class ExampleMod : Mod { + + // the logger that we can use to log info about this mod + public static Logger Logger { get; private set; } + + // visual data about this mod + public override string Name => "Example Mod"; + public override string Description => "This is the example mod for Tiny Life!"; + + private DataTextureAtlas customFurniture; + + public override void AddGameContent(GameImpl game) { + // adding a custom furniture item + FurnitureType.Register(new FurnitureType.TypeSettings("CustomTable", new Point(1, 1), ObjectCategory.Table, 150, ColorScheme.SimpleWood) { + Construct = (i, t, c, m, p) => new CustomTable(i, t, c, m, p) + }); + } + + public override void Initialize(Logger logger, RawContentManager content) { + Logger = logger; + + // loads the custom furniture texture atlas + // the texture atlas combines the png texture and the .atlas information + // see https://mlem.ellpeck.de/api/MLEM.Data.DataTextureAtlas.html for more info + this.customFurniture = content.LoadTextureAtlas("CustomFurniture"); + } + + public override IEnumerable GetCustomFurnitureTextures() { + // tell the game about our custom furniture texture + yield return this.customFurniture; + } + + } +} \ No newline at end of file diff --git a/ExampleMod.csproj b/ExampleMod.csproj new file mode 100644 index 0000000..ef6328c --- /dev/null +++ b/ExampleMod.csproj @@ -0,0 +1,20 @@ + + + + netcoreapp3.0 + + + + + + + + + + + + PreserveNewest + + + +