Cantrips are a thing and now the basics of the paint menu are operational
This commit is contained in:
parent
b6e9a9bb0b
commit
cb875991b3
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,545 @@
|
|||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using StardewValley;
|
||||
using StardewValley.Menus;
|
||||
using StardewValley.Minigames;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System;
|
||||
using Revitalize.Objects;
|
||||
using StardewModdingAPI;
|
||||
|
||||
namespace Revitalize.Menus
|
||||
{
|
||||
public class Pixel
|
||||
{
|
||||
public Color color;
|
||||
public ClickableTextureComponent component;
|
||||
|
||||
public Pixel(ClickableTextureComponent newComponent, Color newColor)
|
||||
{
|
||||
component = newComponent;
|
||||
color = newColor;
|
||||
}
|
||||
|
||||
public Pixel(ClickableTextureComponent newComponent, int Red = 255, int Green = 255, int Blue = 255, int Alpha = 255)
|
||||
{
|
||||
component = newComponent;
|
||||
color = new Color(Red, Green, Blue, Alpha);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PaintMenu : IClickableMenu
|
||||
{
|
||||
public const int colorPickerTimerDelay = 100;
|
||||
|
||||
private int colorPickerTimer;
|
||||
|
||||
private ColorPicker lightColorPicker;
|
||||
|
||||
private List<ClickableComponent> labels = new List<ClickableComponent>();
|
||||
|
||||
private List<ClickableComponent> leftSelectionButtons = new List<ClickableComponent>();
|
||||
|
||||
private List<ClickableComponent> rightSelectionButtons = new List<ClickableComponent>();
|
||||
|
||||
public List<Pixel> pixels = new List<Pixel>();
|
||||
|
||||
|
||||
public bool colorChanged;
|
||||
|
||||
private ClickableTextureComponent okButton;
|
||||
|
||||
private ClickableTextureComponent cancelButton;
|
||||
|
||||
private ClickableTextureComponent randomButton;
|
||||
|
||||
private TextBox nameBox;
|
||||
|
||||
private TextBox farmnameBox;
|
||||
|
||||
private TextBox favThingBox;
|
||||
|
||||
private bool skipIntro;
|
||||
|
||||
private bool wizardSource;
|
||||
|
||||
private string hoverText;
|
||||
|
||||
private string hoverTitle;
|
||||
|
||||
private ColorPicker lastHeldColorPicker;
|
||||
|
||||
public Canvas CanvasObject;
|
||||
|
||||
private int timesRandom;
|
||||
|
||||
public bool once;
|
||||
|
||||
public PaintMenu(Canvas Obj) : base(Game1.viewport.Width / 2 - (632 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2 - Game1.tileSize, 632 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2 + Game1.tileSize, false)
|
||||
{
|
||||
this.setUpPositions();
|
||||
this.CanvasObject = Obj;
|
||||
colorChanged = false;
|
||||
// this.height = this.height ;
|
||||
}
|
||||
|
||||
public override void gameWindowSizeChanged(Rectangle oldBounds, Rectangle newBounds)
|
||||
{
|
||||
base.gameWindowSizeChanged(oldBounds, newBounds);
|
||||
this.xPositionOnScreen = Game1.viewport.Width / 2 - (632 + IClickableMenu.borderWidth * 2) / 2;
|
||||
this.yPositionOnScreen = Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2 - Game1.tileSize;
|
||||
this.setUpPositions();
|
||||
}
|
||||
|
||||
private void setUpPositions()
|
||||
{
|
||||
|
||||
this.labels.Clear();
|
||||
|
||||
this.leftSelectionButtons.Clear();
|
||||
this.rightSelectionButtons.Clear();
|
||||
this.pixels = new List<Pixel>();
|
||||
this.okButton = new ClickableTextureComponent("OK", new Rectangle(this.xPositionOnScreen + this.width - IClickableMenu.borderWidth - IClickableMenu.spaceToClearSideBorder - Game1.tileSize, (this.yPositionOnScreen + this.height - IClickableMenu.borderWidth - IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4) / 3, Game1.tileSize, Game1.tileSize), null, null, Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46, -1, -1), 1f, false);
|
||||
|
||||
this.cancelButton = new ClickableTextureComponent("Cancel", new Rectangle(this.xPositionOnScreen + this.width / 4 - IClickableMenu.borderWidth - IClickableMenu.spaceToClearSideBorder - Game1.tileSize, (this.yPositionOnScreen + this.height - IClickableMenu.borderWidth - IClickableMenu.spaceToClearTopBorder + Game1.tileSize / 4) / 3, Game1.tileSize, Game1.tileSize), null, null, Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 47, -1, -1), 1f, false);
|
||||
this.randomButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen + Game1.pixelZoom * 12, this.yPositionOnScreen + Game1.tileSize + Game1.pixelZoom * 14, Game1.pixelZoom * 10, Game1.pixelZoom * 10), Game1.mouseCursors, new Rectangle(381, 361, 10, 10), (float)Game1.pixelZoom, false);
|
||||
int num = Game1.tileSize * 2;
|
||||
this.leftSelectionButtons.Add(new ClickableTextureComponent("Direction", new Rectangle(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth + Game1.tileSize / 4, this.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder + num, Game1.tileSize, Game1.tileSize), null, "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 44, -1, -1), 1f, false));
|
||||
this.rightSelectionButtons.Add(new ClickableTextureComponent("Direction", new Rectangle(this.xPositionOnScreen + Game1.tileSize / 4 + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth + Game1.tileSize * 2, this.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder + num, Game1.tileSize, Game1.tileSize), null, "", Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 33, -1, -1), 1f, false));
|
||||
if (!this.wizardSource)
|
||||
{
|
||||
//this.labels.Add(new ClickableComponent(new Rectangle(this.xPositionOnScreen + Game1.tileSize / 4 + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth + Game1.tileSize * 3 + 8, this.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder - Game1.tileSize / 8 + Game1.tileSize * 3, 1, 1), Game1.content.LoadString("Strings\\UI:Character_Animal", new object[0])));
|
||||
}
|
||||
this.labels.Add(new ClickableComponent(new Rectangle(this.xPositionOnScreen + Game1.tileSize / 4 + IClickableMenu.spaceToClearSideBorder + IClickableMenu.borderWidth + Game1.tileSize * 3 + 8, this.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder + 16, 1, 1), "Color"));
|
||||
this.lightColorPicker = new ColorPicker(this.xPositionOnScreen + IClickableMenu.spaceToClearSideBorder + Game1.tileSize * 5 + Game1.tileSize * 3 / 4 + IClickableMenu.borderWidth, this.yPositionOnScreen + IClickableMenu.borderWidth + IClickableMenu.spaceToClearTopBorder);
|
||||
num += Game1.tileSize + 8;
|
||||
for(int x=1; x<=8; x++)
|
||||
{
|
||||
for(int y=1; y<=8; y++)
|
||||
{
|
||||
this.pixels.Add(new Pixel(new ClickableTextureComponent("pixel", new Rectangle((int)(this.xPositionOnScreen*1.2f) + ((Game1.tileSize/2) * x),(int)( this.yPositionOnScreen *-2.0f)+ ((Game1.tileSize/2) * y) , Game1.tileSize/2, Game1.tileSize/2), null, null, Game1.content.Load<Texture2D>(Canvas.whiteTexture), new Rectangle(0, 0, 8, 8), 4f, false), Color.White));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
once = false;
|
||||
this.lightColorPicker.setColor(Color.White);
|
||||
}
|
||||
|
||||
private void optionButtonClick(string name)
|
||||
{
|
||||
|
||||
if (name == "Cancel")
|
||||
{
|
||||
Game1.exitActiveMenu();
|
||||
return;
|
||||
}
|
||||
|
||||
if (name == "OK")
|
||||
{
|
||||
if (colorChanged == false)
|
||||
{
|
||||
Game1.exitActiveMenu();
|
||||
return;
|
||||
}
|
||||
// StardewModdingAPI.Log.AsyncC(this.LightObject.lightColor);
|
||||
|
||||
this.lightColorPicker.setColor(CanvasObject.drawColor);
|
||||
|
||||
// StardewModdingAPI.Log.AsyncC(this.LightObject.lightColor);
|
||||
|
||||
|
||||
//UTIL FUNCTION TO GET CORRECT COLOR
|
||||
CanvasObject.drawColor = this.lightColorPicker.getSelectedColor();
|
||||
//LightObject.lightColor = Util.invertColor(LightObject.lightColor);
|
||||
|
||||
if (!this.canLeaveMenu())
|
||||
{
|
||||
return;
|
||||
}
|
||||
//Game1.player.Name = this.nameBox.Text.Trim();
|
||||
// Game1.player.favoriteThing = this.favThingBox.Text.Trim();
|
||||
|
||||
this.CanvasObject.isPainted = true;
|
||||
Game1.exitActiveMenu();
|
||||
if (Game1.currentMinigame != null && Game1.currentMinigame is Intro)
|
||||
{
|
||||
(Game1.currentMinigame as Intro).doneCreatingCharacter();
|
||||
}
|
||||
else if (this.wizardSource)
|
||||
{
|
||||
Game1.flashAlpha = 1f;
|
||||
Game1.playSound("yoba");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Game1.playSound("coin");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override void receiveLeftClick(int x, int y, bool playSound = true)
|
||||
{
|
||||
using (List<Pixel>.Enumerator enumerator = pixels.GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
ClickableTextureComponent clickableTextureComponent3 = (ClickableTextureComponent)enumerator.Current.component;
|
||||
if (clickableTextureComponent3.containsPoint(x, y))
|
||||
{
|
||||
enumerator.Current.color = lightColorPicker.getSelectedColor();
|
||||
// Log.AsyncM("WOOOOOO");
|
||||
// clickableTextureComponent3.scale = Math.Min(clickableTextureComponent3.scale + 0.02f, clickableTextureComponent3.baseScale + 0.1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// clickableTextureComponent3.scale = Math.Max(clickableTextureComponent3.scale - 0.02f, clickableTextureComponent3.baseScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.okButton.containsPoint(x, y) && this.canLeaveMenu())
|
||||
{
|
||||
this.optionButtonClick(this.okButton.name);
|
||||
this.okButton.scale -= 0.25f;
|
||||
this.okButton.scale = Math.Max(0.75f, this.okButton.scale);
|
||||
}
|
||||
|
||||
if (this.cancelButton.containsPoint(x, y))
|
||||
{
|
||||
this.optionButtonClick(this.cancelButton.name);
|
||||
this.cancelButton.scale -= 0.25f;
|
||||
this.cancelButton.scale = Math.Max(0.75f, this.cancelButton.scale);
|
||||
}
|
||||
|
||||
else if (this.lightColorPicker.containsPoint(x, y))
|
||||
{
|
||||
|
||||
CanvasObject.drawColor = this.lightColorPicker.click(x, y);
|
||||
CanvasObject.drawColor = Util.invertColor(CanvasObject.drawColor);
|
||||
// LightObject.lightColor = Util.invertColor(LightObject.lightColor);
|
||||
this.lastHeldColorPicker = this.lightColorPicker;
|
||||
colorChanged = true;
|
||||
}
|
||||
|
||||
if (this.randomButton.containsPoint(x, y))
|
||||
{
|
||||
string cueName = "drumkit6";
|
||||
if (this.timesRandom > 0)
|
||||
{
|
||||
switch (Game1.random.Next(15))
|
||||
{
|
||||
case 0:
|
||||
cueName = "drumkit1";
|
||||
break;
|
||||
case 1:
|
||||
cueName = "dirtyHit";
|
||||
break;
|
||||
case 2:
|
||||
cueName = "axchop";
|
||||
break;
|
||||
case 3:
|
||||
cueName = "hoeHit";
|
||||
break;
|
||||
case 4:
|
||||
cueName = "fishSlap";
|
||||
break;
|
||||
case 5:
|
||||
cueName = "drumkit6";
|
||||
break;
|
||||
case 6:
|
||||
cueName = "drumkit5";
|
||||
break;
|
||||
case 7:
|
||||
cueName = "drumkit6";
|
||||
break;
|
||||
case 8:
|
||||
cueName = "junimoMeep1";
|
||||
break;
|
||||
case 9:
|
||||
cueName = "coin";
|
||||
break;
|
||||
case 10:
|
||||
cueName = "axe";
|
||||
break;
|
||||
case 11:
|
||||
cueName = "hammer";
|
||||
break;
|
||||
case 12:
|
||||
cueName = "drumkit2";
|
||||
break;
|
||||
case 13:
|
||||
cueName = "drumkit4";
|
||||
break;
|
||||
case 14:
|
||||
cueName = "drumkit3";
|
||||
break;
|
||||
}
|
||||
}
|
||||
Game1.playSound(cueName);
|
||||
this.timesRandom++;
|
||||
if (Game1.random.NextDouble() < 0.33)
|
||||
{
|
||||
if (Game1.player.isMale)
|
||||
{
|
||||
// Game1.player.changeAccessory(Game1.random.Next(19));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Game1.player.changeAccessory(Game1.random.Next(6, 19));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Game1.player.changeAccessory(-1);
|
||||
}
|
||||
if (Game1.player.isMale)
|
||||
{
|
||||
//Game1.player.changeHairStyle(Game1.random.Next(16));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Game1.player.changeHairStyle(Game1.random.Next(16, 32));
|
||||
}
|
||||
Color c = new Color(Game1.random.Next(25, 254), Game1.random.Next(25, 254), Game1.random.Next(25, 254));
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c.R /= 2;
|
||||
c.G /= 2;
|
||||
c.B /= 2;
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c.R = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c.G = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c.B = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
|
||||
if (Game1.random.NextDouble() < 0.25)
|
||||
{
|
||||
//Game1.player.changeSkinColor(Game1.random.Next(24));
|
||||
}
|
||||
Color color = new Color(Game1.random.Next(25, 254), Game1.random.Next(25, 254), Game1.random.Next(25, 254));
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
color.R /= 2;
|
||||
color.G /= 2;
|
||||
color.B /= 2;
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
color.R = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
color.G = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
color.B = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
//Game1.player.changePants(color);
|
||||
Color c2 = new Color(Game1.random.Next(25, 254), Game1.random.Next(25, 254), Game1.random.Next(25, 254));
|
||||
c2.R /= 2;
|
||||
c2.G /= 2;
|
||||
c2.B /= 2;
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c2.R = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c2.G = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
if (Game1.random.NextDouble() < 0.5)
|
||||
{
|
||||
c2.B = (byte)Game1.random.Next(15, 50);
|
||||
}
|
||||
//Game1.player.changeEyeColor(c2);
|
||||
this.randomButton.scale = (float)Game1.pixelZoom - 0.5f;
|
||||
|
||||
|
||||
// c2 = Util.invertColor(c2);
|
||||
colorChanged = true;
|
||||
this.lightColorPicker.setColor(c2);
|
||||
this.CanvasObject.drawColor = Util.invertColor(c2);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public override void leftClickHeld(int x, int y)
|
||||
{
|
||||
this.colorPickerTimer -= Game1.currentGameTime.ElapsedGameTime.Milliseconds;
|
||||
if (this.colorPickerTimer <= 0)
|
||||
{
|
||||
if (this.lastHeldColorPicker != null)
|
||||
{
|
||||
|
||||
if (this.lastHeldColorPicker.Equals(this.lightColorPicker))
|
||||
{
|
||||
colorChanged = true;
|
||||
this.CanvasObject.drawColor = Util.invertColor(this.lightColorPicker.clickHeld(x, y));
|
||||
}
|
||||
}
|
||||
this.colorPickerTimer = 100;
|
||||
}
|
||||
}
|
||||
|
||||
public override void releaseLeftClick(int x, int y)
|
||||
{
|
||||
|
||||
this.lightColorPicker.releaseClick();
|
||||
this.lastHeldColorPicker = null;
|
||||
}
|
||||
|
||||
public override void receiveRightClick(int x, int y, bool playSound = true)
|
||||
{
|
||||
}
|
||||
|
||||
public override void receiveKeyPress(Keys key)
|
||||
{
|
||||
if (!this.wizardSource && key == Keys.Tab)
|
||||
{
|
||||
if (this.nameBox.Selected)
|
||||
{
|
||||
this.farmnameBox.SelectMe();
|
||||
this.nameBox.Selected = false;
|
||||
return;
|
||||
}
|
||||
if (this.farmnameBox.Selected)
|
||||
{
|
||||
this.farmnameBox.Selected = false;
|
||||
this.favThingBox.SelectMe();
|
||||
return;
|
||||
}
|
||||
this.favThingBox.Selected = false;
|
||||
this.nameBox.SelectMe();
|
||||
}
|
||||
}
|
||||
|
||||
public override void performHoverAction(int x, int y)
|
||||
{
|
||||
this.hoverText = "";
|
||||
this.hoverTitle = "";
|
||||
using (List<ClickableComponent>.Enumerator enumerator = this.leftSelectionButtons.GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
ClickableTextureComponent clickableTextureComponent = (ClickableTextureComponent)enumerator.Current;
|
||||
if (clickableTextureComponent.containsPoint(x, y))
|
||||
{
|
||||
clickableTextureComponent.scale = Math.Min(clickableTextureComponent.scale + 0.02f, clickableTextureComponent.baseScale + 0.1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
clickableTextureComponent.scale = Math.Max(clickableTextureComponent.scale - 0.02f, clickableTextureComponent.baseScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
using (List<ClickableComponent>.Enumerator enumerator = this.rightSelectionButtons.GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
ClickableTextureComponent clickableTextureComponent2 = (ClickableTextureComponent)enumerator.Current;
|
||||
if (clickableTextureComponent2.containsPoint(x, y))
|
||||
{
|
||||
clickableTextureComponent2.scale = Math.Min(clickableTextureComponent2.scale + 0.02f, clickableTextureComponent2.baseScale + 0.1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
clickableTextureComponent2.scale = Math.Max(clickableTextureComponent2.scale - 0.02f, clickableTextureComponent2.baseScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (this.okButton.containsPoint(x, y) && this.canLeaveMenu())
|
||||
{
|
||||
this.okButton.scale = Math.Min(this.okButton.scale + 0.02f, this.okButton.baseScale + 0.1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.okButton.scale = Math.Max(this.okButton.scale - 0.02f, this.okButton.baseScale);
|
||||
}
|
||||
|
||||
|
||||
if (this.cancelButton.containsPoint(x, y))
|
||||
{
|
||||
this.cancelButton.scale = Math.Min(this.cancelButton.scale + 0.02f, this.cancelButton.baseScale + 0.1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.cancelButton.scale = Math.Max(this.cancelButton.scale - 0.02f, this.cancelButton.baseScale);
|
||||
}
|
||||
this.randomButton.tryHover(x, y, 0.25f);
|
||||
this.randomButton.tryHover(x, y, 0.25f);
|
||||
}
|
||||
|
||||
public bool canLeaveMenu()
|
||||
{
|
||||
return this.wizardSource || (Game1.player.name.Length > 0 && Game1.player.farmName.Length > 0 && Game1.player.favoriteThing.Length > 0);
|
||||
}
|
||||
|
||||
public override void draw(SpriteBatch b)
|
||||
{
|
||||
Game1.drawDialogueBox(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, false, true, null, false);
|
||||
foreach (ClickableComponent current in this.labels)
|
||||
{
|
||||
string text = "";
|
||||
Color color = Game1.textColor;
|
||||
|
||||
Utility.drawTextWithShadow(b, current.name, Game1.smallFont, new Vector2((float)current.bounds.X, (float)current.bounds.Y), color, 1f, -1f, -1, -1, 1f, 3);
|
||||
if (text.Length > 0)
|
||||
{
|
||||
Utility.drawTextWithShadow(b, text, Game1.smallFont, new Vector2((float)(current.bounds.X + Game1.tileSize / 3) - Game1.smallFont.MeasureString(text).X / 2f, (float)(current.bounds.Y + Game1.tileSize / 2)), color, 1f, -1f, -1, -1, 1f, 3);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var v in this.pixels)
|
||||
{
|
||||
v.component.draw(b,v.color,1f);
|
||||
}
|
||||
this.cancelButton.draw(b, Color.White, 0.75f);
|
||||
|
||||
if (this.canLeaveMenu())
|
||||
{
|
||||
this.okButton.draw(b, Color.White, 0.75f);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.okButton.draw(b, Color.White, 0.75f);
|
||||
this.okButton.draw(b, Color.Black * 0.5f, 0.751f);
|
||||
}
|
||||
|
||||
this.lightColorPicker.draw(b);
|
||||
|
||||
if (this.hoverText != null && this.hoverTitle != null && this.hoverText.Count<char>() > 0)
|
||||
{
|
||||
IClickableMenu.drawHoverText(b, Game1.parseText(this.hoverText, Game1.smallFont, Game1.tileSize * 4), Game1.smallFont, 0, 0, -1, this.hoverTitle, -1, null, null, 0, -1, -1, -1, -1, 1f, null);
|
||||
}
|
||||
this.randomButton.draw(b);
|
||||
|
||||
if (once == false)
|
||||
{
|
||||
Color c = Util.invertColor(CanvasObject.drawColor);
|
||||
|
||||
this.lightColorPicker.setColor(c);
|
||||
once = true;
|
||||
}
|
||||
|
||||
base.drawMouse(b);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -341,6 +341,7 @@ namespace Revitalize
|
|||
objShopList.Add(new StardewValley.Object(498, 1));
|
||||
objShopList.Add(new StardewValley.Object(770, 1));
|
||||
|
||||
objShopList.Add(new Canvas(0, Vector2.Zero, Canvas.blankTexture));
|
||||
|
||||
objShopList.Add(new StardewValley.Object(475, 1));
|
||||
foreach (var v in objShopList)
|
||||
|
|
|
@ -42,8 +42,22 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.warpFarmer("Farm", 64, 16, false);
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
|
||||
public static void warpHorse(Spell s)
|
||||
{
|
||||
NPC horse= Utility.findHorse();
|
||||
if (horse == null) return;
|
||||
const int baseCost = 20;
|
||||
//calculate all costs then factor in player proficiency
|
||||
int cost = (int)(((((baseCost) + s.spellCostModifierInt) * s.spellCostModifierPercent) * (1f - PlayerVariables.MagicProficiency)) - PlayerVariables.MagicLevel); //+s.extraCostInt-s.spellSaveInt * (1f- PlayerVariables.MagicProficiency) / s.extraCostPercent* s.spellSavePercent;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
Game1.warpCharacter(horse, Game1.player.currentLocation.name, Game1.player.getTileLocationPoint(), false, true);
|
||||
}
|
||||
|
||||
|
||||
public static void sunnyWeather(Spell s)
|
||||
{
|
||||
const int baseCost = 35;
|
||||
|
@ -54,12 +68,13 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
{
|
||||
Game1.weatherForTomorrow = Game1.weather_sunny;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
Game1.showGlobalMessage("It's already going to be sunny tomorrow.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void rainyWeather(Spell s)
|
||||
|
@ -72,12 +87,13 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
{
|
||||
Game1.weatherForTomorrow = Game1.weather_rain;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
Game1.showGlobalMessage("It's already going to be rainy tomorrow.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void stormyWeather(Spell s)
|
||||
|
@ -90,12 +106,13 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
{
|
||||
Game1.weatherForTomorrow = Game1.weather_lightning;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
else
|
||||
{
|
||||
Game1.showGlobalMessage("It's already going to be stormy tomorrow.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -109,6 +126,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
int cost = (int)(((((baseCost) + s.spellCostModifierInt) * s.spellCostModifierPercent) * (1f - PlayerVariables.MagicProficiency)) - PlayerVariables.MagicLevel); //+s.extraCostInt-s.spellSaveInt * (1f- PlayerVariables.MagicProficiency) / s.extraCostPercent* s.spellSavePercent;
|
||||
Game1.showRedMessage("MAGIC WORKS");
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
|
||||
|
||||
|
@ -131,6 +149,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.health += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -148,6 +167,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.health += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -165,7 +185,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.health += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
/// <summary>
|
||||
/// Restore 70% of health.
|
||||
|
@ -182,7 +202,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.health += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
/// <summary>
|
||||
/// Restore 10% of stamina.
|
||||
|
@ -199,7 +219,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.stamina += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -217,7 +237,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.stamina += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
/// <summary>
|
||||
/// Restore 50% of stamina.
|
||||
|
@ -234,7 +254,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.stamina += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
/// <summary>
|
||||
/// Restore 70% of stamina.
|
||||
|
@ -251,7 +271,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.stamina += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
/// <summary>
|
||||
/// Restore 100% of stamina.
|
||||
|
@ -268,7 +288,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
Game1.player.stamina += healAmount;
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -296,6 +316,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
|
||||
}
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -327,6 +348,7 @@ namespace Revitalize.Magic.MagicFunctions
|
|||
Game1.playSound("slosh");
|
||||
DelayedAction.playSoundAfterDelay("glug", 250);
|
||||
MagicMonitor.consumeMagic(cost);
|
||||
MagicMonitor.consumeUsage(s);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -119,6 +119,23 @@ namespace Revitalize.Magic
|
|||
|
||||
}
|
||||
|
||||
public static void consumeUsage(Spell s)
|
||||
{
|
||||
if (s.usesRemaining == -1) return;
|
||||
else
|
||||
{
|
||||
s.usesRemaining -= 1;
|
||||
if (s.usesRemaining == 0)
|
||||
{
|
||||
Game1.player.reduceActiveItemByOne();
|
||||
}
|
||||
else
|
||||
{
|
||||
s.description = s.vanillaDescription += "\nUses Remaining: " + s.usesRemaining;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void gainMagicExperience(int f)
|
||||
{
|
||||
PlayerVariables.MagicExperience += f;
|
||||
|
|
|
@ -27,6 +27,11 @@ namespace Revitalize.Objects
|
|||
public float spellCostModifierPercent;
|
||||
|
||||
public int spellIndex;
|
||||
|
||||
public string vanillaDescription;
|
||||
public int usesRemaining;
|
||||
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get
|
||||
|
@ -121,7 +126,23 @@ namespace Revitalize.Objects
|
|||
this.spellCostModifierInt = Convert.ToInt32(array[6]);
|
||||
int meh = Convert.ToInt32(array[7]);
|
||||
this.spellCostModifierPercent = meh / 100;
|
||||
this.description = array[8];
|
||||
this.vanillaDescription = array[8];
|
||||
try
|
||||
{
|
||||
this.usesRemaining = Convert.ToInt32(array[9]);
|
||||
}
|
||||
catch(Exception err)
|
||||
{
|
||||
this.usesRemaining = -1;
|
||||
}
|
||||
if (usesRemaining == -1)
|
||||
{
|
||||
this.description = vanillaDescription;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.description = this.vanillaDescription += "\nUses Remaining: " + usesRemaining;
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
|
|
@ -50,6 +50,8 @@
|
|||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Aesthetics\Paint\Objects\Canvas.cs" />
|
||||
<Compile Include="Aesthetics\Paint\PaintMenu.cs" />
|
||||
<Compile Include="Aesthetics\WeatherDebris\WeatherDebrisPlus.cs" />
|
||||
<Compile Include="Aesthetics\WeatherDebris\WeatherDebrisSystem.cs" />
|
||||
<Compile Include="Magic\Alchemy\Menus\ExpandableItemGrabMenu.cs" />
|
||||
|
@ -98,6 +100,7 @@
|
|||
<Compile Include="Util.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Aesthetics\Paint\Utilities\" />
|
||||
<Folder Include="Persistance\Configs\" />
|
||||
<Folder Include="TerrainFeatures\" />
|
||||
</ItemGroup>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 182 B |
|
@ -0,0 +1,21 @@
|
|||
|
||||
xnbData:
|
||||
target: "w"
|
||||
compressed: true
|
||||
hiDef: true
|
||||
readerData:
|
||||
-
|
||||
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||
version: 0
|
||||
|
||||
|
||||
numSharedResources: 0
|
||||
|
||||
content: #!Texture2D
|
||||
format: 0
|
||||
|
||||
extractedImages:
|
||||
-
|
||||
path: ""
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 157 B |
|
@ -0,0 +1,21 @@
|
|||
|
||||
xnbData:
|
||||
target: "w"
|
||||
compressed: true
|
||||
hiDef: true
|
||||
readerData:
|
||||
-
|
||||
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||
version: 0
|
||||
|
||||
|
||||
numSharedResources: 0
|
||||
|
||||
content: #!Texture2D
|
||||
format: 0
|
||||
|
||||
extractedImages:
|
||||
-
|
||||
path: ""
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 147 B |
|
@ -0,0 +1,21 @@
|
|||
|
||||
xnbData:
|
||||
target: "w"
|
||||
compressed: true
|
||||
hiDef: true
|
||||
readerData:
|
||||
-
|
||||
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||
version: 0
|
||||
|
||||
|
||||
numSharedResources: 0
|
||||
|
||||
content: #!Texture2D
|
||||
format: 0
|
||||
|
||||
extractedImages:
|
||||
-
|
||||
path: ""
|
||||
|
||||
|
Loading…
Reference in New Issue