Ejemplo n.º 1
0
        protected AccessMenu(StardewValley.Menus.IClickableMenu menu)
        {
            items = new List <MenuItem>();
            Point point = DefaultMouse();

            //Microsoft.Xna.Framework.Input.Mouse.SetPosition(point.X, point.Y);
            stardewMenu = menu;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// TODO: Add the ModClass item check to chest inventory. See if I can grab activeclickable menu and instead hook the inventory component from it.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void GameEvents_UpdateTick(object sender, EventArgs e)
        {
            if (Game1.activeClickableMenu != null)
            {
                //  if (Game1.activeClickableMenu.allClickableComponents == null) return;
                try {
                    List <IClickableMenu> pages = ModCore.ModHelper.Reflection.GetField <List <IClickableMenu> >(Game1.activeClickableMenu, "pages").GetValue();
                    if (Game1.activeClickableMenu is GameMenu)
                    {
                        StardewValley.Menus.IClickableMenu s = pages[(Game1.activeClickableMenu as GameMenu).currentTab];



                        foreach (var v in s.allClickableComponents)
                        {
                            if (v.containsPoint(Game1.getMouseX(), Game1.getMouseY()))
                            {
                                if (v == null)
                                {
                                    continue;
                                }
                                string fire = v.name;


                                bool num = true;
                                foreach (var v2 in fire)
                                {
                                    if (v2 != '0' && v2 != '1' && v2 != '2' && v2 != '3' && v2 != '4' && v2 != '5' && v2 != '6' && v2 != '7' && v2 != '8' && v2 != '9')
                                    {
                                        num = false;
                                        break;
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                if (num == true)
                                {
                                    int  inv = Convert.ToInt32(v.name);
                                    Item I   = (s as StardewValley.Menus.InventoryPage).inventory.actualInventory[inv];

                                    string s1 = parseModNameFromType(I.GetType());
                                    string s2 = parseClassNameFromType(I.GetType());
                                    string s3 = Assembly.GetAssembly(I.GetType()).Location;
                                    s3 = Path.GetFileName(s3);


                                    //DRAW THE INFO BOX!!!
                                    try
                                    {
                                        SpriteBatch b = new SpriteBatch(Game1.graphics.GraphicsDevice);
                                        b.Begin();
                                        float boxX      = Game1.getMouseX() - (Game1.viewport.Width * .25f);
                                        float boxY      = Game1.getMouseY() - (Game1.viewport.Height * .05f);
                                        float boxWidth  = (Game1.viewport.Width * .25f);
                                        float boxHeight = (Game1.viewport.Height * .35f);
                                        Game1.drawDialogueBox((int)boxX, (int)boxY, (int)boxWidth, (int)boxHeight, false, true, null, false);

                                        float xText1XPos = boxX + (Game1.viewport.Width * .08f);
                                        float xText2XPos = boxX + (Game1.viewport.Width * .08f);
                                        if (s1.Length > 12)
                                        {
                                            s1         = "\n" + s1;
                                            xText1XPos = boxX + (Game1.viewport.Width * .025f);
                                        }

                                        if (s2.Length > 12)
                                        {
                                            s2         = "\n" + s2;
                                            xText2XPos = boxX + (Game1.viewport.Width * .025f);
                                        }
                                        if (s3.Length > 12)
                                        {
                                            s3         = "\n" + s3;
                                            xText1XPos = boxX + (Game1.viewport.Width * .025f);
                                        }

                                        Utility.drawTextWithShadow(Game1.spriteBatch, "Mod: ", Game1.smallFont, new Vector2(boxX + (Game1.viewport.Width * .025f), Game1.getMouseY() + (int)(Game1.viewport.Height * .1f)), Color.Black, 1, -1);
                                        Utility.drawTextWithShadow(Game1.spriteBatch, s3, Game1.smallFont, new Vector2(xText1XPos, Game1.getMouseY() + (int)(Game1.viewport.Height * .1f)), Color.Black, 1, -1);

                                        Utility.drawTextWithShadow(Game1.spriteBatch, "Class: ", Game1.smallFont, new Vector2(boxX + (Game1.viewport.Width * .025f), Game1.getMouseY() + (int)(Game1.viewport.Height * .2f)), Color.Black, 1, -1);
                                        Utility.drawTextWithShadow(Game1.spriteBatch, s2, Game1.smallFont, new Vector2(xText2XPos, Game1.getMouseY() + (int)(Game1.viewport.Height * .2f)), I.getCategoryColor(), 1, -1);
                                        b.End();
                                    }
                                    catch (Exception errr)
                                    {
                                        errr.ToString();
                                    }
                                }
                            }
                            //  if (v == null) continue;
                            // Log.AsyncC(v.name);
                            //  Log.AsyncM(v.item.Name);
                            // (s as StardewValley.Menus.InventoryPage).
                        }
                    }
                }
                catch (Exception err) //Try to parse a menu that isn't the default GameMenu
                {
                    err.ToString();
                    try
                    {
                        List <Item> inventory = (List <Item>)Game1.activeClickableMenu.GetType().GetProperty("inventory").GetValue(Game1.activeClickableMenu, null);
                    }
                    catch (Exception errr)
                    {
                        errr.ToString();
                        try
                        {
                            IClickableMenu s = (Game1.activeClickableMenu as ItemGrabMenu).ItemsToGrabMenu;
                            if (s == null)
                            {
                                return;
                            }
                            int i = 0;
                            foreach (var v in  s.allClickableComponents)
                            {
                                i++;
                                if (v.containsPoint(Game1.getMouseX(), Game1.getMouseY()))
                                {
                                    if (v == null || v.name == "")
                                    {
                                        continue;
                                    }
                                    string fire = v.name;

                                    bool num = true;
                                    foreach (var v2 in fire)
                                    {
                                        if (v2 != '0' && v2 != '1' && v2 != '2' && v2 != '3' && v2 != '4' && v2 != '5' && v2 != '6' && v2 != '7' && v2 != '8' && v2 != '9')
                                        {
                                            num = false;
                                            break;
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }

                                    ///NUM ISN't TRUE!?!?!?!?
                                    if (num == true)
                                    {
                                        int  inv = Convert.ToInt32(v.name);
                                        Item I   = (s as InventoryMenu).actualInventory[inv]; //Inventory Menu is the actual menu under ItemGrabMenu
                                        // Item I = (s as StardewValley.Menus.ItemGrabMenu).inventory.actualInventory[inv]; ///I isn't being grabbed???

                                        string s1 = parseModNameFromType(I.GetType());
                                        string s2 = parseClassNameFromType(I.GetType());
                                        string s3 = Assembly.GetAssembly(I.GetType()).Location;
                                        s3 = Path.GetFileName(s3);

                                        //Draw the info Box!
                                        try
                                        {
                                            float boxX      = Game1.getMouseX() - (Game1.viewport.Width * .25f);
                                            float boxY      = Game1.getMouseY() - (Game1.viewport.Height * .05f);
                                            float boxWidth  = (Game1.viewport.Width * .25f);
                                            float boxHeight = (Game1.viewport.Height * .35f);
                                            Game1.drawDialogueBox((int)boxX, (int)boxY, (int)boxWidth, (int)boxHeight, false, true, null, false);

                                            float xText1XPos = boxX + (Game1.viewport.Width * .08f);
                                            float xText2XPos = boxX + (Game1.viewport.Width * .08f);
                                            if (s1.Length > 12)
                                            {
                                                s1         = "\n" + s1;
                                                xText1XPos = boxX + (Game1.viewport.Width * .025f);
                                            }

                                            if (s2.Length > 12)
                                            {
                                                s2         = "\n" + s2;
                                                xText2XPos = boxX + (Game1.viewport.Width * .025f);
                                            }
                                            if (s3.Length > 12)
                                            {
                                                s3         = "\n" + s3;
                                                xText1XPos = boxX + (Game1.viewport.Width * .025f);
                                            }

                                            Utility.drawTextWithShadow(Game1.spriteBatch, "Mod: ", Game1.smallFont, new Vector2(boxX + (Game1.viewport.Width * .025f), Game1.getMouseY() + (int)(Game1.viewport.Height * .1f)), Color.Black, 1, -1);
                                            Utility.drawTextWithShadow(Game1.spriteBatch, s3, Game1.smallFont, new Vector2(xText1XPos, Game1.getMouseY() + (int)(Game1.viewport.Height * .1f)), Color.Black, 1, -1);

                                            Utility.drawTextWithShadow(Game1.spriteBatch, "Class: ", Game1.smallFont, new Vector2(boxX + (Game1.viewport.Width * .025f), Game1.getMouseY() + (int)(Game1.viewport.Height * .2f)), Color.Black, 1, -1);
                                            Utility.drawTextWithShadow(Game1.spriteBatch, s2, Game1.smallFont, new Vector2(xText2XPos, Game1.getMouseY() + (int)(Game1.viewport.Height * .2f)), I.getCategoryColor(), 1, -1);
                                        }
                                        catch (Exception errrr)
                                        {
                                            errrr.ToString();
                                        }
                                    }
                                }
                                //  if (v == null) continue;
                                // Log.AsyncC(v.name);
                                //  Log.AsyncM(v.item.Name);
                                // (s as StardewValley.Menus.InventoryPage).
                            }
                        }
                        catch (Exception errrr)
                        {
                            errrr.ToString();
                        }
                    }
                }
            }
        }