Skip to content

Commit a30e360

Browse files
authored
Add APMQ file support to WinForm (#103)
* WinForm overhaul * some fixes * Fix WinForm * More WinForm fix * Add yaml processing
1 parent e5b8cad commit a30e360

25 files changed

+2701
-676
lines changed

FFMQRLib/Archipelago.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public ApConfigs()
7777
Version = "";
7878
FileName = "";
7979
}
80-
public void ProcessYaml()
80+
public bool ProcessYaml()
8181
{
8282
var deserializer = new DeserializerBuilder()
8383
.WithNamingConvention(UnderscoredNamingConvention.Instance)
@@ -123,7 +123,13 @@ public void ProcessYaml()
123123
Console.WriteLine(ex.ToString());
124124
}
125125

126+
if (Version != "1.5" && Version != "1.6")
127+
{
128+
return false;
129+
}
130+
126131
ApEnabled = true;
132+
return true;
127133
}
128134
public void CopySetup(ApConfigs inputConfigs)
129135
{

FFMQRLib/Flags.cs

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,65 @@ public Blob EncodedFlagString()
101101
return Encoding.UTF8.GetBytes(GenerateFlagString());
102102
}
103103

104+
public bool SetToggleFlag(string flagname, bool value)
105+
{
106+
var flaglist = this.GetType().GetProperties();
107+
if (flaglist.TryFind(f => f.Name == flagname, out var flag))
108+
{
109+
flag.SetValue(this, value);
110+
return true;
111+
}
112+
else
113+
{
114+
return false;
115+
}
116+
}
117+
public bool GetToggleFlag(string flagname)
118+
{
119+
var flaglist = this.GetType().GetProperties();
120+
if (flaglist.TryFind(f => f.Name == flagname, out var flag))
121+
{
122+
return Convert.ToBoolean(flag.GetValue(this, null));
123+
}
124+
else
125+
{
126+
return false;
127+
}
128+
}
129+
public bool SetEnumFlag(string flagname, int value)
130+
{
131+
var flaglist = this.GetType().GetProperties();
132+
if (flaglist.TryFind(f => f.Name == flagname, out var flag))
133+
{
134+
var enumValues = flag.PropertyType.GetEnumValues();
135+
foreach (var enumValue in enumValues)
136+
{
137+
if (Convert.ToUInt32(enumValue) == (uint)value)
138+
{
139+
flag.SetValue(this, enumValue);
140+
return true;
141+
}
142+
}
143+
return false;
144+
}
145+
else
146+
{
147+
return false;
148+
}
149+
}
150+
public int GetEnumFlag(string flagname)
151+
{
152+
var flaglist = this.GetType().GetProperties();
153+
if (flaglist.TryFind(f => f.Name == flagname, out var flag))
154+
{
155+
return Convert.ToInt32(flag.GetValue(this, null));
156+
}
157+
else
158+
{
159+
return -1;
160+
}
161+
}
162+
104163
public void ReadFlagString(string flagstring)
105164
{
106165
flagstring = flagstring.Replace('-', '+').Replace('_', '/').Replace('~', '=');
@@ -375,7 +434,6 @@ public class Preferences
375434
public MusicMode MusicMode { get; set; } = MusicMode.Normal;
376435
public bool DarkKingTrueForm { get; set; } = false;
377436
public ushort WindowPalette { get; set; } = 0x5140;
378-
public bool DumpGameInfoScreen { get; set; } = false;
379437
public bool ReduceBattleFlash { get; set; } = false;
380438
public bool AutoDownloadRom { get; set; } = false;
381439
public string PlayerSprite { get; set; } = "default";

FFMQRWin/App.config

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,55 @@
22
<configuration>
33
<configSections>
44
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
5+
<section name="FFMQRWin.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
56
<section name="FFMQRWin.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
67
</sectionGroup>
78
</configSections>
89
<userSettings>
10+
<FFMQRWin.Settings>
11+
<setting name="LastFlagset" serializeAs="String">
12+
<value />
13+
</setting>
14+
<setting name="RomFileLocation" serializeAs="String">
15+
<value />
16+
</setting>
17+
<setting name="LastMode" serializeAs="String">
18+
<value>0</value>
19+
</setting>
20+
<setting name="ApmqSavePath" serializeAs="String">
21+
<value />
22+
</setting>
23+
<setting name="CustomSavePath" serializeAs="String">
24+
<value />
25+
</setting>
26+
<setting name="FavoredPath" serializeAs="String">
27+
<value>0</value>
28+
</setting>
29+
<setting name="RandomBenjaminPalette" serializeAs="String">
30+
<value>False</value>
31+
</setting>
32+
<setting name="MusicMode" serializeAs="String">
33+
<value>0</value>
34+
</setting>
35+
<setting name="DarkKingTrueForm" serializeAs="String">
36+
<value>False</value>
37+
</setting>
38+
<setting name="ReduceBattleFlash" serializeAs="String">
39+
<value>False</value>
40+
</setting>
41+
<setting name="PlayerSprite" serializeAs="String">
42+
<value />
43+
</setting>
44+
<setting name="CustomSpritesLocation" serializeAs="String">
45+
<value />
46+
</setting>
47+
<setting name="RomSavePath" serializeAs="String">
48+
<value />
49+
</setting>
50+
<setting name="AutoCloseOnSuccess" serializeAs="String">
51+
<value>False</value>
52+
</setting>
53+
</FFMQRWin.Settings>
954
<FFMQRWin.Settings1>
1055
<setting name="LastFlagset" serializeAs="String">
1156
<value />

FFMQRWin/CustomControls.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using FFMQLib;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Threading.Tasks;
6+
using System.Windows.Forms;
7+
8+
namespace FFMQRWin
9+
{
10+
public class FlagCheckBox : CheckBox
11+
{
12+
public Flags Flags;
13+
public TextBox FlagstringBox;
14+
protected override void OnCheckedChanged(EventArgs e)
15+
{
16+
base.OnCheckedChanged(e);
17+
Flags.SetToggleFlag(base.Name.Split(".")[1], Checked);
18+
FlagstringBox.Text = Flags.GenerateFlagString();
19+
}
20+
}
21+
public class FlagComboBox : ComboBox
22+
{
23+
public Flags Flags;
24+
public TextBox FlagstringBox;
25+
protected override void OnSelectedIndexChanged(EventArgs e)
26+
{
27+
base.OnSelectedIndexChanged(e);
28+
Flags.SetEnumFlag(base.Name.Split(".")[1], SelectedIndex);
29+
FlagstringBox.Text = Flags.GenerateFlagString();
30+
}
31+
}
32+
}

FFMQRWin/Export.cs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using FFMQLib;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.IO;
5+
using System.Linq;
6+
using System.Text.Json;
7+
using System.Threading.Tasks;
8+
using System.Windows.Forms;
9+
10+
namespace FFMQRWin
11+
{
12+
public class ExportTools
13+
{
14+
/* public void exportColorJson(FFMQRom rom, string savepath)
15+
{
16+
MapPalettes palettesfromrom = new MapPalettes(rom);
17+
//var json = palettesfromrom.ExportToJson();
18+
19+
using (StreamWriter outputFile = new StreamWriter(savepath + "FFMQR_MapPalettes.json"))
20+
{
21+
outputFile.Write(json);
22+
}
23+
}
24+
25+
public void exportTilesJson(FFMQRom rom, string savepath)
26+
{
27+
GraphicRows tilesfromrom = new GraphicRows(rom);
28+
var json = tilesfromrom.ExportToJson();
29+
30+
using (StreamWriter outputFile = new StreamWriter(savepath + "FFMQR_GraphicRows.json"))
31+
{
32+
outputFile.Write(json);
33+
}
34+
}
35+
36+
public void exportTilesPropJson(FFMQRom rom, string savepath)
37+
{
38+
TilesProperties tilesfromrom = new TilesProperties(rom);
39+
var json = tilesfromrom.ExportToJson();
40+
41+
using (StreamWriter outputFile = new StreamWriter(savepath + "FFMQR_TilesProperties.json"))
42+
{
43+
outputFile.Write(json);
44+
}
45+
}
46+
47+
public void exportMapJson(FFMQRom rom, string savepath)
48+
{
49+
List<JsonMap> maps = new();
50+
GameMaps mapsfromrom = new GameMaps(rom);
51+
for (int i = 0; i < 0x2C; i++)
52+
{
53+
//maps.Add(mapsfromrom[i].ConvertToJson());
54+
55+
var json = JsonSerializer.Serialize(mapsfromrom[i].ConvertToJson());
56+
57+
using (StreamWriter outputFile = new StreamWriter(savepath + $"FFMQR_map{i:X2}.json"))
58+
{
59+
outputFile.Write(json);
60+
}
61+
}
62+
63+
64+
}
65+
*/
66+
67+
}
68+
69+
}

FFMQRWin/FFMQRWin.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
</ItemGroup>
1616

1717
<ItemGroup>
18+
<EmbeddedResource Include="default-benjamin-icon.png">
19+
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
20+
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
21+
</EmbeddedResource>
1822
<Content Include="presets\advanced.yaml">
1923
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
2024
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
@@ -42,6 +46,9 @@
4246
</ItemGroup>
4347

4448
<ItemGroup>
49+
<Compile Update="Preferences.cs">
50+
<SubType>Form</SubType>
51+
</Compile>
4552
<Compile Update="Settings.Designer.cs">
4653
<DesignTimeSharedInput>True</DesignTimeSharedInput>
4754
<AutoGen>True</AutoGen>

0 commit comments

Comments
 (0)