diff --git a/AnimalChooser/Animal.cs b/AnimalChooser/Animal.cs
new file mode 100644
index 0000000..01782f5
--- /dev/null
+++ b/AnimalChooser/Animal.cs
@@ -0,0 +1,14 @@
+namespace AnimalChooser
+{
+ internal enum Animal
+ {
+ None = 0,
+ Chicken,
+ Cow,
+ Pig,
+ Goat,
+ Sheep,
+ Rabbit,
+ Duck
+ }
+}
\ No newline at end of file
diff --git a/AnimalChooser/AnimalChooser.csproj b/AnimalChooser/AnimalChooser.csproj
index 066f677..1c86f78 100644
--- a/AnimalChooser/AnimalChooser.csproj
+++ b/AnimalChooser/AnimalChooser.csproj
@@ -11,8 +11,6 @@
AnimalChooser
v4.5
512
-
-
true
@@ -49,6 +47,9 @@
prompt
MinimumRecommendedRules.ruleset
+
+
+
@@ -60,16 +61,11 @@
+
-
-
-
-
-
-
@@ -115,11 +111,4 @@
-
-
-
- This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/AnimalChooser/ModEntry.cs b/AnimalChooser/ModEntry.cs
index 6fbc0e9..11a810c 100644
--- a/AnimalChooser/ModEntry.cs
+++ b/AnimalChooser/ModEntry.cs
@@ -13,21 +13,10 @@ namespace AnimalChooser
public class ModEntry : Mod {
private ModConfig Config;
- private const int CHICKEN = 0;
- private const int COW = 1;
- private const int PIG = 2;
- private const int GOAT = 3;
- private const int SHEEP = 4;
- private const int RABBIT = 5;
- private const int DUCK = 6;
-
-
-
-
private bool choosingAnimal = false;
private bool drawAnimal = false;
- private int currentAnimalType = -1;
+ private Animal currentAnimal = Animal.None;
private int heartLevel = 0;
private int chickenIndex = 0;
private int cowIndex = 0;
@@ -88,22 +77,25 @@ public override void Entry(IModHelper helper) {
animalData = Game1.content.Load>("Data\\FarmAnimals");
- InputEvents.ButtonPressed += InputEvents_ButtonPressed;
- ControlEvents.MouseChanged += ControlEvents_MouseChanged;
- MenuEvents.MenuChanged += MenuEvents_MenuChanged;
- GraphicsEvents.OnPostRenderEvent += GraphicsEvents_OnPostRenderEvent;
- GameEvents.OneSecondTick += GameEvents_OneSecondTick;
+ helper.Events.Input.ButtonPressed += OnButtonPressed;
+ helper.Events.Input.MouseWheelScrolled += OnMouseWheelScrolled;
+ helper.Events.Display.MenuChanged += OnMenuChanged;
+ helper.Events.Display.Rendered += OnRendered;
+ helper.Events.GameLoop.OneSecondUpdateTicked += OnOneSecondUpdateTicked;
}
- private void ControlEvents_MouseChanged(object sender, EventArgsMouseStateChanged e) {
+ /// Raised after the player scrolls the mouse wheel.
+ /// The event sender.
+ /// The event arguments.
+ private void OnMouseWheelScrolled(object sender, MouseWheelScrolledEventArgs e) {
if (!drawAnimal) {
return;
}
- if (e.NewState.ScrollWheelValue < e.PriorState.ScrollWheelValue && heartLevel > 0) {
+ if (e.Delta < 0 && heartLevel > 0) {
heartLevel -= 1;
- } else if (e.NewState.ScrollWheelValue > e.PriorState.ScrollWheelValue && heartLevel < 5) {
+ } else if (e.Delta > 0 && heartLevel < 5) {
heartLevel += 1;
} else {
return;
@@ -112,7 +104,10 @@ private void ControlEvents_MouseChanged(object sender, EventArgsMouseStateChange
Game1.playSound("smallSelect");
}
- private void GameEvents_OneSecondTick(object sender, EventArgs e) {
+ /// Raised once per second after the game state is updated.
+ /// The event sender.
+ /// The event arguments.
+ private void OnOneSecondUpdateTicked(object sender, OneSecondUpdateTickedEventArgs e) {
if (!choosingAnimal) {
return;
@@ -123,9 +118,9 @@ private void GameEvents_OneSecondTick(object sender, EventArgs e) {
FarmAnimal animal = Helper.Reflection.GetField(Game1.activeClickableMenu, "animalBeingPurchased").GetValue();
if (animal != null) {
- if (currentAnimalType == CHICKEN) {
+ if (currentAnimal == Animal.Chicken) {
animal.type.Value = chickens[chickenIndex];
- } else if (currentAnimalType == COW) {
+ } else if (currentAnimal == Animal.Cow) {
animal.type.Value = cows[cowIndex];
}
}
@@ -134,7 +129,10 @@ private void GameEvents_OneSecondTick(object sender, EventArgs e) {
drawAnimal = true;
}
- private void GraphicsEvents_OnPostRenderEvent(object sender, EventArgs e) {
+ /// Raised after the game draws to the sprite patch in a draw tick, just before the final sprite batch is rendered to the screen.
+ /// The event sender.
+ /// The event arguments.
+ private void OnRendered(object sender, RenderedEventArgs e) {
if (!choosingAnimal) {
return;
@@ -148,17 +146,17 @@ private void GraphicsEvents_OnPostRenderEvent(object sender, EventArgs e) {
int dx;
int w = 64;
int h = 64;
- switch (currentAnimalType) {
- case CHICKEN:
- case DUCK:
- case RABBIT:
+ switch (currentAnimal) {
+ case Animal.Chicken:
+ case Animal.Duck:
+ case Animal.Rabbit:
dx = 24;
dy += 24;
break;
- case COW:
- case GOAT:
- case PIG:
- case SHEEP:
+ case Animal.Cow:
+ case Animal.Goat:
+ case Animal.Pig:
+ case Animal.Sheep:
dx = 64;
dy += 88;
w = 128;
@@ -171,14 +169,14 @@ private void GraphicsEvents_OnPostRenderEvent(object sender, EventArgs e) {
int mx = Game1.getMouseX();
int my = Game1.getMouseY();
Texture2D texture = chickenTextures[0];
- switch (currentAnimalType) {
- case CHICKEN: texture = chickenTextures[chickenIndex]; break;
- case COW: texture = cowTextures[cowIndex]; break;
- case DUCK: texture = duckTextures[0]; break;
- case RABBIT: texture = rabbitTextures[0]; break;
- case GOAT: texture = goatTextures[0]; break;
- case PIG: texture = pigTextures[0]; break;
- case SHEEP: texture = sheepTextures[0]; break;
+ switch (currentAnimal) {
+ case Animal.Chicken: texture = chickenTextures[chickenIndex]; break;
+ case Animal.Cow: texture = cowTextures[cowIndex]; break;
+ case Animal.Duck: texture = duckTextures[0]; break;
+ case Animal.Rabbit: texture = rabbitTextures[0]; break;
+ case Animal.Goat: texture = goatTextures[0]; break;
+ case Animal.Pig: texture = pigTextures[0]; break;
+ case Animal.Sheep: texture = sheepTextures[0]; break;
}
Game1.spriteBatch.Draw(texture, new Rectangle(mx - dx, my - 64 - dy, w, h), Color.White);
@@ -190,7 +188,10 @@ private void GraphicsEvents_OnPostRenderEvent(object sender, EventArgs e) {
}
}
- private void InputEvents_ButtonPressed(object sender, EventArgsInput e) {
+ /// Raised after the player presses a button on the keyboard, controller, or mouse.
+ /// The event sender.
+ /// The event arguments.
+ private void OnButtonPressed(object sender, ButtonPressedEventArgs e) {
if (e.Button == SButton.Escape || e.Button == SButton.E) {
choosingAnimal = false;
@@ -222,21 +223,21 @@ private void InputEvents_ButtonPressed(object sender, EventArgsInput e) {
if (type != null) {
choosingAnimal = true;
if (type.Contains("Chicken")) {
- currentAnimalType = CHICKEN;
+ currentAnimal = Animal.Chicken;
} else if (type.Contains("Cow")) {
- currentAnimalType = COW;
+ currentAnimal = Animal.Cow;
} else if (type.Contains("Pig")) {
- currentAnimalType = PIG;
+ currentAnimal = Animal.Pig;
} else if (type.Contains("Goat")) {
- currentAnimalType = GOAT;
+ currentAnimal = Animal.Goat;
} else if (type.Contains("Sheep")) {
- currentAnimalType = SHEEP;
+ currentAnimal = Animal.Sheep;
} else if (type.Contains("Rabbit")) {
- currentAnimalType = RABBIT;
+ currentAnimal = Animal.Rabbit;
} else if (type.Contains("Duck")) {
- currentAnimalType = DUCK;
+ currentAnimal = Animal.Duck;
} else {
- currentAnimalType = -1;
+ currentAnimal = Animal.None;
choosingAnimal = false;
}
break;
@@ -246,7 +247,7 @@ private void InputEvents_ButtonPressed(object sender, EventArgsInput e) {
}
}
- if (currentAnimalType < 0) {
+ if (currentAnimal == Animal.None) {
return;
}
@@ -261,20 +262,20 @@ private void InputEvents_ButtonPressed(object sender, EventArgsInput e) {
}
if (leftOrRight) {
- switch (currentAnimalType) {
- case CHICKEN:
+ switch (currentAnimal) {
+ case Animal.Chicken:
chickenIndex = (delta + chickenIndex + chickens.Count) % chickens.Count;
while (!IsChickenTypeUnlocked(chickenIndex)) {
chickenIndex = (delta + chickenIndex + chickens.Count) % chickens.Count;
}
break;
- case COW:
+ case Animal.Cow:
cowIndex = (delta + cowIndex + cows.Count) % cows.Count;
break;
}
- if (currentAnimalType == CHICKEN || currentAnimalType == COW) {
- animal.displayType = (currentAnimalType == CHICKEN) ? chickens[chickenIndex] : cows[cowIndex];
+ if (currentAnimal == Animal.Chicken || currentAnimal == Animal.Cow) {
+ animal.displayType = (currentAnimal == Animal.Chicken) ? chickens[chickenIndex] : cows[cowIndex];
}
}
}
@@ -293,9 +294,12 @@ private bool IsChickenTypeUnlocked(int type) {
}
}
- private void MenuEvents_MenuChanged(object sender, EventArgsClickableMenuChanged e) {
+ /// Raised after a game menu is opened, closed, or replaced.
+ /// The event sender.
+ /// The event arguments.
+ private void OnMenuChanged(object sender, MenuChangedEventArgs e) {
- if (e.PriorMenu is PurchaseAnimalsMenu menu2) {
+ if (e.OldMenu is PurchaseAnimalsMenu menu2) {
FarmAnimal animal = Helper.Reflection.GetField(menu2, "animalBeingPurchased").GetValue();
if (animal != null) {
@@ -341,9 +345,6 @@ private void MenuEvents_MenuChanged(object sender, EventArgsClickableMenuChanged
} else {
Monitor.Log($"data is null - key: {key}", LogLevel.Info);
}
-
-
-
}
}
choosingAnimal = false;
diff --git a/AnimalChooser/manifest.json b/AnimalChooser/manifest.json
index 841e0ea..e8066ee 100644
--- a/AnimalChooser/manifest.json
+++ b/AnimalChooser/manifest.json
@@ -1,10 +1,10 @@
{
- "Name": "AnimalChooser",
+ "Name": "Animal Chooser",
"Author": "stokastic",
"Version": "1.3",
"Description": "Allows manual selection of animal colour for cows and chickens",
"UniqueID": "stokastic.AnimalChooser",
"EntryDll": "AnimalChooser.dll",
- "MinimumApiVersion": "2.7",
+ "MinimumApiVersion": "2.10.1",
"UpdateKeys": [ "Nexus:2573" ]
}
\ No newline at end of file
diff --git a/AnimalChooser/packages.config b/AnimalChooser/packages.config
deleted file mode 100644
index 27dbac7..0000000
--- a/AnimalChooser/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file