using System.Diagnostics.CodeAnalysis;
using StardewValley;
namespace StardewModdingAPI.Mods.ConsoleCommands.Framework.Commands.Player
{
/// A command which edits a player style.
[SuppressMessage("ReSharper", "UnusedMember.Global", Justification = "Loaded using reflection")]
internal class SetStyleCommand : ConsoleCommand
{
/*********
** Public methods
*********/
/// Construct an instance.
public SetStyleCommand()
: base("player_changestyle", "Sets the style of a player feature.\n\nUsage: player_changestyle .\n- target: what to change (one of 'hair', 'shirt', 'skin', 'acc', 'shoe', 'swim', or 'gender').\n- value: the integer style ID.") { }
/// Handle the command.
/// Writes messages to the console and log file.
/// The command name.
/// The command arguments.
public override void Handle(IMonitor monitor, string command, ArgumentParser args)
{
// parse arguments
if (!args.TryGet(0, "target", out string? target, oneOf: new[] { "hair", "shirt", "acc", "skin", "shoe", "swim", "gender" }))
return;
if (!args.TryGetInt(1, "style ID", out int styleID))
return;
// handle
switch (target)
{
case "hair":
Game1.player.changeHairStyle(styleID);
monitor.Log("OK, your hair style is updated.", LogLevel.Info);
break;
case "shirt":
Game1.player.changeShirt(styleID);
monitor.Log("OK, your shirt style is updated.", LogLevel.Info);
break;
case "acc":
Game1.player.changeAccessory(styleID);
monitor.Log("OK, your accessory style is updated.", LogLevel.Info);
break;
case "skin":
Game1.player.changeSkinColor(styleID);
monitor.Log("OK, your skin color is updated.", LogLevel.Info);
break;
case "shoe":
Game1.player.changeShoeColor(styleID);
monitor.Log("OK, your shoe style is updated.", LogLevel.Info);
break;
case "swim":
switch (styleID)
{
case 0:
Game1.player.changeOutOfSwimSuit();
monitor.Log("OK, you're no longer in your swimming suit.", LogLevel.Info);
break;
case 1:
Game1.player.changeIntoSwimsuit();
monitor.Log("OK, you're now in your swimming suit.", LogLevel.Info);
break;
default:
this.LogUsageError(monitor, "The swim value should be 0 (no swimming suit) or 1 (swimming suit).");
break;
}
break;
case "gender":
switch (styleID)
{
case 0:
Game1.player.changeGender(true);
monitor.Log("OK, you're now male.", LogLevel.Info);
break;
case 1:
Game1.player.changeGender(false);
monitor.Log("OK, you're now female.", LogLevel.Info);
break;
default:
this.LogUsageError(monitor, "The gender value should be 0 (male) or 1 (female).");
break;
}
break;
}
}
}
}