2019-12-08 09:54:49 +08:00
using System ;
2018-12-30 18:00:05 +08:00
using System.Collections.Generic ;
2018-12-30 13:01:20 +08:00
using System.IO ;
2017-09-13 02:20:18 +08:00
using StardewModdingAPI ;
2019-12-07 05:31:10 +08:00
using StardewValley ;
2018-06-13 14:25:36 +08:00
using StardustCore.UIUtilities ;
2018-03-30 20:46:24 +08:00
using StardustCore.UIUtilities.SpriteFonts ;
2017-07-14 11:27:48 +08:00
2017-09-05 19:13:42 +08:00
namespace StardustCore
2017-07-14 11:27:48 +08:00
{
2017-09-05 19:13:42 +08:00
public class ModCore : Mod
2017-07-14 11:27:48 +08:00
{
2017-09-12 09:35:31 +08:00
public static IModHelper ModHelper ;
public static IMonitor ModMonitor ;
2018-08-09 04:18:51 +08:00
public static IManifest Manifest ;
2018-12-30 13:01:20 +08:00
public static TextureManager TextureManager ;
2018-08-09 04:18:51 +08:00
public static Dictionary < string , TextureManager > TextureManagers ;
2018-08-21 04:53:56 +08:00
public ModConfig config ;
2018-02-06 17:27:28 +08:00
public static string ContentDirectory ;
2018-12-30 18:00:05 +08:00
/// <summary>The mod entry point, called after the mod is first loaded.</summary>
/// <param name="helper">Provides simplified APIs for writing mods.</param>
2017-09-12 09:35:31 +08:00
public override void Entry ( IModHelper helper )
{
2018-12-30 13:01:20 +08:00
ModHelper = this . Helper ;
ModMonitor = this . Monitor ;
Manifest = this . ModManifest ;
2018-12-16 12:54:58 +08:00
2017-11-17 15:07:30 +08:00
IlluminateFramework . Colors . initializeColors ( ) ;
2020-01-28 06:59:37 +08:00
ContentDirectory = "ModAssets" ;
if ( ! Directory . Exists ( ContentDirectory ) ) Directory . CreateDirectory ( Path . Combine ( ModHelper . DirectoryPath , "Assets" ) ) ;
2018-03-30 20:46:24 +08:00
SpriteFonts . initialize ( ) ;
2018-06-13 09:42:31 +08:00
2018-08-09 04:18:51 +08:00
TextureManagers = new Dictionary < string , TextureManager > ( ) ;
2019-07-16 17:09:42 +08:00
TextureManager = new TextureManager ( "StardustCore" ) ;
2020-01-28 06:59:37 +08:00
//TextureManager.addTexture("Test1", new Texture2DExtended(ModCore.ModHelper,Manifest,Path.Combine("Assets", "Graphics", "MultiTest", "Test1.png")));
//TextureManager.addTexture("Test2", new Texture2DExtended(ModCore.ModHelper,Manifest, Path.Combine("Assets", "Graphics", "MultiTest", "Test2.png")));
//TextureManager.addTexture("Test3", new Texture2DExtended(ModCore.ModHelper, Manifest,Path.Combine("Assets", "Graphics", "MultiTest", "Test3.png")));
2018-12-30 13:01:20 +08:00
TextureManagers . Add ( this . ModManifest . UniqueID , TextureManager ) ;
2018-12-16 12:54:58 +08:00
2019-12-07 05:31:10 +08:00
this . Helper . Events . GameLoop . GameLaunched + = this . GameLoop_GameLaunched ;
2019-12-08 09:54:49 +08:00
this . Helper . ConsoleCommands . Add ( "Omegasis.StardustCore.ModdingUtilities.AddFriendship" , "Adds a certain amount of friendship to the given npc. <name , amount>" , AddNPCFriendship ) ;
2018-12-30 13:01:20 +08:00
this . config = ModHelper . ReadConfig < ModConfig > ( ) ;
2017-09-12 09:35:31 +08:00
}
2019-07-16 17:09:42 +08:00
2019-12-07 05:31:10 +08:00
private void GameLoop_GameLaunched ( object sender , StardewModdingAPI . Events . GameLaunchedEventArgs e )
{
2020-01-28 06:59:37 +08:00
//string soundbankPath=Path.Combine(Game1.content.RootDirectory, "XACT", "Sound Bank.xsb");
//Directory.CreateDirectory(Path.Combine(this.Helper.DirectoryPath, "ProcessedGameFiles"));
2019-12-07 05:31:10 +08:00
//this.Monitor.Log(Utilities.HexDumper.HexDumpString(soundbankPath), LogLevel.Info);
2020-01-28 06:59:37 +08:00
//Utilities.HexDumper.StripSoundCuesToFile(Path.Combine(this.Helper.DirectoryPath, "ProcessedGameFiles", "SoundCues.json"),Utilities.HexDumper.StripSoundCuesFromHex(Utilities.HexDumper.HexDumpString(soundbankPath)));
2019-12-07 05:31:10 +08:00
//Utilities.HexDumper.HexDumpFile(soundbankPath, Path.Combine(this.Helper.DirectoryPath, "ProcessedGameFiles", "SoundCuesRaw.json"));
}
2019-07-16 17:09:42 +08:00
public static void log ( string message )
{
ModMonitor . Log ( message ) ;
}
2019-12-08 09:54:49 +08:00
public static void AddNPCFriendship ( string ActionName , string [ ] Params )
{
string npcName = Params [ 0 ] ;
int amount = Convert . ToInt32 ( Params [ 1 ] ) ;
if ( Game1 . player . friendshipData . ContainsKey ( npcName ) ) {
Game1 . player . friendshipData [ npcName ] . Points + = amount ;
}
else
{
Game1 . player . friendshipData . Add ( npcName , new Friendship ( amount ) ) ;
}
}
2017-07-14 11:27:48 +08:00
}
}