protected override void ReadDelta(BinaryReader reader, NetVersion version) { sourceRect = new NetRectangle(); if (sourceRect == null) { throw new Exception("WTF??? Why is netfield null"); } if (reader == null) { throw new Exception("reader null"); } if (value == null) { this.Set(new Animation()); } 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.frameCountUntilNextAnimation = frameDurationUntilNextAnimation.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); locationName = new NetString(Value.locationsName); locationName.Write(writer); /* * if (Value.animationManager == null) * { * throw new Exception("WTF, why is the animation manager null???????????"); * } * animationManager = new NetAnimationManager(Value.animationManager); * animationManager.Write(writer); */ }
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); }
/// <summary> /// Reimplements the operations pertaining to the drawing of the Farmhouse, Greenhouse, Mailbox, and /// the note on the grandpa shrine to accomidate for repositioning based on the information provided by /// the custom farm's content pack. /// </summary> /// <param name="__instance">The instance of the Farm</param> /// <param name="b">From original method. The spritebatch used to draw.</param> public static void Postfix(Farm __instance, SpriteBatch b) { int x; if (__instance.Name != "Farm") { return; } NetRectangle house = (NetRectangle)Traverse.Create(__instance).Field("houseSource").GetValue(); NetRectangle greenhouse = (NetRectangle)Traverse.Create(__instance).Field("greenhouseSource").GetValue(); TemporaryAnimatedSprite binLid = (TemporaryAnimatedSprite)Traverse.Create(__instance).Field("shippingBinLid").GetValue(); //Farmhouse & Farmhouse Shadows b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.FarmHouseCoords(64f, 568f)), new Rectangle?(Building.leftShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); for (x = 2; x < 9; x++) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.FarmHouseCoords(x * 64f, 568f)), new Rectangle?(Building.middleShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); } b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.FarmHouseCoords(x * 64, 568f)), new Rectangle?(Building.rightShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, customManager.FarmHouseCoords()), new Rectangle?(house), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, customManager.FarmHouseLayerDepth()); //Green House b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, customManager.GreenHouseCoords()), new Rectangle?(greenhouse), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, customManager.GreenHouseLayerDepth()); //Mailbox Notification ("!" symbol when new mail arrives). if (Game1.mailbox.Count > 0) { float yOffset = 4f * (float)Math.Round(Math.Sin(DateTime.Now.TimeOfDay.TotalMilliseconds / 250.0), 2); b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.MailboxNotification(0f, yOffset, false)), new Rectangle?(new Rectangle(141, 465, 20, 24)), Color.White * 0.75f, 0f, Vector2.Zero, 4f, SpriteEffects.None, customManager.MailBoxNotifyLayerDepth(false)); b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.MailboxNotification(0.5626f * 64f, yOffset + 40f, true)), new Rectangle?(new Rectangle(189, 423, 15, 13)), Color.White, 0f, new Vector2(7f, 6f), 4f, SpriteEffects.None, customManager.MailBoxNotifyLayerDepth(true)); } //Shipping Bin Animation if (binLid != null) { binLid.draw(b, false, 0, 0, 1f); } //Shrine note if (!__instance.hasSeenGrandpaNote) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, customManager.GrandpaShrineCoords()), new Rectangle?(new Rectangle(575, 1972, 11, 8)), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.0448009968f); } return; }
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; locationName = new NetString(); locationName.Read(reader, version); Value.locationsName = locationName.Value; Value.thisLocation = Game1.getLocationFromName(locationName.Value); /* * animationManager = new NetAnimationManager(); * animationManager.Read(reader, version); * Value.animationManager = animationManager.Value; */ }
public static void Postfix(Object __instance, Vector2 tileLocation, ref Rectangle __result, NetRectangle ___boundingBox) { if (!Config.EnableMod || !customSignTypeDict.ContainsKey(__instance.Name) || !__instance.modData.TryGetValue(templateKey, out string template) || !customSignDataDict.TryGetValue(template, out CustomSignData data)) { return; } var x = Environment.StackTrace; __result = new Rectangle((int)tileLocation.X * 64 + 32 / 2 - data.tileWidth * 64 / 2, (int)tileLocation.Y * 64 + 64 - data.tileHeight * 64, data.tileWidth * 64, data.tileHeight * 64); ___boundingBox.Set(__result); }
public static void Postfix(Farm __instance, SpriteBatch b) { int x; if (__instance.Name != "Farm") { return; } NetRectangle house = (NetRectangle)Traverse.Create(__instance).Field("houseSource").GetValue(); NetRectangle greenhouse = (NetRectangle)Traverse.Create(__instance).Field("greenhouseSource").GetValue(); //Farmhouse & Farmhouse Shadows //For Custom if (Memory.isCustomFarmLoaded && Memory.isFarmHouseRelocated) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getFarmHouseRenderPosition(64, 568)), new Rectangle?(Building.leftShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); for (x = 2; x < 9; x++) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getFarmHouseRenderPosition(x * 64f, 568)), new Rectangle?(Building.middleShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); } b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getFarmHouseRenderPosition(x * 64f, 568)), new Rectangle?(Building.rightShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getFarmHouseRenderPosition()), new Rectangle?(house), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, ((Memory.loadedFarm.farmHousePorchY() - 5 + 3) * 64) / 10000f); } else //For Canon & Customs with Canon Position { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2(3776f, 1088f)), new Rectangle?(Building.leftShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); for (x = 1; x < 8; x++) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(3776 + x * 64), 1088f)), new Rectangle?(Building.middleShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); } b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2(4288f, 1088f)), new Rectangle?(Building.rightShadow), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1E-05f); b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, new Vector2(3712f, 520f)), new Rectangle?(house), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.075f); } //Actual Farmhouse & Green House //For Custom if (Memory.isCustomFarmLoaded && Memory.isGreenHouseRelocated) { b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getGreenHouseRenderPosition()), new Rectangle?(greenhouse), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, ((Memory.loadedFarm.greenHousePorchY() - 7 + 2) * 64f) / 10000f); } //For Canon & Customs with Canon Position else { b.Draw(Farm.houseTextures, Game1.GlobalToLocal(Game1.viewport, new Vector2(1600f, 384f)), new Rectangle?(greenhouse), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.0704f); } //Mailbox "!" when new mail arrived. if (Game1.mailbox.Count > 0) { float yOffset = 4f * (float)Math.Round(Math.Sin(DateTime.Now.TimeOfDay.TotalMilliseconds / 250.0), 2); //For Custom if (Memory.isCustomFarmLoaded && Memory.isMailBoxRelocated) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getMailBoxNotificationRenderPosition(0, (2.25f * -64f) + yOffset)), new Rectangle?(new Rectangle(141, 465, 20, 24)), Color.White * 0.75f, 0f, Vector2.Zero, 4f, SpriteEffects.None, (((Memory.loadedFarm.mailBoxPointY() + 2) * 64f) / 10000f) + 0.000401f); b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getMailBoxNotificationRenderPosition(0.5626f * 64f, (1.5f * -64f) + yOffset)), new Rectangle?(new Rectangle(189, 423, 15, 13)), Color.White, 0f, new Vector2(7f, 6f), 4f, SpriteEffects.None, (((Memory.loadedFarm.mailBoxPointY() + 2) * 64f) / 10000f) + 0.00041f); } else //For Canon & Custom with Canon Position { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2(4352f, 880f + yOffset)), new Rectangle?(new Rectangle(141, 465, 20, 24)), Color.White * 0.75f, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.115601f); b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2(4388f, 928f + yOffset)), new Rectangle?(new Rectangle(189, 423, 15, 13)), Color.White, 0f, new Vector2(7f, 6f), 4f, SpriteEffects.None, 0.11561f); } } //Shrine note if (!__instance.hasSeenGrandpaNote) { //For Custom if (Memory.isCustomFarmLoaded && Memory.isShrineRelocated) { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, Memory.loadedFarm.getgrandpaShrineRenderPosition()), new Rectangle?(new Rectangle(575, 1972, 11, 8)), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.0448009968f); } //For Canon & Custom with Canon Position else { b.Draw(Game1.mouseCursors, Game1.GlobalToLocal(Game1.viewport, new Vector2(576f, 448f)), new Rectangle?(new Rectangle(575, 1972, 11, 8)), Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 0.0448009968f); } } }