Stardew_Valley_Mods/GeneralMods/SaveAnywhere/Player_Utilities.cs

170 lines
6.2 KiB
C#

using StardewModdingAPI;
using StardewValley;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Save_Anywhere_V2.Save_Utilities
{
class Player_Utilities
{
public static int player_x_tile;
public static int player_y_tile;
public static string players_current_map_name;
public static int player_game_time;
public static int player_facing_direction;
public static bool has_player_warped_yet;
public static void get_player_info()
{
get_x();
get_y();
get_current_map_name();
get_facing_direction();
}
public static void get_x()
{
player_x_tile=Game1.player.getTileX();
}
public static void get_y()
{
player_y_tile = Game1.player.getTileY();
}
public static void get_current_map_name()
{
players_current_map_name = Game1.player.currentLocation.name;
}
public static void get_facing_direction()
{
player_facing_direction = Game1.player.facingDirection;
}
public static void save_player_info()
{
get_player_info();
string name = StardewValley.Game1.player.name;
Save_Anywhere_V2.Mod_Core.player_path= Path.Combine(Save_Anywhere_V2.Mod_Core.mod_path, "Save_Data", name);
if (!Directory.Exists(Save_Anywhere_V2.Mod_Core.player_path)){
Directory.CreateDirectory(Save_Anywhere_V2.Mod_Core.player_path);
}
string mylocation = Path.Combine(Save_Anywhere_V2.Mod_Core.player_path, "Player_Save_Info_");
string mylocation2 = mylocation + name;
string mylocation3 = mylocation2 + ".txt";
string[] mystring3 = new string[20];
if (!File.Exists(mylocation3))
{
Mod_Core.thisMonitor.Log("Save Anywhere: The custom character save info doesn't exist. It will be created when the custom saving method is run. Which is now.", LogLevel.Info);
//write out the info to a text file at the end of a day. This will run if it doesnt exist.
mystring3[0] = "Player: Save_Anywhere Info. Editing this might break some things.";
mystring3[1] = "====================================================================================";
mystring3[2] = "Player Current Game Time";
mystring3[3] = Game1.timeOfDay.ToString();
mystring3[4] = "Player Current Map Name";
mystring3[5] = players_current_map_name.ToString();
mystring3[6] = "Player X Position";
mystring3[7] = player_x_tile.ToString();
mystring3[8] = "Player Y Position";
mystring3[9] = player_y_tile.ToString();
File.WriteAllLines(mylocation3, mystring3);
}
else
{
//write out the info to a text file at the end of a day. This will run if it doesnt exist.
mystring3[0] = "Player: Save_Anywhere Info. Editing this might break some things.";
mystring3[1] = "====================================================================================";
mystring3[2] = "Player Current Game Time";
mystring3[3] = Game1.timeOfDay.ToString();
mystring3[4] = "Player Current Map Name";
mystring3[5] = players_current_map_name.ToString();
mystring3[6] = "Player X Position";
mystring3[7] = player_x_tile.ToString();
mystring3[8] = "Player Y Position";
mystring3[9] = player_y_tile.ToString();
File.WriteAllLines(mylocation3, mystring3);
}
}
public static void load_player_info()
{
string name = StardewValley.Game1.player.name;
Save_Anywhere_V2.Mod_Core.player_path = Path.Combine(Save_Anywhere_V2.Mod_Core.mod_path, "Save_Data", name);
if (!Directory.Exists(Save_Anywhere_V2.Mod_Core.player_path))
{
Directory.CreateDirectory(Save_Anywhere_V2.Mod_Core.player_path);
}
string mylocation = Path.Combine(Save_Anywhere_V2.Mod_Core.player_path, "Player_Save_Info_");
string mylocation2 = mylocation + name;
string mylocation3 = mylocation2 + ".txt";
string[] mystring3 = new string[20];
if (!File.Exists(mylocation3)) //if not data.json exists, initialize the data variables to the ModConfig data. I.E. starting out.
{
// Console.WriteLine("Can't load custom save info since the file doesn't exist.");
Save_Anywhere_V2.Save_Utilities.Player_Utilities.has_player_warped_yet = true;
}
else
{
// Console.WriteLine("HEY THERE IM LOADING DATA");
string[] readtext = File.ReadAllLines(mylocation3);
player_game_time = Convert.ToInt32(readtext[3]);
players_current_map_name = Convert.ToString(readtext[5]);
player_x_tile = Convert.ToInt32(readtext[7]);
player_y_tile = Convert.ToInt32(readtext[9]);
Game1.timeOfDay = player_game_time;
}
}
public static void warp_player()
{
GameLocation new_location = Game1.getLocationFromName(players_current_map_name);
Game1.player.previousLocationName = Game1.player.currentLocation.name;
Game1.locationAfterWarp = new_location;
Game1.xLocationAfterWarp = player_x_tile;
Game1.yLocationAfterWarp = player_y_tile;
Game1.facingDirectionAfterWarp = player_facing_direction;
Game1.fadeScreenToBlack();
Game1.warpFarmer(players_current_map_name, player_x_tile, player_y_tile, false);
Mod_Core.thisMonitor.Log("WARP THE PLAYER");
Game1.player.faceDirection(player_facing_direction);
if (Directory.Exists(Mod_Core.player_path))
{
// Directory.Delete(player_path, true);
}
}
}
}