Beispiel #1
0
        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);
             */
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        /// <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);
            }
Beispiel #7
0
        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);
                }
            }
        }