//handles all the things. public override void Entry(IModHelper helper) { //set the static instance variable. is this an oxymoron? instance = this; //preserve this entry method's helper class because it's.. helpful. instance.eeHelper = helper; //read the config file, poached from horse whistles, get the configured keys and settings Config = helper.ReadConfig <ConfigurationModel>(); //add handler for the "transmute/copy" button. ControlEvents.KeyPressed += ControlEvents_KeyPressed; //exclusively to figure out if ctrl or shift have been let go of. ControlEvents.KeyReleased += ControlEvents_KeyReleased; //wire up the library scraping function to occur on save-loading to defer recipe scraping until all mods are loaded, optimistically. SaveEvents.AfterLoad += SaveEvents_AfterLoad; //we need this to save our alchemists['] data SaveEvents.BeforeSave += SaveEvents_BeforeSave; //set texture files in memory, they're tiny things. DrawingUtil.HandleTextureCaching(); //trying something completely different from a patched event hook... //gonna try using this to detect the night event heuristically. GameEvents.UpdateTick += GameEvents_UpdateTick; //wire up the PreRenderHUD event so I can display info bubbles when needed GraphicsEvents.OnPreRenderHudEvent += GraphicsEvents_OnPreRenderHudEvent; //check for experience bars mod: if it's here we draw hud elements for the new alchemy skill CheckForExperienceBarsMod(); if (hasExperienceBarsMod) { GraphicsEvents.OnPostRenderHudEvent += GraphicsEvents_OnPostRenderHudEvent; } //check for all professions mod: if it's here we run a wireup to give the player all skills professions at the right time (or after), when present. CheckForAllProfessionsMod(); if (hasAllProfessionsMod) { LocationEvents.CurrentLocationChanged += LocationEvents_CurrentLocationChanged;; } //add a debug option to give yourself experience Helper.ConsoleCommands.Add("player_givealchemyexp", "player_givealchemyexp <amount>", GiveAlchemyExperience); //post render event for skills menu GraphicsEvents.OnPostRenderGuiEvent += DrawAfterGUI; //check for chase's skills checkForLuck(); checkForCooking(); }
public override void draw(SpriteBatch b) { if (this.timerBeforeStart > 0) { return; } b.Draw(Game1.fadeToBlackRect, new Rectangle(0, 0, Game1.viewport.Width, Game1.viewport.Height), Color.Black * 0.5f); foreach (TemporaryAnimatedSprite current in this.littleStars) { current.draw(b, false, 0, 0); } b.Draw(Game1.mouseCursors, new Vector2((float)(this.xPositionOnScreen + this.width / 2 - 58 * Game1.pixelZoom / 2), (float)(this.yPositionOnScreen - Game1.tileSize / 2 + Game1.pixelZoom * 3)), new Rectangle?(new Rectangle(363, 87, 58, 22)), Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, 1f); if (this.informationUp) { if (this.isProfessionChooser) { Game1.drawDialogueBox(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, false, true, null, false); base.drawHorizontalPartition(b, this.yPositionOnScreen + Game1.tileSize * 3, false); base.drawVerticalIntersectingPartition(b, this.xPositionOnScreen + this.width / 2 - Game1.tileSize / 2, this.yPositionOnScreen + Game1.tileSize * 3); Utility.drawWithShadow(b, DrawingUtil.alchemySkillIconBordered, new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), this.sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, false, 0.88f, -1, -1, 0.35f); b.DrawString(Game1.dialogueFont, this.title, new Vector2((float)(this.xPositionOnScreen + this.width / 2) - Game1.dialogueFont.MeasureString(this.title).X / 2f, (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), Game1.textColor); Utility.drawWithShadow(b, DrawingUtil.alchemySkillIconBordered, new Vector2((float)(this.xPositionOnScreen + this.width - IClickableMenu.spaceToClearSideBorder - IClickableMenu.borderWidth - Game1.tileSize), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), this.sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, false, 0.88f, -1, -1, 0.35f); b.DrawString(Game1.smallFont, "Choose a profession:", new Vector2((float)(this.xPositionOnScreen + this.width / 2) - Game1.smallFont.MeasureString("Choose a profession:").X / 2f, (float)(this.yPositionOnScreen + Game1.tileSize + IClickableMenu.spaceToClearTopBorder)), Game1.textColor); b.DrawString(Game1.dialogueFont, this.leftProfessionDescription[0], new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + Game1.tileSize / 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize * 5 / 2)), this.leftProfessionColor); Texture2D textureA = DrawingUtil.GetProfessionTexture(professionsToChoose[0]); b.Draw(textureA, new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + 24 + this.width / 2 - Game1.tileSize * 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize * 5 / 2 - Game1.tileSize / 4)), sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1f); for (int i = 1; i < this.leftProfessionDescription.Count <string>(); i++) { b.DrawString(Game1.smallFont, Game1.parseText(this.leftProfessionDescription[i], Game1.smallFont, this.width / 2 - 64), new Vector2((float)(-4 + this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + Game1.tileSize / 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize + 12 + Game1.tileSize * (i + 1))), this.leftProfessionColor); } b.DrawString(Game1.dialogueFont, this.rightProfessionDescription[0], new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + this.width / 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize * 5 / 2)), this.rightProfessionColor); Texture2D textureB = DrawingUtil.GetProfessionTexture(professionsToChoose[1]); b.Draw(textureB, new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + this.width - Game1.tileSize * 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize * 5 / 2 - Game1.tileSize / 4)), sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, 4f, SpriteEffects.None, 1f); for (int j = 1; j < this.rightProfessionDescription.Count <string>(); j++) { b.DrawString(Game1.smallFont, Game1.parseText(this.rightProfessionDescription[j], Game1.smallFont, this.width / 2 - 48), new Vector2((float)(-4 + this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + this.width / 2), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize + 12 + Game1.tileSize * (j + 1))), this.rightProfessionColor); } } else { Game1.drawDialogueBox(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, false, true, null, false); Utility.drawWithShadow(b, DrawingUtil.alchemySkillIconBordered, new Vector2((float)(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), this.sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, false, 0.88f, -1, -1, 0.35f); b.DrawString(Game1.dialogueFont, this.title, new Vector2((float)(this.xPositionOnScreen + this.width / 2) - Game1.dialogueFont.MeasureString(this.title).X / 2f, (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), Game1.textColor); Utility.drawWithShadow(b, DrawingUtil.alchemySkillIconBordered, new Vector2((float)(this.xPositionOnScreen + this.width - IClickableMenu.spaceToClearSideBorder - IClickableMenu.borderWidth - Game1.tileSize), (float)(this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4)), this.sourceRectForLevelIcon, Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, false, 0.88f, -1, -1, 0.35f); int num = this.yPositionOnScreen + IClickableMenu.spaceToClearTopBorder + Game1.tileSize * 5 / 4; foreach (string current2 in this.extraInfoForLevel) { b.DrawString(Game1.smallFont, current2, new Vector2((float)(this.xPositionOnScreen + this.width / 2) - Game1.smallFont.MeasureString(current2).X / 2f, (float)num), Game1.textColor); num += Game1.tileSize * 3 / 4; } this.okButton.draw(b); } base.drawMouse(b); } }
//handles all the things. public override void Entry(IModHelper helper) { //set the static instance variable. is this an oxymoron? instance = this; //read the config file, poached from horse whistles, get the configured keys and settings Config = helper.ReadConfig <ConfigurationModel>(); //add handler for the "transmute/copy" button. ControlEvents.KeyPressed += ControlEvents_KeyPressed; //exclusively to figure out if ctrl or shift have been let go of. ControlEvents.KeyReleased += ControlEvents_KeyReleased; //wire up the library scraping function to occur on save-loading to defer recipe scraping until all mods are loaded, optimistically. SaveEvents.AfterLoad += SaveEvents_AfterLoad; //we need this to save our alchemists['] data SaveEvents.BeforeSave += SaveEvents_BeforeSave; //set texture files in memory, they're tiny things. DrawingUtil.HandleTextureCaching(); //handles high resolution update ticks, like regeneration and held keys. GameEvents.UpdateTick += GameEvents_UpdateTick; //wire up the PreRenderHUD event so I can display info bubbles when needed GraphicsEvents.OnPreRenderHudEvent += GraphicsEvents_OnPreRenderHudEvent; // handles end of night event requirements like alchemy energy being restored and level ups. SpaceEvents.ShowNightEndMenus += SpaceEvents_ShowNightEndMenus; // stuff we have to do for multiplayer now, handles client join events to cascade data to the non-hosts. SpaceEvents.ServerGotClient += SpaceEvents_ServerGotClient; // handle looking out for the slime gift to the wizard that gates the alchemy content SpaceEvents.AfterGiftGiven += SpaceEvents_AfterGiftGiven; Networking.RegisterMessageHandler(MSG_DATA, OnDataMessage); Networking.RegisterMessageHandler(MSG_EXPERIENCE, OnExpMessage); Networking.RegisterMessageHandler(MSG_LEVEL, OnLevelMessage); Networking.RegisterMessageHandler(MSG_CURRENT_ENERGY, OnCurrentEnergyMessage); Networking.RegisterMessageHandler(MSG_MAX_ENERGY, OnMaxEnergyMessage); Networking.RegisterMessageHandler(MSG_TOTAL_VALUE_TRANSMUTED, OnTransmutedValueMessage); Networking.RegisterMessageHandler(MSG_REGEN_TICK, OnRegenTick); Networking.RegisterMessageHandler(MSG_IS_SLIME_GIVEN_TO_WIZARD, OnSlimeGivenToWizardMessage); Skills.RegisterSkill(skill = new AlchemySkill()); }
public override void performHoverAction(int x, int y) { this.hoverText = ""; this.hoverTitle = ""; this.professionImage = null; foreach (ClickableTextureComponent skillBar in this.skillBars) { skillBar.scale = (float)Game1.pixelZoom; if (skillBar.containsPoint(x, y) && skillBar.hoverText.Length > 0 && !skillBar.name.Equals("-1")) { this.hoverText = AlchemyLevelUpMenu.GetProfessionDescription(Convert.ToInt32(skillBar.name)); this.hoverTitle = Professions.GetProfessionTitleFromNumber(Convert.ToInt32(skillBar.name)); this.professionImage = DrawingUtil.GetProfessionTexture(Convert.ToInt32(skillBar.name)); skillBar.scale = 0.0f; } } foreach (ClickableTextureComponent skillArea in this.skillAreas) { if (skillArea.containsPoint(x, y) && skillArea.hoverText.Length > 0) { this.hoverText = skillArea.hoverText; this.hoverTitle = skillArea.name; break; } } if (this.playerPanel.Contains(x, y)) { this.playerPanelTimer = this.playerPanelTimer - Game1.currentGameTime.ElapsedGameTime.Milliseconds; if (this.playerPanelTimer > 0) { return; } this.playerPanelIndex = (this.playerPanelIndex + 1) % 4; this.playerPanelTimer = 150; } else { this.playerPanelIndex = 0; } }
//hooked for drawing the experience bar on screen when experience bars mod is present. private void GraphicsEvents_OnPostRenderHudEvent(object sender, EventArgs e) { DrawingUtil.DoPostRenderHudEvent(); }