Either rewrite multiplayer or erase all objects before players join.
This commit is contained in:
parent
3af2da68fa
commit
9c070e91c5
|
@ -51,14 +51,35 @@ namespace StardustCore
|
||||||
|
|
||||||
SerializationManager.initializeDefaultSuportedTypes();
|
SerializationManager.initializeDefaultSuportedTypes();
|
||||||
TextureManager = new TextureManager();
|
TextureManager = new TextureManager();
|
||||||
|
|
||||||
|
|
||||||
|
StardewModdingAPI.Events.ControlEvents.KeyPressed += ControlEvents_KeyPressed;
|
||||||
|
|
||||||
|
|
||||||
|
StardewModdingAPI.Events.GameEvents.UpdateTick += GameEvents_UpdateTick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void GameEvents_UpdateTick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ControlEvents_KeyPressed(object sender, StardewModdingAPI.Events.EventArgsKeyPressed e)
|
||||||
|
{
|
||||||
|
if (e.KeyPressed == Keys.V)
|
||||||
|
{
|
||||||
|
CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")), 3, Vector2.Zero, 9);
|
||||||
|
tile1.description = "Hello";
|
||||||
|
tile1.Name = "test";
|
||||||
|
tile1.displayName = "test";
|
||||||
|
Game1.player.addItemToInventory(tile1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SaveEvents_AfterLoad(object sender, EventArgs e)
|
private void SaveEvents_AfterLoad(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList);
|
SerializationManager.restoreAllModObjects(SerializationManager.trackedObjectList);
|
||||||
List<KeyValuePair<Vector2, MultiTileComponent>> objs = new List<KeyValuePair<Vector2, MultiTileComponent>>();
|
List<KeyValuePair<Vector2, MultiTileComponent>> objs = new List<KeyValuePair<Vector2, MultiTileComponent>>();
|
||||||
/*
|
/*
|
||||||
|
@ -73,7 +94,7 @@ namespace StardustCore
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Game1.player.addItemToInventory(collection);
|
// Game1.player.addItemToInventory(collection);
|
||||||
CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),0, Vector2.Zero,9);
|
CoreObject tile1 = new CoreObject(new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png")),3, Vector2.Zero,9);
|
||||||
tile1.description = "Hello";
|
tile1.description = "Hello";
|
||||||
tile1.Name = "test";
|
tile1.Name = "test";
|
||||||
tile1.displayName = "test";
|
tile1.displayName = "test";
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.Graphics
|
||||||
|
{
|
||||||
|
public class NetAnimation : Netcode.NetField<Animations.Animation, NetAnimation>
|
||||||
|
{
|
||||||
|
|
||||||
|
public NetRectangle sourceRect;
|
||||||
|
public NetInt frameDuration;
|
||||||
|
public NetInt frameDurationUntilNextAnimation;
|
||||||
|
|
||||||
|
public NetAnimation()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public NetAnimation(Animations.Animation animation) : base(animation)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
sourceRect = new NetRectangle();
|
||||||
|
sourceRect.Read(reader, version);
|
||||||
|
Value.sourceRectangle = sourceRect.Value;
|
||||||
|
|
||||||
|
frameDuration = new NetInt();
|
||||||
|
frameDuration.Read(reader, version);
|
||||||
|
Value.frameDuration = frameDuration.Value;
|
||||||
|
|
||||||
|
frameDurationUntilNextAnimation = new NetInt();
|
||||||
|
frameDurationUntilNextAnimation.Read(reader, version);
|
||||||
|
Value.frameDuration = frameDuration.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
sourceRect = new NetRectangle(Value.sourceRectangle);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
frameDuration = new NetInt(Value.frameDuration);
|
||||||
|
frameDuration.Write(writer);
|
||||||
|
|
||||||
|
frameDurationUntilNextAnimation = new NetInt(Value.frameCountUntilNextAnimation);
|
||||||
|
frameDurationUntilNextAnimation.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Network;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.Graphics
|
||||||
|
{
|
||||||
|
public class NetAnimationManager : Netcode.NetField<Animations.AnimationManager,NetAnimationManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
public NetAnimationManager()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetAnimationManager(Animations.AnimationManager manager): base(manager)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetString currentAnimationName;
|
||||||
|
public NetInt currentAnimationListIndex;
|
||||||
|
public NetTexture2DExtended objectTexture;
|
||||||
|
public NetAnimation defaultDrawFrame;
|
||||||
|
public NetBool enabled;
|
||||||
|
public NetString animationDataString;
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
NetString currentAnimationName = new NetString();
|
||||||
|
currentAnimationName.Read(reader, version);
|
||||||
|
|
||||||
|
NetInt currentIndex = new NetInt();
|
||||||
|
currentIndex.Read(reader, version);
|
||||||
|
|
||||||
|
NetTexture2DExtended text = new NetTexture2DExtended();
|
||||||
|
text.Read(reader, version);
|
||||||
|
|
||||||
|
NetAnimation defaultAnimation = new NetAnimation();
|
||||||
|
defaultAnimation.Read(reader, version);
|
||||||
|
|
||||||
|
NetBool enabled = new NetBool();
|
||||||
|
enabled.Read(reader, version);
|
||||||
|
|
||||||
|
NetString data = new NetString();
|
||||||
|
data.Read(reader, version);
|
||||||
|
|
||||||
|
Value.setExtendedTexture(text.Value);
|
||||||
|
Value.defaultDrawFrame = defaultAnimation.Value;
|
||||||
|
Value.enabled = enabled.Value;
|
||||||
|
//Try and prevent unnecessary parsing.
|
||||||
|
if (Value.animations == null && !String.IsNullOrEmpty(Value.animationDataString))
|
||||||
|
{
|
||||||
|
Value.animations = Animations.AnimationManager.parseAnimationsFromXNB(data.Value);
|
||||||
|
}
|
||||||
|
if (!String.IsNullOrEmpty(data.Value))
|
||||||
|
{
|
||||||
|
Value.setAnimation(currentAnimationName.Value, currentIndex.Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value.currentAnimation = defaultDrawFrame.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
NetString curentAnimationName = new NetString(Value.currentAnimationName);
|
||||||
|
currentAnimationName.Write(writer);
|
||||||
|
|
||||||
|
|
||||||
|
NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex);
|
||||||
|
currentAnimationListIndex.Write(writer);
|
||||||
|
|
||||||
|
NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
||||||
|
texture.Write(writer);
|
||||||
|
|
||||||
|
NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame);
|
||||||
|
defaultDrawFrame.Write(writer);
|
||||||
|
|
||||||
|
NetBool enabled = new NetBool(Value.enabled);
|
||||||
|
enabled.Write(writer);
|
||||||
|
|
||||||
|
NetString animationData = new NetString(Value.animationDataString);
|
||||||
|
animationData.Write(writer);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,143 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Netcode;
|
||||||
|
using StardewValley;
|
||||||
|
using StardustCore.UIUtilities;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.Graphics
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
public class NetTexture2DExtended : Netcode.NetField<UIUtilities.Texture2DExtended, NetTexture2DExtended>
|
||||||
|
{
|
||||||
|
|
||||||
|
public string Name;
|
||||||
|
public Texture2D texture;
|
||||||
|
public string path;
|
||||||
|
|
||||||
|
|
||||||
|
public NetTexture2DExtended()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetTexture2DExtended(Texture2DExtended value) : base(value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReadData(BinaryReader reader,NetVersion version)
|
||||||
|
{
|
||||||
|
ReadDelta(reader, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteData(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
WriteDelta(writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
int width = reader.ReadInt32();
|
||||||
|
int height = reader.ReadInt32();
|
||||||
|
Byte[] colorsOne = new byte[width*height*4];
|
||||||
|
colorsOne = reader.ReadBytes(width*height*4);
|
||||||
|
texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height);
|
||||||
|
texture.SetData(colorsOne);
|
||||||
|
|
||||||
|
|
||||||
|
string Name = reader.ReadString();
|
||||||
|
string path = reader.ReadString();
|
||||||
|
string modID = reader.ReadString();
|
||||||
|
Value.Name = Name;
|
||||||
|
Value.path = path;
|
||||||
|
Value.ModID = modID;
|
||||||
|
Value.setTexture(ModCore.getTextureFromManager(Value.ModID, Value.Name).getTexture());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
|
||||||
|
int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4;
|
||||||
|
writer.Write(base.Value.getTexture().Width);
|
||||||
|
writer.Write(base.Value.getTexture().Height);
|
||||||
|
//writer.Write(size);
|
||||||
|
texture = Value.getTexture();
|
||||||
|
Byte[] colorsOne = new byte[size]; //The hard to read,1D array
|
||||||
|
texture.GetData(colorsOne);
|
||||||
|
writer.Write(colorsOne);
|
||||||
|
|
||||||
|
NetString name = new NetString(Value.Name);
|
||||||
|
name.Write(writer);
|
||||||
|
|
||||||
|
NetString path = new NetString(Value.path);
|
||||||
|
path.Write(writer);
|
||||||
|
|
||||||
|
NetString id = new NetString(Value.ModID);
|
||||||
|
id.Write(writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public class NetTexture2DExtended : Netcode.NetField<UIUtilities.Texture2DExtended, NetTexture2DExtended>
|
||||||
|
{
|
||||||
|
|
||||||
|
public string Name;
|
||||||
|
public Texture2D texture;
|
||||||
|
public string path;
|
||||||
|
public int width;
|
||||||
|
public int height;
|
||||||
|
|
||||||
|
|
||||||
|
public NetTexture2DExtended()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetTexture2DExtended(Texture2DExtended value) : base(value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
int width = reader.ReadInt32();
|
||||||
|
int height = reader.ReadInt32();
|
||||||
|
Byte[] colorsOne = new byte[width * height * 4];
|
||||||
|
colorsOne = reader.ReadBytes(width * height * 4);
|
||||||
|
texture = new Texture2D(Game1.graphics.GraphicsDevice, width, height);
|
||||||
|
texture.SetData(colorsOne);
|
||||||
|
|
||||||
|
string Name = reader.ReadString();
|
||||||
|
string path = reader.ReadString();
|
||||||
|
|
||||||
|
if (version.IsPriorityOver(this.ChangeVersion))
|
||||||
|
{
|
||||||
|
this.CleanSet(new UIUtilities.Texture2DExtended(ModCore.ModHelper,ModCore.Manifest, path), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
|
||||||
|
int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4;
|
||||||
|
writer.Write(base.Value.getTexture().Width);
|
||||||
|
writer.Write(base.Value.getTexture().Height);
|
||||||
|
//writer.Write(size);
|
||||||
|
texture = Value.getTexture();
|
||||||
|
Byte[] colorsOne = new byte[size]; //The hard to read,1D array
|
||||||
|
texture.GetData(colorsOne);
|
||||||
|
writer.Write(colorsOne);
|
||||||
|
writer.Write(base.Value.Name);
|
||||||
|
writer.Write(base.Value.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode
|
||||||
|
{
|
||||||
|
public class NetAnimation : Netcode.NetField<Animations.Animation, NetAnimation>
|
||||||
|
{
|
||||||
|
|
||||||
|
public NetRectangle sourceRect;
|
||||||
|
public NetInt frameDuration;
|
||||||
|
public NetInt frameDurationUntilNextAnimation;
|
||||||
|
|
||||||
|
public NetAnimation()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public NetAnimation(Animations.Animation animation) : base(animation)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
sourceRect = new NetRectangle();
|
||||||
|
sourceRect.Read(reader, version);
|
||||||
|
Value.sourceRectangle = sourceRect.Value;
|
||||||
|
|
||||||
|
frameDuration = new NetInt();
|
||||||
|
frameDuration.Read(reader, version);
|
||||||
|
Value.frameDuration = frameDuration.Value;
|
||||||
|
|
||||||
|
frameDurationUntilNextAnimation = new NetInt();
|
||||||
|
frameDurationUntilNextAnimation.Read(reader, version);
|
||||||
|
Value.frameDuration = frameDuration.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
sourceRect = new NetRectangle(Value.sourceRectangle);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
frameDuration = new NetInt(Value.frameDuration);
|
||||||
|
frameDuration.Write(writer);
|
||||||
|
|
||||||
|
frameDurationUntilNextAnimation = new NetInt(Value.frameCountUntilNextAnimation);
|
||||||
|
frameDurationUntilNextAnimation.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Network;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode
|
||||||
|
{
|
||||||
|
public class NetAnimationManager : Netcode.NetField<Animations.AnimationManager,NetAnimationManager>
|
||||||
|
{
|
||||||
|
|
||||||
|
public NetAnimationManager()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetAnimationManager(Animations.AnimationManager manager): base(manager)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetString currentAnimationName;
|
||||||
|
public NetInt currentAnimationListIndex;
|
||||||
|
public NetTexture2DExtended objectTexture;
|
||||||
|
public NetAnimation defaultDrawFrame;
|
||||||
|
public NetBool enabled;
|
||||||
|
public NetString animationDataString;
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
NetString currentAnimationName = new NetString();
|
||||||
|
currentAnimationName.Read(reader, version);
|
||||||
|
|
||||||
|
NetInt currentIndex = new NetInt();
|
||||||
|
currentIndex.Read(reader, version);
|
||||||
|
|
||||||
|
NetTexture2DExtended text = new NetTexture2DExtended();
|
||||||
|
text.Read(reader, version);
|
||||||
|
|
||||||
|
NetAnimation defaultAnimation = new NetAnimation();
|
||||||
|
defaultAnimation.Read(reader, version);
|
||||||
|
|
||||||
|
NetBool enabled = new NetBool();
|
||||||
|
enabled.Read(reader, version);
|
||||||
|
|
||||||
|
NetString data = new NetString();
|
||||||
|
data.Read(reader, version);
|
||||||
|
|
||||||
|
Value.setExtendedTexture(text.Value);
|
||||||
|
Value.defaultDrawFrame = defaultAnimation.Value;
|
||||||
|
Value.enabled = enabled.Value;
|
||||||
|
//Try and prevent unnecessary parsing.
|
||||||
|
if (Value.animations == null && !String.IsNullOrEmpty(Value.animationDataString))
|
||||||
|
{
|
||||||
|
Value.animations = Animations.AnimationManager.parseAnimationsFromXNB(data.Value);
|
||||||
|
}
|
||||||
|
if (!String.IsNullOrEmpty(data.Value))
|
||||||
|
{
|
||||||
|
Value.setAnimation(currentAnimationName.Value, currentIndex.Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value.currentAnimation = defaultDrawFrame.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
NetString curentAnimationName = new NetString(Value.currentAnimationName);
|
||||||
|
currentAnimationName.Write(writer);
|
||||||
|
|
||||||
|
|
||||||
|
NetInt currentAnimationListIndex = new NetInt(Value.currentAnimationListIndex);
|
||||||
|
currentAnimationListIndex.Write(writer);
|
||||||
|
|
||||||
|
NetTexture2DExtended texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
||||||
|
texture.Write(writer);
|
||||||
|
|
||||||
|
NetAnimation defaultDrawFrame = new NetAnimation(Value.defaultDrawFrame);
|
||||||
|
defaultDrawFrame.Write(writer);
|
||||||
|
|
||||||
|
NetBool enabled = new NetBool(Value.enabled);
|
||||||
|
enabled.Write(writer);
|
||||||
|
|
||||||
|
NetString animationData = new NetString(Value.animationDataString);
|
||||||
|
animationData.Write(writer);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,8 +32,9 @@ namespace StardustCore.NetCode
|
||||||
|
|
||||||
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
{
|
{
|
||||||
|
|
||||||
texture = new NetTexture2DExtended();
|
texture = new NetTexture2DExtended();
|
||||||
texture.Read(reader, version);
|
texture.ReadFull(reader, version);
|
||||||
Value.setExtendedTexture(texture.Value);
|
Value.setExtendedTexture(texture.Value);
|
||||||
|
|
||||||
which = new NetInt();
|
which = new NetInt();
|
||||||
|
@ -55,12 +56,14 @@ namespace StardustCore.NetCode
|
||||||
boundingBox = new NetRectangle();
|
boundingBox = new NetRectangle();
|
||||||
boundingBox.Read(reader, version);
|
boundingBox.Read(reader, version);
|
||||||
Value.boundingBox.Value = boundingBox.Value;
|
Value.boundingBox.Value = boundingBox.Value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteDelta(BinaryWriter writer)
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
{
|
{
|
||||||
|
|
||||||
texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
||||||
texture.Write(writer);
|
texture.WriteFull(writer);
|
||||||
|
|
||||||
which = new NetInt(Value.ParentSheetIndex);
|
which = new NetInt(Value.ParentSheetIndex);
|
||||||
which.Write(writer);
|
which.Write(writer);
|
||||||
|
@ -76,6 +79,7 @@ namespace StardustCore.NetCode
|
||||||
|
|
||||||
boundingBox = new NetRectangle(Value.boundingBox.Value);
|
boundingBox = new NetRectangle(Value.boundingBox.Value);
|
||||||
sourceRect.Write(writer);
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using Netcode;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode
|
||||||
|
{
|
||||||
|
public class NetKeyValuePair<K, V, KField, VField> : NetField<KeyValuePair<K, V>, NetKeyValuePair<K, V, KField, VField>> where KField : NetField<K, KField>, new() where VField : NetField<V, VField>, new()
|
||||||
|
{
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Netcode;
|
||||||
|
using StardustCore.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.NetPairs
|
||||||
|
{
|
||||||
|
class NetVector2MultiTilePair<K,KField>: NetKeyValuePair<Vector2,MultiTileComponent,Netcode.NetVector2,NetCode.Objects.NetMultiTileComponent>
|
||||||
|
{
|
||||||
|
|
||||||
|
public NetVector2MultiTilePair()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetVector2MultiTilePair(KeyValuePair<Vector2,MultiTileComponent> hello)
|
||||||
|
{
|
||||||
|
this.InitialSet(Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Read(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
base.Read(reader, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Write(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
base.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,11 +15,6 @@ namespace StardustCore.NetCode
|
||||||
public class NetTexture2DExtended : Netcode.NetField<UIUtilities.Texture2DExtended, NetTexture2DExtended>
|
public class NetTexture2DExtended : Netcode.NetField<UIUtilities.Texture2DExtended, NetTexture2DExtended>
|
||||||
{
|
{
|
||||||
|
|
||||||
public string Name;
|
|
||||||
public Texture2D texture;
|
|
||||||
public string path;
|
|
||||||
public int width;
|
|
||||||
public int height;
|
|
||||||
|
|
||||||
|
|
||||||
public NetTexture2DExtended()
|
public NetTexture2DExtended()
|
||||||
|
@ -31,37 +26,99 @@ namespace StardustCore.NetCode
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ReadData(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
ReadDelta(reader, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteData(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
WriteDelta(writer);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
{
|
{
|
||||||
int width = reader.ReadInt32();
|
|
||||||
int height = reader.ReadInt32();
|
|
||||||
Byte[] colorsOne = new byte[width*height*4];
|
|
||||||
colorsOne = reader.ReadBytes(width*height*4);
|
|
||||||
texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height);
|
|
||||||
texture.SetData(colorsOne);
|
|
||||||
|
|
||||||
string Name = reader.ReadString();
|
NetInt Width = new NetInt();
|
||||||
string path = reader.ReadString();
|
Width.Read(reader,version);
|
||||||
|
int width = Width.Value;
|
||||||
|
|
||||||
if (version.IsPriorityOver(this.ChangeVersion))
|
NetInt Height = new NetInt();
|
||||||
|
Height.Read(reader, version);
|
||||||
|
int height = Height.Value;
|
||||||
|
|
||||||
|
|
||||||
|
NetString name = new NetString();
|
||||||
|
name.Read(reader, version);
|
||||||
|
NetString path = new NetString();
|
||||||
|
path.Read(reader, version);
|
||||||
|
|
||||||
|
|
||||||
|
NetInt count = new NetInt();
|
||||||
|
count.Read(reader, version);
|
||||||
|
|
||||||
|
List<Color> bytes = new List<Color>();
|
||||||
|
//colorsOne = reader.ReadBytes();
|
||||||
|
|
||||||
|
for(int i=0; i < count.Value; i++)
|
||||||
{
|
{
|
||||||
this.CleanSet(new UIUtilities.Texture2DExtended(ModCore.ModHelper, path),true);
|
NetColor col = new NetColor();
|
||||||
|
col.Read(reader, version);
|
||||||
|
bytes.Add(col.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ModCore.ModMonitor.Log("Finished length: "+bytes.Count.ToString());
|
||||||
|
ModCore.ModMonitor.Log("W: " + width.ToString());
|
||||||
|
ModCore.ModMonitor.Log("H: " + height.ToString());
|
||||||
|
|
||||||
|
|
||||||
|
//Texture2D texture = new Texture2D(Game1.graphics.GraphicsDevice,width,height);
|
||||||
|
Texture2DExtended texture = new Texture2DExtended(ModCore.ModHelper, Path.Combine("Content", "Graphics", "MultiTest", "Test1.png"));
|
||||||
|
this.Value = texture;
|
||||||
|
|
||||||
|
//texture.SetData(bytes.ToArray());
|
||||||
|
|
||||||
|
//Value.Name = name.Value;
|
||||||
|
//Value.path = path.Value;
|
||||||
|
//Value.setTexure(texture);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void WriteDelta(BinaryWriter writer)
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
{
|
{
|
||||||
|
|
||||||
int size = base.Value.getTexture().Width * base.Value.getTexture().Height * 4;
|
int size = Value.getTexture().Width * Value.getTexture().Height;
|
||||||
writer.Write(base.Value.getTexture().Width);
|
NetInt Width = new NetInt(Value.getTexture().Width);
|
||||||
writer.Write(base.Value.getTexture().Height);
|
Width.Write(writer);
|
||||||
|
|
||||||
|
NetInt Height = new NetInt(Value.getTexture().Height);
|
||||||
|
Height.Write(writer);
|
||||||
|
|
||||||
|
|
||||||
|
NetString name = new NetString(Value.Name);
|
||||||
|
name.Write(writer);
|
||||||
|
|
||||||
|
NetString path = new NetString(Value.path);
|
||||||
|
path.Write(writer);
|
||||||
//writer.Write(size);
|
//writer.Write(size);
|
||||||
texture = Value.getTexture();
|
|
||||||
Byte[] colorsOne = new byte[size]; //The hard to read,1D array
|
Texture2D texture = Value.getTexture();
|
||||||
|
Color[] colorsOne = new Color[size]; //The hard to read,1D array
|
||||||
|
|
||||||
texture.GetData(colorsOne);
|
texture.GetData(colorsOne);
|
||||||
writer.Write(colorsOne);
|
|
||||||
writer.Write(base.Value.Name);
|
NetInt count = new NetInt(colorsOne.Length);
|
||||||
writer.Write(base.Value.path);
|
count.Write(writer);
|
||||||
|
|
||||||
|
ModCore.ModMonitor.Log("Color length:" + count.ToString());
|
||||||
|
|
||||||
|
foreach(var v in colorsOne)
|
||||||
|
{
|
||||||
|
NetColor col = new NetColor(v);
|
||||||
|
col.Write(writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Netcode;
|
||||||
|
using StardewValley;
|
||||||
|
using StardustCore.NetCode.Graphics;
|
||||||
|
using StardustCore.UIUtilities;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode
|
||||||
|
{
|
||||||
|
public class NetCoreObject : Netcode.NetField<CoreObject, NetCoreObject>
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public NetInt which;
|
||||||
|
public NetVector2 tilePos;
|
||||||
|
|
||||||
|
|
||||||
|
public NetRectangle boundingBox;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public NetVector2 position;
|
||||||
|
public NetInt Decoration_type;
|
||||||
|
public NetInt rotations;
|
||||||
|
public NetInt currentRotation;
|
||||||
|
public NetInt sourceIndexOffset;
|
||||||
|
public NetVector2 drawPosition;
|
||||||
|
public NetRectangle sourceRect;
|
||||||
|
public NetRectangle defaultSourceRect;
|
||||||
|
public NetRectangle defaultBoundingBox;
|
||||||
|
public NetString description;
|
||||||
|
public NetTexture2DExtended texture;
|
||||||
|
public NetBool flipped;
|
||||||
|
public NetBool flaggedForPickup;
|
||||||
|
public NetBool lightGlowAdded;
|
||||||
|
public NetObjectList<Item> inventory;
|
||||||
|
public NetInt InventoryMaxSize;
|
||||||
|
public NetBool itemReadyForHarvest;
|
||||||
|
public NetBool lightsOn;
|
||||||
|
public NetString locationName;
|
||||||
|
public NetColor lightColor;
|
||||||
|
public NetBool removable;
|
||||||
|
public NetColor drawColor;
|
||||||
|
public NetBool useXML;
|
||||||
|
public NetString serializationName;
|
||||||
|
|
||||||
|
//Animation Manager.....
|
||||||
|
public NetAnimationManager animationManager;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public NetCoreObject()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetCoreObject(CoreObject value) : base(value)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
texture = new NetTexture2DExtended();
|
||||||
|
texture.Read(reader, version);
|
||||||
|
Value.setExtendedTexture(texture.Value);
|
||||||
|
|
||||||
|
which = new NetInt();
|
||||||
|
which.Read(reader, version);
|
||||||
|
Value.ParentSheetIndex = which.Value;
|
||||||
|
|
||||||
|
tilePos = new NetVector2();
|
||||||
|
tilePos.Read(reader, version);
|
||||||
|
Value.TileLocation = tilePos.Value;
|
||||||
|
|
||||||
|
InventoryMaxSize = new NetInt();
|
||||||
|
InventoryMaxSize.Read(reader, version);
|
||||||
|
Value.inventoryMaxSize = InventoryMaxSize.Value;
|
||||||
|
|
||||||
|
sourceRect = new NetRectangle();
|
||||||
|
sourceRect.Read(reader, version);
|
||||||
|
Value.sourceRect = sourceRect.Value;
|
||||||
|
|
||||||
|
boundingBox = new NetRectangle();
|
||||||
|
boundingBox.Read(reader, version);
|
||||||
|
Value.boundingBox.Value = boundingBox.Value;
|
||||||
|
|
||||||
|
drawPosition = new NetVector2();
|
||||||
|
drawPosition.Read(reader, version);
|
||||||
|
Value.drawPosition = drawPosition.Value;
|
||||||
|
|
||||||
|
animationManager = new NetAnimationManager();
|
||||||
|
animationManager.Read(reader, version);
|
||||||
|
Value.animationManager = animationManager.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
||||||
|
texture.Write(writer);
|
||||||
|
|
||||||
|
which = new NetInt(Value.ParentSheetIndex);
|
||||||
|
which.Write(writer);
|
||||||
|
|
||||||
|
tilePos = new NetVector2(Value.TileLocation);
|
||||||
|
tilePos.Write(writer);
|
||||||
|
|
||||||
|
InventoryMaxSize = new NetInt(Value.inventoryMaxSize);
|
||||||
|
InventoryMaxSize.Write(writer);
|
||||||
|
|
||||||
|
sourceRect = new NetRectangle(Value.sourceRect);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
boundingBox = new NetRectangle(Value.boundingBox.Value);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
drawPosition = new NetVector2(Value.drawPosition);
|
||||||
|
drawPosition.Write(writer);
|
||||||
|
|
||||||
|
if (Value.animationManager != null)
|
||||||
|
{
|
||||||
|
animationManager = new NetAnimationManager(Value.animationManager);
|
||||||
|
animationManager.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
using Netcode;
|
||||||
|
using StardustCore.NetCode.Graphics;
|
||||||
|
using StardustCore.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.Objects
|
||||||
|
{
|
||||||
|
class NetMultiTileComponent : Netcode.NetField<MultiTileComponent, NetMultiTileComponent>
|
||||||
|
{
|
||||||
|
private NetTexture2DExtended texture;
|
||||||
|
private NetInt which;
|
||||||
|
private NetVector2 tilePos;
|
||||||
|
private NetRectangle sourceRect;
|
||||||
|
private NetRectangle boundingBox;
|
||||||
|
private NetVector2 drawPosition;
|
||||||
|
private NetAnimationManager animationManager;
|
||||||
|
|
||||||
|
public NetMultiTileComponent()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetMultiTileComponent(MultiTileComponent obj): base(obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetInt InventoryMaxSize { get; private set; }
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
|
||||||
|
texture = new NetTexture2DExtended();
|
||||||
|
texture.Read(reader, version);
|
||||||
|
|
||||||
|
which = new NetInt();
|
||||||
|
which.Read(reader, version);
|
||||||
|
Value.ParentSheetIndex = which.Value;
|
||||||
|
|
||||||
|
tilePos = new NetVector2();
|
||||||
|
tilePos.Read(reader, version);
|
||||||
|
Value.TileLocation = tilePos.Value;
|
||||||
|
|
||||||
|
InventoryMaxSize = new NetInt();
|
||||||
|
InventoryMaxSize.Read(reader, version);
|
||||||
|
Value.inventoryMaxSize = InventoryMaxSize.Value;
|
||||||
|
|
||||||
|
sourceRect = new NetRectangle();
|
||||||
|
sourceRect.Read(reader, version);
|
||||||
|
Value.sourceRect = sourceRect.Value;
|
||||||
|
|
||||||
|
boundingBox = new NetRectangle();
|
||||||
|
boundingBox.Read(reader, version);
|
||||||
|
Value.boundingBox.Value = boundingBox.Value;
|
||||||
|
|
||||||
|
drawPosition = new NetVector2();
|
||||||
|
drawPosition.Read(reader, version);
|
||||||
|
Value.drawPosition = drawPosition.Value;
|
||||||
|
|
||||||
|
animationManager = new NetAnimationManager();
|
||||||
|
animationManager.Read(reader, version);
|
||||||
|
Value.animationManager = animationManager.Value;
|
||||||
|
//NetCoreObject obj = new NetCoreObject();
|
||||||
|
//obj.ReadData(reader, version);
|
||||||
|
|
||||||
|
/*
|
||||||
|
NetMultiTileObject hmm = new NetMultiTileObject();
|
||||||
|
hmm.Read(reader,version);
|
||||||
|
Value.containerObject = hmm.Value;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
//NetCoreObject obj = new NetCoreObject(Value);
|
||||||
|
//obj.WriteData(writer);
|
||||||
|
|
||||||
|
texture = new NetTexture2DExtended(Value.getExtendedTexture());
|
||||||
|
texture.Write(writer);
|
||||||
|
|
||||||
|
which = new NetInt(Value.ParentSheetIndex);
|
||||||
|
which.Write(writer);
|
||||||
|
|
||||||
|
tilePos = new NetVector2(Value.TileLocation);
|
||||||
|
tilePos.Write(writer);
|
||||||
|
|
||||||
|
InventoryMaxSize = new NetInt(Value.inventoryMaxSize);
|
||||||
|
InventoryMaxSize.Write(writer);
|
||||||
|
|
||||||
|
sourceRect = new NetRectangle(Value.sourceRect);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
boundingBox = new NetRectangle(Value.boundingBox.Value);
|
||||||
|
sourceRect.Write(writer);
|
||||||
|
|
||||||
|
drawPosition = new NetVector2(Value.drawPosition);
|
||||||
|
drawPosition.Write(writer);
|
||||||
|
|
||||||
|
if (Value.animationManager != null)
|
||||||
|
{
|
||||||
|
animationManager = new NetAnimationManager(Value.animationManager);
|
||||||
|
animationManager.Write(writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
//NetMultiTileObject hmm = new NetMultiTileObject(Value.containerObject);
|
||||||
|
//hmm.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Netcode;
|
||||||
|
using StardustCore.Objects;
|
||||||
|
|
||||||
|
namespace StardustCore.NetCode.Objects
|
||||||
|
{
|
||||||
|
class NetMultiTileObject : Netcode.NetField<MultiTileObject, NetMultiTileObject>
|
||||||
|
{
|
||||||
|
public NetMultiTileObject()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetMultiTileObject(MultiTileObject obj): base(obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void ReadDelta(BinaryReader reader, NetVersion version)
|
||||||
|
{
|
||||||
|
NetCoreObject obj = new NetCoreObject();
|
||||||
|
obj.Read(reader, version);
|
||||||
|
//Values already taken care of in NetCoreObject
|
||||||
|
|
||||||
|
NetList<KeyValuePair<Vector2, MultiTileComponent>, NetKeyValuePair<Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent>> netList = new NetList<KeyValuePair<Vector2, MultiTileComponent>, NetKeyValuePair<Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent>>();
|
||||||
|
netList.Read(reader, version);
|
||||||
|
Value.objects = netList.ToList();
|
||||||
|
|
||||||
|
NetColor col = new NetColor();
|
||||||
|
col.Read(reader, version);
|
||||||
|
Value.categoryColor = col.Value;
|
||||||
|
|
||||||
|
NetString name = new NetString();
|
||||||
|
name.Read(reader, version);
|
||||||
|
Value.categoryName = name.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WriteDelta(BinaryWriter writer)
|
||||||
|
{
|
||||||
|
NetCoreObject obj = new NetCoreObject(Value);
|
||||||
|
obj.Write(writer);
|
||||||
|
|
||||||
|
NetList<KeyValuePair<Vector2, MultiTileComponent>, NetKeyValuePair<Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent>> netList = new NetList<KeyValuePair<Vector2, MultiTileComponent>, NetKeyValuePair<Vector2, MultiTileComponent, NetVector2, NetMultiTileComponent>>();
|
||||||
|
foreach (var v in Value.objects)
|
||||||
|
{
|
||||||
|
netList.Add(v);
|
||||||
|
}
|
||||||
|
netList.Write(writer);
|
||||||
|
|
||||||
|
NetColor col = new NetColor(Value.categoryColor);
|
||||||
|
col.Write(writer);
|
||||||
|
|
||||||
|
NetString catName = new NetString(Value.categoryName);
|
||||||
|
catName.Write(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Netcode;
|
||||||
using StardewModdingAPI;
|
using StardewModdingAPI;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using StardewValley.Locations;
|
using StardewValley.Locations;
|
||||||
|
@ -104,24 +105,46 @@ namespace StardustCore
|
||||||
lightColor = Color.Black;
|
lightColor = Color.Black;
|
||||||
thisType = this.GetType().ToString();
|
thisType = this.GetType().ToString();
|
||||||
|
|
||||||
|
base.initNetFields();
|
||||||
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreObject()
|
public CoreObject()
|
||||||
{
|
{
|
||||||
|
base.initNetFields();
|
||||||
this.updateDrawPosition();
|
this.updateDrawPosition();
|
||||||
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreObject(bool f)
|
public CoreObject(bool f)
|
||||||
{
|
{
|
||||||
|
base.initNetFields();
|
||||||
//does nothng
|
//does nothng
|
||||||
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
this.NetFields.AddField(new NetCode.NetCoreObject(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize)
|
public CoreObject(Texture2DExtended texture,int which, Vector2 Tile, int InventoryMaxSize):base()
|
||||||
{
|
{
|
||||||
|
var ok=Game1.getAllFarmers();
|
||||||
|
foreach (var v in ok){
|
||||||
|
this.owner.Value = v.UniqueMultiplayerID;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.Type = "Not Sure";
|
||||||
|
this.CanBeSetDown = true;
|
||||||
|
this.CanBeGrabbed = true;
|
||||||
|
this.IsSpawnedObject = false;
|
||||||
|
this.questItem.Value = false;
|
||||||
|
this.questId.Value =0;
|
||||||
|
this.IsOn = false;
|
||||||
|
this.heldObject.Value = null;
|
||||||
|
this.Stack = 1;
|
||||||
|
|
||||||
|
|
||||||
InitializeBasics(InventoryMaxSize, Tile);
|
InitializeBasics(InventoryMaxSize, Tile);
|
||||||
if (TextureSheet == null)
|
if (TextureSheet == null)
|
||||||
{
|
{
|
||||||
|
@ -169,11 +192,20 @@ namespace StardustCore
|
||||||
this.boundingBox.Value = new Rectangle((int)this.TileLocation.X * Game1.tileSize, (int)this.TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize);
|
this.boundingBox.Value = new Rectangle((int)this.TileLocation.X * Game1.tileSize, (int)this.TileLocation.Y * Game1.tileSize, 1 * Game1.tileSize, 1 * Game1.tileSize);
|
||||||
this.defaultBoundingBox = this.boundingBox.Value;
|
this.defaultBoundingBox = this.boundingBox.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.boundingBox.Value = new Rectangle(0, 0, Game1.tileSize, Game1.tileSize);
|
||||||
this.updateDrawPosition();
|
this.updateDrawPosition();
|
||||||
this.rotations = Convert.ToInt32(array[4]);
|
this.rotations = Convert.ToInt32(array[4]);
|
||||||
this.Price = Convert.ToInt32(array[5]);
|
this.Price = Convert.ToInt32(array[5]);
|
||||||
this.ParentSheetIndex = which;
|
this.ParentSheetIndex = which;
|
||||||
this.serializationName=this.GetType().ToString();
|
this.serializationName=this.GetType().ToString();
|
||||||
|
|
||||||
|
|
||||||
|
this.drawPosition = Vector2.Zero;
|
||||||
|
this.TileLocation = tileLocation;
|
||||||
|
this.locationsName = "";
|
||||||
|
this.position = this.TileLocation * (Game1.tileSize);
|
||||||
|
this.thisLocation = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string getDescription()
|
public override string getDescription()
|
||||||
|
@ -248,82 +280,6 @@ namespace StardustCore
|
||||||
return this.clicked(who);
|
return this.clicked(who);
|
||||||
}
|
}
|
||||||
|
|
||||||
//DONT USE THIS BASE IT IS TERRIBLE
|
|
||||||
/*
|
|
||||||
public override bool clicked(StardewValley.Farmer who)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Game1.showRedMessage("THIS IS CLICKED!!!");
|
|
||||||
Game1.haltAfterCheck = false;
|
|
||||||
|
|
||||||
if (this.heldObject != null)
|
|
||||||
{
|
|
||||||
this.spillInventoryEverywhere();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.heldObject == null && (who.ActiveObject == null || !(who.ActiveObject is CoreObject)))
|
|
||||||
{
|
|
||||||
if (Game1.player.currentLocation is FarmHouse)
|
|
||||||
{
|
|
||||||
// Game1.showRedMessage("Why2?");
|
|
||||||
// this.spillInventoryEverywhere();
|
|
||||||
|
|
||||||
if (this.heldObject != null) Util.addItemToInventoryElseDrop(this.heldObject.getOne());
|
|
||||||
this.heldObject = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize);
|
|
||||||
// Util.addItemToInventoryElseDrop(this.heldObject.getOne());
|
|
||||||
this.heldObject = null;
|
|
||||||
this.flaggedForPickUp = true;
|
|
||||||
thisLocation = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// return true;
|
|
||||||
|
|
||||||
this.flaggedForPickUp = true;
|
|
||||||
if (this is TV)
|
|
||||||
{
|
|
||||||
// this.heldObject = new TV(parentSheetIndex, Vector2.Zero);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
// Util.addItemToInventoryElseDrop(this.heldObject);
|
|
||||||
|
|
||||||
var obj = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize);
|
|
||||||
// Util.addItemToInventoryElseDrop(obj);
|
|
||||||
// this.spillInventoryEverywhere();
|
|
||||||
if (this.heldObject != null) this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
|
||||||
|
|
||||||
this.heldObject = null;
|
|
||||||
Game1.playSound("coin");
|
|
||||||
thisLocation = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.heldObject != null && who.addItemToInventoryBool(this.heldObject, false))
|
|
||||||
{
|
|
||||||
// Game1.showRedMessage("Why3?");
|
|
||||||
// if(this.heldObject!=null) Game1.player.addItemByMenuIfNecessary((Item)this.heldObject);
|
|
||||||
// this.spillInventoryEverywhere();
|
|
||||||
var obj = new CoreObject(parentSheetIndex, Vector2.Zero, this.inventoryMaxSize);
|
|
||||||
// Util.addItemToInventoryElseDrop(obj);
|
|
||||||
if (this.heldObject != null) this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
|
||||||
this.heldObject = null;
|
|
||||||
Game1.playSound("coin");
|
|
||||||
thisLocation = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public virtual bool RightClicked(StardewValley.Farmer who)
|
public virtual bool RightClicked(StardewValley.Farmer who)
|
||||||
{
|
{
|
||||||
// StardewModdingAPI.Log.AsyncC(lightColor);
|
// StardewModdingAPI.Log.AsyncC(lightColor);
|
||||||
|
@ -732,72 +688,6 @@ namespace StardustCore
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
|
||||||
{
|
|
||||||
if ((l is FarmHouse))
|
|
||||||
{
|
|
||||||
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
|
||||||
{
|
|
||||||
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
|
||||||
vector.X += (float)(Game1.tileSize / 2);
|
|
||||||
vector.Y += (float)(Game1.tileSize / 2);
|
|
||||||
foreach (KeyValuePair<Vector2, StardewValley.Object> something in l.objects)
|
|
||||||
{
|
|
||||||
StardewValley.Object obj = something.Value;
|
|
||||||
if ((obj.GetType()).ToString().Contains("CoreObject"))
|
|
||||||
{
|
|
||||||
CoreObject current = (CoreObject)obj;
|
|
||||||
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
|
||||||
{
|
|
||||||
bool result = true;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
|
||||||
{
|
|
||||||
bool result = false;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Util.canBePlacedHere(this, l, tile);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Game1.showRedMessage("NOT FARMHOUSE");
|
|
||||||
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
|
||||||
{
|
|
||||||
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
|
||||||
vector.X += (float)(Game1.tileSize / 2);
|
|
||||||
vector.Y += (float)(Game1.tileSize / 2);
|
|
||||||
/*
|
|
||||||
foreach (CoreObject current in (l as FarmHouse).CoreObject)
|
|
||||||
{
|
|
||||||
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
|
||||||
{
|
|
||||||
bool result = true;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
|
||||||
{
|
|
||||||
bool result = false;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Util.canBePlacedHere(this, l, tile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
public virtual void updateDrawPosition()
|
public virtual void updateDrawPosition()
|
||||||
{
|
{
|
||||||
|
@ -814,174 +704,6 @@ namespace StardustCore
|
||||||
return this.boundingBox.Height / Game1.tileSize;
|
return this.boundingBox.Height / Game1.tileSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null)
|
|
||||||
{
|
|
||||||
// Log.AsyncC(x);
|
|
||||||
// Log.AsyncM(y);
|
|
||||||
|
|
||||||
if (location is FarmHouse)
|
|
||||||
{
|
|
||||||
Point point = new Point(x / Game1.tileSize, y / Game1.tileSize);
|
|
||||||
List<Rectangle> walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel);
|
|
||||||
this.tileLocation = new Vector2((float)point.X, (float)point.Y);
|
|
||||||
bool flag = false;
|
|
||||||
if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293)
|
|
||||||
{
|
|
||||||
int num = (this.parentSheetIndex == 1293) ? 3 : 0;
|
|
||||||
bool flag2 = false;
|
|
||||||
foreach (Rectangle current in walls)
|
|
||||||
{
|
|
||||||
if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num))
|
|
||||||
{
|
|
||||||
flag2 = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!flag2)
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Must be placed on wall");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
for (int i = point.X; i < point.X + this.getTilesWide(); i++)
|
|
||||||
{
|
|
||||||
for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++)
|
|
||||||
{
|
|
||||||
if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null)
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Furniture can't be placed here");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!flag && Utility.pointInRectangles(walls, i, j))
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Can't place on wall");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (location.getTileIndexAt(i, j, "Buildings") != -1)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.boundingBox = new Rectangle(x, y, this.boundingBox.Width, this.boundingBox.Height);
|
|
||||||
foreach (KeyValuePair<Vector2, StardewValley.Object> c in location.objects)
|
|
||||||
{
|
|
||||||
StardewValley.Object ehh = c.Value;
|
|
||||||
if (((ehh.GetType()).ToString()).Contains("CoreObject"))
|
|
||||||
{
|
|
||||||
CoreObject current2 = (CoreObject)ehh;
|
|
||||||
if (current2.Decoration_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox))
|
|
||||||
{
|
|
||||||
current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who);
|
|
||||||
bool result = true;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach (StardewValley.Farmer current3 in location.getStardewValley.Farmers())
|
|
||||||
{
|
|
||||||
if (current3.GetBoundingBox().Intersects(this.boundingBox))
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Can't place on top of a person.");
|
|
||||||
bool result = false;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.updateDrawPosition();
|
|
||||||
// Log.AsyncO(this.boundingBox);
|
|
||||||
// Log.AsyncO(x);
|
|
||||||
// Log.AsyncY(y);
|
|
||||||
for (int i = 0; i <= this.boundingBox.X / Game1.tileSize; i++)
|
|
||||||
{
|
|
||||||
base.placementAction(location, x + 1, y, who);
|
|
||||||
}
|
|
||||||
for (int i = 0; i <= this.boundingBox.Y / Game1.tileSize; i++)
|
|
||||||
{
|
|
||||||
base.placementAction(location, x, y + 1, who);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Point point = new Point(x / Game1.tileSize, y / Game1.tileSize);
|
|
||||||
// List<Rectangle> walls = FarmHouse.getWalls((location as FarmHouse).upgradeLevel);
|
|
||||||
this.tileLocation = new Vector2((float)point.X, (float)point.Y);
|
|
||||||
bool flag = false;
|
|
||||||
if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293)
|
|
||||||
{
|
|
||||||
int num = (this.parentSheetIndex == 1293) ? 3 : 0;
|
|
||||||
bool flag2 = false;
|
|
||||||
/*
|
|
||||||
foreach (Rectangle current in walls)
|
|
||||||
{
|
|
||||||
if ((this.Decoration_type == 6 || this.Decoration_type == 13 || num != 0) && current.Y + num == point.Y && current.Contains(point.X, point.Y - num))
|
|
||||||
{
|
|
||||||
flag2 = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!flag2)
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Must be placed on wall");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
for (int i = point.X; i < point.X + this.getTilesWide(); i++)
|
|
||||||
{
|
|
||||||
for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++)
|
|
||||||
{
|
|
||||||
if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null)
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Furniture can't be placed here");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
if (!flag && Utility.pointInRectangles(walls, i, j))
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Can't place on wall");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (location.getTileIndexAt(i, j, "Buildings") != -1)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.boundingBox = new Rectangle(x, y, this.boundingBox.Width, this.boundingBox.Height);
|
|
||||||
/*
|
|
||||||
foreach (Furniture current2 in (location as FarmHouse).furniture)
|
|
||||||
{
|
|
||||||
if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox))
|
|
||||||
{
|
|
||||||
current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who);
|
|
||||||
bool result = true;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (StardewValley.Farmer current3 in location.getStardewValley.Farmers())
|
|
||||||
{
|
|
||||||
if (current3.GetBoundingBox().Intersects(this.boundingBox))
|
|
||||||
{
|
|
||||||
Game1.showRedMessage("Can't place on top of a person.");
|
|
||||||
bool result = false;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.updateDrawPosition();
|
|
||||||
thisLocation = Game1.player.currentLocation;
|
|
||||||
return base.placementAction(location, x, y, who);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null)
|
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1290,12 +1012,7 @@ namespace StardustCore
|
||||||
{
|
{
|
||||||
if (x == -1)
|
if (x == -1)
|
||||||
{
|
{
|
||||||
//ERROR IS HERE?!?!?!?!?
|
spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, 0f);
|
||||||
if (TextureSheet == null)
|
|
||||||
{
|
|
||||||
ModCore.ModMonitor.Log("WHY IS EX TEXT NULL?????");
|
|
||||||
}
|
|
||||||
spriteBatch.Draw(TextureSheet.getTexture(), Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,5 +57,10 @@ namespace StardustCore.UIUtilities
|
||||||
{
|
{
|
||||||
return this.texture;
|
return this.texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTexure(Texture2D text)
|
||||||
|
{
|
||||||
|
this.texture = text;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue