Improved Pokewalker Editing (#2958)

* Added PokeWalker Courses, Watts, and Steps editing

* Use util method for getting bitflags

* Keep old cheat method

Change signature so that the default value passed is to unlock all; can pass 0 instead to lock all

* Pass reference to derived sav4-type object

Wev'e already type-tested once, capture the reference and pass it into the appropriate load/save methods.

* Add control anchoring for window resizing

Also widen the labels for localization (longer strings possibly)
This commit is contained in:
Regnum 2020-08-01 11:20:13 -05:00 committed by GitHub
parent 497639d48e
commit 9e40fa132f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 388 additions and 41 deletions

View file

@ -26,7 +26,7 @@ namespace PKHeX.Core
public readonly string[] metSWSH_00000, metSWSH_30000, metSWSH_40000, metSWSH_60000;
// Misc
public readonly string[] wallpapernames, puffs;
public readonly string[] wallpapernames, puffs, walkercourses;
private readonly string lang;
private readonly int LanguageIndex;
@ -103,6 +103,8 @@ namespace PKHeX.Core
Array.Resize(ref puffs, puffs.Length + 1); // shift all down, 0th will be 'none' -- applied later
Array.Copy(puffs, 0, puffs, 1, puffs.Length - 1);
walkercourses = Get("hgss_walkercourses");
EggName = specieslist[0];
metHGSS_00000 = Get("hgss_00000");
metHGSS_02000 = Get("hgss_02000");

View file

@ -148,6 +148,7 @@
<None Remove="Resources\text\de\text_hgss_00000_de.txt" />
<None Remove="Resources\text\de\text_hgss_02000_de.txt" />
<None Remove="Resources\text\de\text_hgss_03000_de.txt" />
<None Remove="Resources\text\de\text_hgss_walkercourses_de.txt" />
<None Remove="Resources\text\de\text_Items_de.txt" />
<None Remove="Resources\text\de\text_Mail4_de.txt" />
<None Remove="Resources\text\de\text_Memories_de.txt" />
@ -202,6 +203,7 @@
<None Remove="Resources\text\en\text_hgss_00000_en.txt" />
<None Remove="Resources\text\en\text_hgss_02000_en.txt" />
<None Remove="Resources\text\en\text_hgss_03000_en.txt" />
<None Remove="Resources\text\en\text_hgss_walkercourses_en.txt" />
<None Remove="Resources\text\en\text_Items_en.txt" />
<None Remove="Resources\text\en\text_Mail4_en.txt" />
<None Remove="Resources\text\en\text_Memories_en.txt" />
@ -256,6 +258,7 @@
<None Remove="Resources\text\es\text_hgss_00000_es.txt" />
<None Remove="Resources\text\es\text_hgss_02000_es.txt" />
<None Remove="Resources\text\es\text_hgss_03000_es.txt" />
<None Remove="Resources\text\es\text_hgss_walkercourses_es.txt" />
<None Remove="Resources\text\es\text_Items_es.txt" />
<None Remove="Resources\text\es\text_Mail4_es.txt" />
<None Remove="Resources\text\es\text_Memories_es.txt" />
@ -310,6 +313,7 @@
<None Remove="Resources\text\fr\text_hgss_00000_fr.txt" />
<None Remove="Resources\text\fr\text_hgss_02000_fr.txt" />
<None Remove="Resources\text\fr\text_hgss_03000_fr.txt" />
<None Remove="Resources\text\fr\text_hgss_walkercourses_fr.txt" />
<None Remove="Resources\text\fr\text_Items_fr.txt" />
<None Remove="Resources\text\fr\text_Mail4_fr.txt" />
<None Remove="Resources\text\fr\text_Memories_fr.txt" />
@ -388,6 +392,7 @@
<None Remove="Resources\text\it\text_hgss_00000_it.txt" />
<None Remove="Resources\text\it\text_hgss_02000_it.txt" />
<None Remove="Resources\text\it\text_hgss_03000_it.txt" />
<None Remove="Resources\text\it\text_hgss_walkercourses_it.txt" />
<None Remove="Resources\text\it\text_Items_it.txt" />
<None Remove="Resources\text\it\text_Mail4_it.txt" />
<None Remove="Resources\text\it\text_Memories_it.txt" />
@ -442,6 +447,7 @@
<None Remove="Resources\text\ja\text_hgss_00000_ja.txt" />
<None Remove="Resources\text\ja\text_hgss_02000_ja.txt" />
<None Remove="Resources\text\ja\text_hgss_03000_ja.txt" />
<None Remove="Resources\text\ja\text_hgss_walkercourses_ja.txt" />
<None Remove="Resources\text\ja\text_Items_ja.txt" />
<None Remove="Resources\text\ja\text_Mail4_ja.txt" />
<None Remove="Resources\text\ja\text_Memories_ja.txt" />
@ -496,6 +502,7 @@
<None Remove="Resources\text\ko\text_hgss_00000_ko.txt" />
<None Remove="Resources\text\ko\text_hgss_02000_ko.txt" />
<None Remove="Resources\text\ko\text_hgss_03000_ko.txt" />
<None Remove="Resources\text\ko\text_hgss_walkercourses_ko.txt" />
<None Remove="Resources\text\ko\text_Items_ko.txt" />
<None Remove="Resources\text\ko\text_Mail4_ko.txt" />
<None Remove="Resources\text\ko\text_Memories_ko.txt" />
@ -798,6 +805,7 @@
<None Remove="Resources\text\zh\text_hgss_00000_zh.txt" />
<None Remove="Resources\text\zh\text_hgss_02000_zh.txt" />
<None Remove="Resources\text\zh\text_hgss_03000_zh.txt" />
<None Remove="Resources\text\zh\text_hgss_walkercourses_zh.txt" />
<None Remove="Resources\text\zh\text_Items_zh.txt" />
<None Remove="Resources\text\zh\text_Memories_zh.txt" />
<None Remove="Resources\text\zh\text_Moves_zh.txt" />
@ -965,6 +973,7 @@
<EmbeddedResource Include="Resources\text\de\text_hgss_00000_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_hgss_02000_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_hgss_03000_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_hgss_walkercourses_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_Items_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_Mail4_de.txt" />
<EmbeddedResource Include="Resources\text\de\text_Memories_de.txt" />
@ -1019,6 +1028,7 @@
<EmbeddedResource Include="Resources\text\en\text_hgss_00000_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_hgss_02000_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_hgss_03000_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_hgss_walkercourses_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_Items_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_Mail4_en.txt" />
<EmbeddedResource Include="Resources\text\en\text_Memories_en.txt" />
@ -1073,6 +1083,7 @@
<EmbeddedResource Include="Resources\text\es\text_hgss_00000_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_hgss_02000_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_hgss_03000_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_hgss_walkercourses_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_Items_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_Mail4_es.txt" />
<EmbeddedResource Include="Resources\text\es\text_Memories_es.txt" />
@ -1127,6 +1138,7 @@
<EmbeddedResource Include="Resources\text\fr\text_hgss_00000_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_hgss_02000_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_hgss_03000_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_hgss_walkercourses_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_Items_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_Mail4_fr.txt" />
<EmbeddedResource Include="Resources\text\fr\text_Memories_fr.txt" />
@ -1205,6 +1217,7 @@
<EmbeddedResource Include="Resources\text\it\text_hgss_00000_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_hgss_02000_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_hgss_03000_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_hgss_walkercourses_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_Items_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_Mail4_it.txt" />
<EmbeddedResource Include="Resources\text\it\text_Memories_it.txt" />
@ -1259,6 +1272,7 @@
<EmbeddedResource Include="Resources\text\ja\text_hgss_00000_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_hgss_02000_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_hgss_03000_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_hgss_walkercourses_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_Items_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_Mail4_ja.txt" />
<EmbeddedResource Include="Resources\text\ja\text_Memories_ja.txt" />
@ -1313,6 +1327,7 @@
<EmbeddedResource Include="Resources\text\ko\text_hgss_00000_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_hgss_02000_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_hgss_03000_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_hgss_walkercourses_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_Items_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_Mail4_ko.txt" />
<EmbeddedResource Include="Resources\text\ko\text_Memories_ko.txt" />
@ -1614,6 +1629,7 @@
<EmbeddedResource Include="Resources\text\zh\text_hgss_00000_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_hgss_02000_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_hgss_03000_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_hgss_walkercourses_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_Items_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_Memories_zh.txt" />
<EmbeddedResource Include="Resources\text\zh\text_Moves_zh.txt" />

View file

@ -0,0 +1,27 @@
Sattgrüne Wiese
Lauschiger Wald
Holpriger Pfad
Malerische Küste
Wohngebiet
Finstere Höhle
Tiefblauer See
Stadtrand
Ebene von Hoenn
Sonniger Strand
Vulkanpfad
Baumhaus
Gruselhöhle
Ebene von Sinnoh
Eisiger Bergpfad
Tiefer Wald
Silberner See
Stürmische Küste
Ferienpark
Stille Höhle
Ferne Ufer
Himmelsrand
Goldgelber Wald
Rallye
Spaziergang
Siegerstraße
Wiese der Treue

View file

@ -0,0 +1,27 @@
Refreshing Field
Noisy Forest
Rugged Road
Beautiful Beach
Suburban Area
Dim Cave
Blue Lake
Town Outskirts
Hoenn Field
Warm Beach
Volcano Path
Treehouse
Scary Cave
Sinnoh Field
Icy Mountain Rd.
Big Forest
White Lake
Stormy Beach
Resort
Quiet Cave
Beyond the Sea
Night Sky's Edge
Yellow Forest
Rally
Sightseeing
Winner's Path
Amity Meadow

View file

@ -0,0 +1,27 @@
Prado Tranquilo
Bosque Murmullos
Camino Pedregoso
Costa Bella
Urbanización
Cueva Sombría
Mar Azul
Arrabal
Llano de Hoenn
Playa Cálida
Sendero Volcán
Casa del Árbol
Cueva del Terror
Llano de Sinnoh
Senda Glacial
Gran Bosque
Lago Bruma
Playa Tormenta
Zona Vacacional
Cueva Calma
Ultramar
Confín del Cielo
Bosque Amarillo
Vía Campeón
Acontecimiento
De Turismo
Campo Amistad

View file

@ -0,0 +1,27 @@
Plaine Sereine
Bois Bruissant
Chemin Pierreux
Jolie Plage
Coin Résidentiel
Caverne Sombre
Lac Bleu
Faubourgs
Plaine de Hoenn
Plage Brûlante
Sente de Volcan
Sylvania
Grotte Terreur
Plaine Sinnoh
Pente Glaciale
Grande Forêt
Lac Brumeux
Plage Orageuse
Zone de Vacances
Grotte Calme
Chemin Victoire
Evénement
Fin du Firmament
Forêt Jaune
Mer Lointaine
Plaine Paisible
Virée en Ville

View file

@ -0,0 +1,27 @@
Piana Tranquilla
Bosco Cicaleccio
Sentiero Impervio
Spiaggia Amena
Zona Residenziale
Caverna Penombra
Lago Turchese
Periferia
Piana di Hoenn
Spiaggia Caliente
Sentiero Focoso
Silvania
Grotta Terrore
Piana di Sinnoh
Dirupo Glaciale
Grande Foresta
Lago Bruma
Costa Tempestosa
Riviera
Grotta Pacifica
Oltremare
Confinecielo
Bosco Giallo
Evento
A spasso
Via dei Campioni
Campo Concordia

View file

@ -0,0 +1,27 @@
さわやかのはら
ざわざわもり
ごつごつみち
きれいなうみべ
じゅうたくち
くらいどうくつ
あおいみずうみ
まちのはずれ
ホウエンのはら
あったかビーチ
かざんのこみち
ツリーハウス
こわいどうくつ
シンオウのはら
さむいやまみち
おおきなもり
しろいみずうみ
あれたうみべ
リゾートち
しずかどうくつ
うみのむこう
よぞらのはて
きいろのもり
イベント
おかいもの
チャンプのみち
ふれあいのはら

View file

@ -0,0 +1,27 @@
상쾌한 들판
바삭바삭 숲
울퉁불퉁길
아름다운 해변
주택지
어두운 동굴
푸른 호수
변두리
호연들판
따뜻한 비치
화산의 좁은 길
트리하우스
무서운 동굴
신오들판
추운 산길
커다란 숲
하얀 호수
거친 해변
리조트지
조용한 동굴
바다 저편
밤하늘의 끝
노란 숲
이벤트
산책
챔프의 길
상호교류들판

View file

@ -0,0 +1,27 @@
清爽草原
喧闹森林
崎岖小道
绮丽海边
住宅地
黑暗洞窟
蓝色湖泊
城镇郊外
丰缘之原
温暖的沙滩
火山小道
树上小屋
恐怖洞窟
神奥之原
寒冷山道
大森林
白色湖泊
荒凉海边
度假胜地
安静洞窟
海之彼岸
夜空边际
黄色森林
活动事件
购物区
冠军之道
交流之原

View file

@ -206,28 +206,17 @@ namespace PKHeX.Core
public void SetApricornCount(int i, int count) => General[0xE558 + i] = (byte)count;
// Pokewalker
private const int OFS_WALKER = 0xE70C;
private const int OFS_WALKER = 0xE704;
public uint PokewalkerSteps { get => BitConverter.ToUInt32(General, OFS_WALKER); set => SetData(General, BitConverter.GetBytes(value), OFS_WALKER); }
public uint PokewalkerWatts { get => BitConverter.ToUInt32(General, OFS_WALKER + 0x4); set => SetData(General, BitConverter.GetBytes(value), OFS_WALKER + 0x4); }
public bool[] PokewalkerCoursesUnlocked
{
get
{
var val = BitConverter.ToUInt32(General, OFS_WALKER);
bool[] courses = new bool[32];
for (int i = 0; i < courses.Length; i++)
courses[i] = ((val >> i) & 1) == 1;
return courses;
}
set
{
uint val = 0;
bool[] courses = new bool[32];
for (int i = 0; i < courses.Length; i++)
val |= value[i] ? 1u << i : 0;
SetData(General, BitConverter.GetBytes(val), OFS_WALKER);
}
get => ArrayUtil.GitBitFlagArray(General, OFS_WALKER + 0x8, 32);
set => ArrayUtil.SetBitFlagArray(General, OFS_WALKER + 0x8, value);
}
public void PokewalkerCoursesUnlockAll() => SetData(General, BitConverter.GetBytes(0x07FF_FFFFu), OFS_WALKER);
public void PokewalkerCoursesSetAll(uint value = 0x07FF_FFFFu) => SetData(General, BitConverter.GetBytes(value), OFS_WALKER + 0x8);
}
}
}

View file

@ -99,7 +99,13 @@
this.NUD_CastleRankInfo = new System.Windows.Forms.NumericUpDown();
this.L_CastleRank01 = new System.Windows.Forms.Label();
this.TAB_Walker = new System.Windows.Forms.TabPage();
this.B_UnlockCourses = new System.Windows.Forms.Button();
this.GB_WalkerCourses = new System.Windows.Forms.GroupBox();
this.B_AllWalkerCourses = new System.Windows.Forms.Button();
this.CLB_WalkerCourses = new System.Windows.Forms.CheckedListBox();
this.NUD_Watts = new System.Windows.Forms.NumericUpDown();
this.L_Watts = new System.Windows.Forms.Label();
this.NUD_Steps = new System.Windows.Forms.NumericUpDown();
this.L_Steps = new System.Windows.Forms.Label();
this.Tab_Misc = new System.Windows.Forms.TabPage();
this.B_AllSealsIllegal = new System.Windows.Forms.Button();
this.B_AllSealsLegal = new System.Windows.Forms.Button();
@ -148,6 +154,9 @@
((System.ComponentModel.ISupportInitialize)(this.NUD_CastleRankItem)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_CastleRankInfo)).BeginInit();
this.TAB_Walker.SuspendLayout();
this.GB_WalkerCourses.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUD_Watts)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Steps)).BeginInit();
this.Tab_Misc.SuspendLayout();
this.Tab_Poffins.SuspendLayout();
this.Tab_PokeGear.SuspendLayout();
@ -1148,7 +1157,11 @@
//
// TAB_Walker
//
this.TAB_Walker.Controls.Add(this.B_UnlockCourses);
this.TAB_Walker.Controls.Add(this.GB_WalkerCourses);
this.TAB_Walker.Controls.Add(this.NUD_Watts);
this.TAB_Walker.Controls.Add(this.L_Watts);
this.TAB_Walker.Controls.Add(this.NUD_Steps);
this.TAB_Walker.Controls.Add(this.L_Steps);
this.TAB_Walker.Location = new System.Drawing.Point(4, 22);
this.TAB_Walker.Name = "TAB_Walker";
this.TAB_Walker.Padding = new System.Windows.Forms.Padding(3);
@ -1157,15 +1170,93 @@
this.TAB_Walker.Text = "Pokewalker";
this.TAB_Walker.UseVisualStyleBackColor = true;
//
// B_UnlockCourses
// GB_WalkerCourses
//
this.B_UnlockCourses.Location = new System.Drawing.Point(153, 98);
this.B_UnlockCourses.Name = "B_UnlockCourses";
this.B_UnlockCourses.Size = new System.Drawing.Size(75, 55);
this.B_UnlockCourses.TabIndex = 0;
this.B_UnlockCourses.Text = "Unlock All Courses";
this.B_UnlockCourses.UseVisualStyleBackColor = true;
this.B_UnlockCourses.Click += new System.EventHandler(this.B_UnlockCourses_Click);
this.GB_WalkerCourses.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.GB_WalkerCourses.Controls.Add(this.B_AllWalkerCourses);
this.GB_WalkerCourses.Controls.Add(this.CLB_WalkerCourses);
this.GB_WalkerCourses.Location = new System.Drawing.Point(3, 3);
this.GB_WalkerCourses.Name = "GB_WalkerCourses";
this.GB_WalkerCourses.Size = new System.Drawing.Size(181, 230);
this.GB_WalkerCourses.TabIndex = 4;
this.GB_WalkerCourses.TabStop = false;
this.GB_WalkerCourses.Text = "Pokewalker Courses";
//
// B_AllWalkerCourses
//
this.B_AllWalkerCourses.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.B_AllWalkerCourses.Location = new System.Drawing.Point(6, 195);
this.B_AllWalkerCourses.Name = "B_AllWalkerCourses";
this.B_AllWalkerCourses.Size = new System.Drawing.Size(75, 25);
this.B_AllWalkerCourses.TabIndex = 0;
this.B_AllWalkerCourses.Text = "Check All";
this.B_AllWalkerCourses.UseVisualStyleBackColor = true;
this.B_AllWalkerCourses.Click += new System.EventHandler(this.B_AllWalkerCourses_Click);
//
// CLB_WalkerCourses
//
this.CLB_WalkerCourses.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.CLB_WalkerCourses.CheckOnClick = true;
this.CLB_WalkerCourses.FormattingEnabled = true;
this.CLB_WalkerCourses.Location = new System.Drawing.Point(6, 16);
this.CLB_WalkerCourses.Name = "CLB_WalkerCourses";
this.CLB_WalkerCourses.Size = new System.Drawing.Size(169, 169);
this.CLB_WalkerCourses.TabIndex = 1;
//
// NUD_Watts
//
this.NUD_Watts.Location = new System.Drawing.Point(262, 6);
this.NUD_Watts.Maximum = new decimal(new int[] {
9999999,
0,
0,
0});
this.NUD_Watts.Name = "NUD_Watts";
this.NUD_Watts.Size = new System.Drawing.Size(64, 20);
this.NUD_Watts.TabIndex = 0;
this.NUD_Watts.Value = new decimal(new int[] {
9999999,
0,
0,
0});
//
// L_Watts
//
this.L_Watts.Location = new System.Drawing.Point(190, 3);
this.L_Watts.Name = "L_Watts";
this.L_Watts.Size = new System.Drawing.Size(66, 22);
this.L_Watts.TabIndex = 10;
this.L_Watts.Text = "Watts:";
this.L_Watts.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// NUD_Steps
//
this.NUD_Steps.Location = new System.Drawing.Point(262, 38);
this.NUD_Steps.Maximum = new decimal(new int[] {
9999999,
0,
0,
0});
this.NUD_Steps.Name = "NUD_Steps";
this.NUD_Steps.Size = new System.Drawing.Size(64, 20);
this.NUD_Steps.TabIndex = 0;
this.NUD_Steps.Value = new decimal(new int[] {
9999999,
0,
0,
0});
//
// L_Steps
//
this.L_Steps.Location = new System.Drawing.Point(190, 35);
this.L_Steps.Name = "L_Steps";
this.L_Steps.Size = new System.Drawing.Size(66, 22);
this.L_Steps.TabIndex = 10;
this.L_Steps.Text = "Steps:";
this.L_Steps.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// Tab_Misc
//
@ -1291,6 +1382,9 @@
((System.ComponentModel.ISupportInitialize)(this.NUD_CastleRankItem)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_CastleRankInfo)).EndInit();
this.TAB_Walker.ResumeLayout(false);
this.GB_WalkerCourses.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUD_Watts)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Steps)).EndInit();
this.Tab_Misc.ResumeLayout(false);
this.Tab_Poffins.ResumeLayout(false);
this.Tab_PokeGear.ResumeLayout(false);
@ -1368,7 +1462,13 @@
private System.Windows.Forms.Label L_CurrentApp;
private System.Windows.Forms.Label L_CurrentMap;
private System.Windows.Forms.TabPage TAB_Walker;
private System.Windows.Forms.Button B_UnlockCourses;
private System.Windows.Forms.GroupBox GB_WalkerCourses;
private System.Windows.Forms.CheckedListBox CLB_WalkerCourses;
private System.Windows.Forms.Button B_AllWalkerCourses;
private System.Windows.Forms.NumericUpDown NUD_Watts;
private System.Windows.Forms.Label L_Watts;
private System.Windows.Forms.NumericUpDown NUD_Steps;
private System.Windows.Forms.Label L_Steps;
private System.Windows.Forms.NumericUpDown NUD_Coin;
private System.Windows.Forms.Label L_Coin;
private System.Windows.Forms.TabPage Tab_Misc;

View file

@ -136,8 +136,10 @@ namespace PKHeX.WinForms
uint valBP = BitConverter.ToUInt16(SAV.General, ofsBP);
NUD_BP.Value = valBP > 9999 ? 9999 : valBP;
if (SAV is SAV4Sinnoh)
ReadPoketch();
if (SAV is SAV4Sinnoh sinnoh)
ReadPoketch(sinnoh);
if (SAV is SAV4HGSS hgss)
ReadWalker(hgss);
if (ofsUGFlagCount > 0)
{
@ -176,8 +178,10 @@ namespace PKHeX.WinForms
BitConverter.GetBytes(valFly).CopyTo(SAV.General, ofsFly);
BitConverter.GetBytes((ushort)NUD_BP.Value).CopyTo(SAV.General, ofsBP);
if (SAV is SAV4Sinnoh)
SavePoketch();
if (SAV is SAV4Sinnoh sinnoh)
SavePoketch(sinnoh);
if (SAV is SAV4HGSS hgss)
SaveWalker(hgss);
if (ofsUGFlagCount > 0)
BitConverter.GetBytes((BitConverter.ToUInt32(SAV.General, ofsUGFlagCount) & ~0xFFFFFu) | (uint)NUD_UGFlags.Value).CopyTo(SAV.General, ofsUGFlagCount);
@ -199,10 +203,9 @@ namespace PKHeX.WinForms
private byte[] DotArtistByte;
private byte[] ColorTable;
private void ReadPoketch()
private void ReadPoketch(SAV4Sinnoh s)
{
string[] PoketchTitle = Enum.GetNames(typeof(PoketchApp));
var s = (SAV4Sinnoh) SAV;
CB_CurrentApp.Items.AddRange(PoketchTitle);
CB_CurrentApp.SelectedIndex = s.CurrentPoketchApp;
@ -226,9 +229,8 @@ namespace PKHeX.WinForms
TAB_Main.AllowDrop = true;
}
private void SavePoketch()
private void SavePoketch(SAV4Sinnoh s)
{
var s = (SAV4Sinnoh)SAV;
s.CurrentPoketchApp = (sbyte)CB_CurrentApp.SelectedIndex;
for (int i = 0; i < CLB_Poketch.Items.Count; i++)
{
@ -776,9 +778,31 @@ namespace PKHeX.WinForms
}
#endregion
private void B_UnlockCourses_Click(object sender, EventArgs e)
private void ReadWalker(SAV4HGSS s)
{
((SAV4HGSS)SAV).PokewalkerCoursesUnlockAll();
string[] walkercourses = GameInfo.Sources.Source.walkercourses;
bool[] isChecked = s.PokewalkerCoursesUnlocked;
CLB_WalkerCourses.Items.Clear();
for (int i = 0; i < walkercourses.Length; i++)
CLB_WalkerCourses.Items.Add(walkercourses[i], isChecked[i]);
NUD_Watts.Value = s.PokewalkerWatts;
NUD_Steps.Value = s.PokewalkerSteps;
}
private void SaveWalker(SAV4HGSS s)
{
bool[] courses = new bool[32];
for (int i = 0; i < CLB_WalkerCourses.Items.Count; i++)
courses[i] = CLB_WalkerCourses.GetItemChecked(i);
s.PokewalkerCoursesUnlocked = courses;
s.PokewalkerWatts = (uint)NUD_Watts.Value;
s.PokewalkerSteps = (uint)NUD_Steps.Value;
}
private void B_AllWalkerCourses_Click(object sender, EventArgs e)
{
for (int i = 0; i < CLB_WalkerCourses.Items.Count; i++)
CLB_WalkerCourses.SetItemChecked(i, true);
}
private void OnBAllSealsLegalOnClick(object sender, EventArgs e)