Skip to content

Commit 5cc25ec

Browse files
committed
Updated player and config
Re-added PlayerDefinition config UI. Working version. Should double check SinglePlayerReload(prepareClient) and MP.
1 parent 39f72b9 commit 5cc25ec

24 files changed

Lines changed: 1413 additions & 563 deletions

Common/Configs/Config.cs

Lines changed: 121 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,159 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.ComponentModel;
4-
using ModReloader.Common.Configs.ConfigElements.ModsConfigElements;
5-
using ModReloader.Common.Configs.ConfigElements.PlayerAndWorld;
1+
using ModReloader.Common.Configs.ConfigElements.ModsConfigElements;
2+
using ModReloader.Common.Configs.ConfigElements.PlayerPicker;
3+
using ModReloader.Common.Configs.ConfigElements.WorldPicker;
64
using ModReloader.Core.Features.MainMenuFeatures;
75
using ModReloader.Core.Features.Reload;
6+
using System;
7+
using System.Collections.Generic;
8+
using System.ComponentModel;
9+
using System.Threading.Channels;
810
using Terraria.ModLoader.Config;
911

10-
namespace ModReloader.Common.Configs
12+
namespace ModReloader.Common.Configs;
13+
public class Config : ModConfig
1114
{
12-
public class Config : ModConfig
13-
{
14-
public override ConfigScope Mode => ConfigScope.ClientSide;
15+
public override ConfigScope Mode => ConfigScope.ClientSide;
1516

16-
[Header("ModsToReload")]
17+
[Header("ModsToReload")]
1718

18-
[CustomModConfigItem(typeof(ModSourcesConfig))]
19-
public List<string> ModsToReload = [];
19+
[CustomModConfigItem(typeof(ModSourcesConfig))]
20+
public List<string> ModsToReload = [];
2021

21-
[Header("ReloadOptions")]
22+
[Header("ReloadOptions")]
2223

23-
[CustomModConfigItem(typeof(PlayerIndexSliderElement))]
24-
[DefaultValue("")]
25-
public string Player; // player index in Main.PlayerList
24+
[CustomModConfigItem(typeof(PlayerDefinitionElement))]
25+
public PlayerDefinition Player = new();
2626

27-
[CustomModConfigItem(typeof(WorldIndexSliderElement))]
28-
public string World; // world index in Main.WorldList
27+
[CustomModConfigItem(typeof(WorldDefinitionElement))]
28+
public WorldDefinition World = new();
2929

30-
[DefaultValue(true)]
31-
public bool AutoJoinWorld;
30+
// Used for testing, do not delete!
31+
//public NPCDefinition NPCTest;
3232

33-
[DefaultValue(true)]
34-
public bool SaveWorld;
33+
//[CustomModConfigItem(typeof(WorldIndexSliderElement))]
34+
//public string World; // world index in Main.WorldList
3535

36-
[Header("ExtraInfo")]
36+
[DefaultValue(true)]
37+
public bool AutoJoinWorld;
3738

38-
[DefaultValue(true)]
39-
public bool ShowDebugInfo;
39+
[DefaultValue(true)]
40+
public bool SaveWorld;
4041

41-
[DefaultValue(true)]
42-
public bool ShowMainMenuInfo;
42+
[Header("ExtraInfo")]
4343

44-
[DefaultValue(true)]
45-
public bool ShowErrorMenuInfo;
44+
[DefaultValue(true)]
45+
public bool ShowDebugInfo;
4646

47-
[DefaultValue(true)]
48-
public bool ShowCopyToClipboardButton;
47+
[DefaultValue(true)]
48+
public bool ShowMainMenuInfo;
4949

50-
[DefaultValue(true)]
51-
public bool ShowBackToMainMenu;
50+
[DefaultValue(true)]
51+
public bool ShowErrorMenuInfo;
5252

53-
public enum WorldSize { ExtraSmall, Small, Medium, Large }
54-
[DrawTicks]
55-
[DefaultValue(WorldSize.Small)]
56-
public WorldSize CreateTestWorldSize;
53+
[DefaultValue(true)]
54+
public bool ShowCopyToClipboardButton;
5755

58-
public enum WorldDifficulty { Normal, Expert, Master, Journey }
59-
[DrawTicks]
60-
[DefaultValue(WorldDifficulty.Normal)]
61-
public WorldDifficulty CreateTestWorldDifficulty;
56+
[DefaultValue(true)]
57+
public bool ShowBackToMainMenu;
6258

63-
[Header("Misc")]
59+
public enum WorldSize { ExtraSmall, Small, Medium, Large }
60+
[DrawTicks]
61+
[DefaultValue(WorldSize.Small)]
62+
public WorldSize CreateTestWorldSize;
6463

65-
[DefaultValue(true)]
66-
public bool RightClickToolOptions;
64+
public enum WorldDifficulty { Normal, Expert, Master, Journey }
65+
[DrawTicks]
66+
[DefaultValue(WorldDifficulty.Normal)]
67+
public WorldDifficulty CreateTestWorldDifficulty;
6768

68-
[DefaultValue(true)]
69-
public bool LogLevelPersistOnReloads;
69+
[Header("Misc")]
7070

71-
[DefaultValue(false)]
72-
public bool ClearLogOnReload;
71+
[DefaultValue(true)]
72+
public bool RightClickToolOptions;
7373

74-
[DefaultValue(true)]
75-
public bool LogDebugMessages;
74+
[DefaultValue(true)]
75+
public bool LogLevelPersistOnReloads;
7676

77-
public override void OnChanged()
78-
{
79-
base.OnChanged();
80-
UpdateMainMenuReloadTooltip();
81-
}
77+
[DefaultValue(false)]
78+
public bool ClearLogOnReload;
79+
80+
[DefaultValue(true)]
81+
public bool LogDebugMessages;
82+
83+
public override void OnLoaded()
84+
{
85+
base.OnLoaded();
86+
EnsureDefaultPlayerAndWorld();
87+
}
88+
89+
public override void OnChanged()
90+
{
91+
Log.Info("Config changed");
92+
93+
base.OnChanged();
94+
UpdateMainMenuReloadTooltip();
95+
}
96+
97+
private void UpdateMainMenuReloadTooltip()
98+
{
99+
var mainMenuSys = ModContent.GetInstance<MainMenuSystem>();
100+
if (mainMenuSys?.state == null)
101+
return;
102+
103+
Main.LoadPlayers();
104+
Main.LoadWorlds();
105+
106+
int p = Conf.C.Player != null ? Utilities.FindPlayerId(Conf.C.Player.Name) : 0;
107+
int w = Conf.C.World != null ? Utilities.FindWorldId(Conf.C.World.Name) : 0;
82108

83-
private void UpdateMainMenuReloadTooltip()
109+
mainMenuSys.state.UpdatePlayerIndex(p);
110+
mainMenuSys.state.UpdateWorldIndex(w);
111+
}
112+
113+
private void EnsureDefaultPlayerAndWorld()
114+
{
115+
bool changed = false;
116+
117+
// Player
118+
if (Player == null)
84119
{
85-
// Update reload tooltip
86-
var mainMenuSys = ModContent.GetInstance<MainMenuSystem>();
87-
if (mainMenuSys == null)
120+
Main.LoadPlayers();
121+
122+
if (Main.PlayerList.Count > 0)
88123
{
89-
Log.Info("main menu sys is null!");
90-
return;
124+
Player = new PlayerDefinition(Main.PlayerList[0].Path);
125+
Log.Info("Default player set to: " + Player.Name);
126+
changed = true;
91127
}
92-
var state = mainMenuSys.state;
93-
if (state == null) return;
128+
}
94129

95-
Main.LoadPlayers();
130+
// World
131+
if (World == null)
132+
{
96133
Main.LoadWorlds();
97134

98-
int p = Utilities.FindPlayerId(Conf.C.Player);
99-
int w = Utilities.FindWorldId(Conf.C.World);
135+
if (Main.WorldList.Count > 0)
136+
{
137+
World = new WorldDefinition(Main.WorldList[0].Path);
138+
Log.Info("Default world set to: " + Main.WorldList[0].Name);
139+
changed = true;
140+
}
141+
}
100142

101-
state.UpdatePlayerIndex(p);
102-
state.UpdateWorldIndex(w);
143+
if (changed)
144+
{
145+
ConfigManager.Save(this);
146+
SaveChanges();
103147
}
104148
}
105149

106-
public static class Conf
107-
{
108-
/// <summary>
109-
/// Quick instance getter.
110-
/// Usage example: Conf.C.YourField
111-
/// /// </summary>
112-
public static Config C => ModContent.GetInstance<Config>();
113-
}
150+
}
151+
152+
public static class Conf
153+
{
154+
/// <summary>
155+
/// Quick instance getter.
156+
/// Usage example: Conf.C.YourField
157+
/// /// </summary>
158+
public static Config C => ModContent.GetInstance<Config>();
114159
}

Common/Configs/ConfigElements/PlayerAndWorld/IntPathOptionElement.cs

Lines changed: 0 additions & 95 deletions
This file was deleted.

0 commit comments

Comments
 (0)