From 41841e5bfb84c157ea6a242a46821faf1dfe7284 Mon Sep 17 00:00:00 2001 From: "Josh (vector_cmdr)" Date: Tue, 10 Feb 2026 01:32:16 +1100 Subject: [PATCH] Feat: Post Box Editing (#744) Feature: Adds support for postbox.dat via Post Box Editor and accompanying components: - Add Mail class. - Add PostBox class and corresponding offset classes. - Add wrap suppression option to ItemEditor. - Add wrapping and box dictionary to ItemWrapping class. - Add new language strings associated with forms and types. Fix: Resolved overwrite for bad dumps on all imports by adding UsageCompatibilityOffset and UsageCompatibility() added to Design classes. Transparent pixel check method added to PatternEditor and LoadPattern() altered to write the correct compatibility bytes based on type and transparency. --- NHSE.Core/NHSE.Core.csproj | 18 + NHSE.Core/Resources/text/de/text_mail_de.txt | 101 +++ .../Resources/text/de/text_villager_de.txt | 15 +- NHSE.Core/Resources/text/en/text_mail_en.txt | 101 +++ .../Resources/text/en/text_villager_en.txt | 15 +- NHSE.Core/Resources/text/es/text_mail_es.txt | 101 +++ .../Resources/text/es/text_villager_es.txt | 15 +- NHSE.Core/Resources/text/fr/text_mail_fr.txt | 101 +++ .../Resources/text/fr/text_villager_fr.txt | 15 +- NHSE.Core/Resources/text/it/text_mail_it.txt | 101 +++ .../Resources/text/it/text_villager_it.txt | 15 +- NHSE.Core/Resources/text/jp/text_mail_jp.txt | 101 +++ .../Resources/text/jp/text_villager_jp.txt | 15 +- NHSE.Core/Resources/text/ko/text_mail_ko.txt | 101 +++ .../Resources/text/ko/text_villager_ko.txt | 15 +- .../Resources/text/zhs/text_mail_zhs.txt | 101 +++ .../Resources/text/zhs/text_villager_zhs.txt | 15 +- .../Resources/text/zht/text_mail_zht.txt | 101 +++ .../Resources/text/zht/text_villager_zht.txt | 15 +- NHSE.Core/Save/Files/MainSave.cs | 12 +- NHSE.Core/Save/Files/PostBox.cs | 321 ++++++- NHSE.Core/Save/Offsets/MainSaveOffsets.cs | 17 +- NHSE.Core/Save/Offsets/PostBoxOffsets.cs | 55 ++ NHSE.Core/Save/Offsets/PostBoxOffsets10.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets11.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets110.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets111.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets12.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets13.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets14.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets15.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets16.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets17.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets18.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets19.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets20.cs | 16 + NHSE.Core/Save/Offsets/PostBoxOffsets30.cs | 16 + NHSE.Core/Strings/GameStrings.cs | 6 + NHSE.Core/Structures/Designs/DesignPattern.cs | 7 + .../Structures/Designs/DesignPatternPRO.cs | 7 + NHSE.Core/Structures/Item/ItemWrapping.cs | 76 +- NHSE.Core/Structures/Mail/Mail.cs | 220 +++++ NHSE.WinForms/Controls/ItemEditor.cs | 22 +- NHSE.WinForms/Controls/VillagerEditor.cs | 11 +- NHSE.WinForms/Editor.Designer.cs | 257 +++--- NHSE.WinForms/Editor.cs | 31 +- NHSE.WinForms/Resources/text/lang_de.txt | 37 + NHSE.WinForms/Resources/text/lang_en.txt | 37 + NHSE.WinForms/Resources/text/lang_es.txt | 37 + NHSE.WinForms/Resources/text/lang_fr.txt | 37 + NHSE.WinForms/Resources/text/lang_it.txt | 37 + NHSE.WinForms/Resources/text/lang_jp.txt | 37 + NHSE.WinForms/Resources/text/lang_ko.txt | 37 + NHSE.WinForms/Resources/text/lang_zhs.txt | 37 + NHSE.WinForms/Resources/text/lang_zht.txt | 37 + .../Subforms/Map/PatternEditor.Designer.cs | 262 +++--- NHSE.WinForms/Subforms/Map/PatternEditor.cs | 47 +- NHSE.WinForms/Subforms/Map/PatternEditor.resx | 59 +- .../Subforms/Map/PatternEditorPRO.Designer.cs | 334 +++---- .../Subforms/Map/PatternEditorPRO.cs | 22 +- .../Subforms/Map/PatternEditorPRO.resx | 59 +- .../Subforms/Player/PostBoxEditor.Designer.cs | 812 ++++++++++++++++++ .../Subforms/Player/PostBoxEditor.cs | 572 ++++++++++++ .../Subforms/Player/PostBoxEditor.resx | 123 +++ .../Subforms/SingleItemEditor.Designer.cs | 77 +- NHSE.WinForms/Subforms/SingleItemEditor.resx | 54 +- 66 files changed, 4488 insertions(+), 594 deletions(-) create mode 100644 NHSE.Core/Resources/text/de/text_mail_de.txt create mode 100644 NHSE.Core/Resources/text/en/text_mail_en.txt create mode 100644 NHSE.Core/Resources/text/es/text_mail_es.txt create mode 100644 NHSE.Core/Resources/text/fr/text_mail_fr.txt create mode 100644 NHSE.Core/Resources/text/it/text_mail_it.txt create mode 100644 NHSE.Core/Resources/text/jp/text_mail_jp.txt create mode 100644 NHSE.Core/Resources/text/ko/text_mail_ko.txt create mode 100644 NHSE.Core/Resources/text/zhs/text_mail_zhs.txt create mode 100644 NHSE.Core/Resources/text/zht/text_mail_zht.txt create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets10.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets11.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets110.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets111.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets12.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets13.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets14.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets15.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets16.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets17.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets18.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets19.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets20.cs create mode 100644 NHSE.Core/Save/Offsets/PostBoxOffsets30.cs create mode 100644 NHSE.Core/Structures/Mail/Mail.cs create mode 100644 NHSE.WinForms/Subforms/Player/PostBoxEditor.Designer.cs create mode 100644 NHSE.WinForms/Subforms/Player/PostBoxEditor.cs create mode 100644 NHSE.WinForms/Subforms/Player/PostBoxEditor.resx diff --git a/NHSE.Core/NHSE.Core.csproj b/NHSE.Core/NHSE.Core.csproj index 758ad54..43e7126 100644 --- a/NHSE.Core/NHSE.Core.csproj +++ b/NHSE.Core/NHSE.Core.csproj @@ -12,6 +12,7 @@ + @@ -21,6 +22,7 @@ + @@ -30,6 +32,7 @@ + @@ -39,6 +42,7 @@ + @@ -48,6 +52,7 @@ + @@ -57,6 +62,7 @@ + @@ -66,6 +72,7 @@ + @@ -75,6 +82,7 @@ + @@ -84,6 +92,7 @@ + @@ -100,6 +109,7 @@ + @@ -109,6 +119,7 @@ + @@ -118,6 +129,7 @@ + @@ -127,6 +139,7 @@ + @@ -136,6 +149,7 @@ + @@ -145,6 +159,7 @@ + @@ -154,6 +169,7 @@ + @@ -163,6 +179,7 @@ + @@ -172,6 +189,7 @@ + diff --git a/NHSE.Core/Resources/text/de/text_mail_de.txt b/NHSE.Core/Resources/text/de/text_mail_de.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/de/text_mail_de.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/de/text_villager_de.txt b/NHSE.Core/Resources/text/de/text_villager_de.txt index 1381b61..8fcdc25 100644 --- a/NHSE.Core/Resources/text/de/text_villager_de.txt +++ b/NHSE.Core/Resources/text/de/text_villager_de.txt @@ -1,4 +1,4 @@ -ant00 Theo +ant00 Theo ant01 Siggi ant02 Mathilda ant03 Annabell @@ -489,3 +489,16 @@ tuk Gernod upa Samselt wrl Winci xct Olli +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/en/text_mail_en.txt b/NHSE.Core/Resources/text/en/text_mail_en.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/en/text_mail_en.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/en/text_villager_en.txt b/NHSE.Core/Resources/text/en/text_villager_en.txt index c808553..7194a10 100644 --- a/NHSE.Core/Resources/text/en/text_villager_en.txt +++ b/NHSE.Core/Resources/text/en/text_villager_en.txt @@ -1,4 +1,4 @@ -ant00 Cyrano +ant00 Cyrano ant01 Antonio ant02 Pango ant03 Anabelle @@ -489,3 +489,16 @@ tuk Franklin upa Shrunk wrl Wendell xct Rover +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/es/text_mail_es.txt b/NHSE.Core/Resources/text/es/text_mail_es.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/es/text_mail_es.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/es/text_villager_es.txt b/NHSE.Core/Resources/text/es/text_villager_es.txt index e419d8f..c0c1931 100644 --- a/NHSE.Core/Resources/text/es/text_villager_es.txt +++ b/NHSE.Core/Resources/text/es/text_villager_es.txt @@ -1,4 +1,4 @@ -ant00 Cirano +ant00 Cirano ant01 Antonio ant02 Aspidora ant03 Anabel @@ -489,3 +489,16 @@ tuk Guindo upa Dr. Sito wrl Da Morsi xct Fran +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/fr/text_mail_fr.txt b/NHSE.Core/Resources/text/fr/text_mail_fr.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/fr/text_mail_fr.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/fr/text_villager_fr.txt b/NHSE.Core/Resources/text/fr/text_villager_fr.txt index 992800b..1c15a8d 100644 --- a/NHSE.Core/Resources/text/fr/text_villager_fr.txt +++ b/NHSE.Core/Resources/text/fr/text_villager_fr.txt @@ -1,4 +1,4 @@ -ant00 Cyrano +ant00 Cyrano ant01 Antonio ant02 Mathilda ant03 Anabelle @@ -489,3 +489,16 @@ tuk Dindou upa Ciboulot wrl Morsicus xct Charly +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/it/text_mail_it.txt b/NHSE.Core/Resources/text/it/text_mail_it.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/it/text_mail_it.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/it/text_villager_it.txt b/NHSE.Core/Resources/text/it/text_villager_it.txt index deca77a..b9b15ef 100644 --- a/NHSE.Core/Resources/text/it/text_villager_it.txt +++ b/NHSE.Core/Resources/text/it/text_villager_it.txt @@ -1,4 +1,4 @@ -ant00 Cirano +ant00 Cirano ant01 Antonio ant02 Carlotta ant03 Annalisa @@ -489,3 +489,16 @@ tuk Cedrone upa Strizzo wrl Van Trik xct Girolamo +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/jp/text_mail_jp.txt b/NHSE.Core/Resources/text/jp/text_mail_jp.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/jp/text_mail_jp.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/jp/text_villager_jp.txt b/NHSE.Core/Resources/text/jp/text_villager_jp.txt index 4a95108..4c91724 100644 --- a/NHSE.Core/Resources/text/jp/text_villager_jp.txt +++ b/NHSE.Core/Resources/text/jp/text_villager_jp.txt @@ -1,4 +1,4 @@ -ant00 さくらじま +ant00 さくらじま ant01 マコト ant02 パトラ ant03 あるみ @@ -489,3 +489,16 @@ tuk フランクリン upa ししょー wrl セイイチ xct みしらぬネコ +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/ko/text_mail_ko.txt b/NHSE.Core/Resources/text/ko/text_mail_ko.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/ko/text_mail_ko.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/ko/text_villager_ko.txt b/NHSE.Core/Resources/text/ko/text_villager_ko.txt index a73a058..2fa9145 100644 --- a/NHSE.Core/Resources/text/ko/text_villager_ko.txt +++ b/NHSE.Core/Resources/text/ko/text_villager_ko.txt @@ -1,4 +1,4 @@ -ant00 사지마 +ant00 사지마 ant01 퍼머거 ant02 패트라 ant03 아롱이 @@ -489,3 +489,16 @@ tuk 프랭클린 upa 스승 wrl 고파유 xct 낯선고양이 +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/zhs/text_mail_zhs.txt b/NHSE.Core/Resources/text/zhs/text_mail_zhs.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/zhs/text_mail_zhs.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/zhs/text_villager_zhs.txt b/NHSE.Core/Resources/text/zhs/text_villager_zhs.txt index 1131f06..47ea768 100644 --- a/NHSE.Core/Resources/text/zhs/text_villager_zhs.txt +++ b/NHSE.Core/Resources/text/zhs/text_villager_zhs.txt @@ -1,4 +1,4 @@ -ant00 阳明 +ant00 阳明 ant01 阿诚 ant02 佩希 ant03 有美 @@ -489,3 +489,16 @@ tuk 富蓝 upa 笑匠 wrl 海项 xct 陌陌 +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Resources/text/zht/text_mail_zht.txt b/NHSE.Core/Resources/text/zht/text_mail_zht.txt new file mode 100644 index 0000000..6c1667c --- /dev/null +++ b/NHSE.Core/Resources/text/zht/text_mail_zht.txt @@ -0,0 +1,101 @@ +mail00 Airmail card +mail01 Star card +mail02 Turkey Day card +mail03 Torn card +mail04 Zen card +mail05 Decorative card +mail06 Graduation card +mail07 Stationery-goods card +mail08 Bandage card +mail09 Chocolate card +mail10 Graffiti card +mail11 Fluffy-clouds card +mail12 Snowflake card +mail13 Common card +mail14 Winter-camellia card +mail15 Lovely hearts card +mail16 Gears card +mail17 Full-bloom card +mail18 Snowperson card +mail19 Carpet-of-leaves card +mail20 Father's Day card +mail21 Holiday card +mail22 Fanciful card +mail23 Cherry-blossoms card +mail24 Shapes card +mail25 Mother's Day card +mail26 Camo card +mail27 Warm-sweater card +mail28 Gem card +mail29 Red-dragonflies card +mail30 Mushroom card +mail31 Card from Happy Home Academy +mail32 Baby-goods card +mail33 Birthday-cake card +mail34 Ribbon card +mail35 Balloons card +mail36 Festive-tree card +mail37 Cool-cool card +mail38 Fantasy-stars card +mail39 Bunny Day card +mail40 Elegant-roses card +mail41 Happy-clovers card +mail42 Pumpkin card +mail43 Halloween card +mail44 Fireworks card +mail45 Dawning-year card +mail46 So-many-hearts card +mail47 Blue-sky card +mail48 Dandelion card +mail49 Shooting-stars card +mail50 Goldfish card +mail51 Hibiscus card +mail52 Flower-bouquet card +mail53 Card from K.K. +mail54 Chocolate-heart card +mail55 Wedding card +mail56 Town-view card +mail57 Velvety card +mail58 Card from C.J. +mail59 Card from Flick +mail60 Card from Bank of Nook +mail61 Card from Nook Mileage Program +mail62 Card from Your pals at Dodo Airlines +mail63 Beach card +mail64 Acorn card +mail65 Gift card +mail66 Card from Jolly Redd's +mail67 MsgWherearenOffice00 +mail68 Glowing-moss card +mail69 Flight-ticket card +mail70 Plumeria card +mail71 Sunset card +mail72 Tropical card +mail73 Paradise Planning card +mail74 Unused_MsgMametsubu00m001 +box00 None +box01 Nook Shopping Box +box02 Hotel Box +box03 Paradise Planning Box +wrap00 None +wrap01 Present +wrap02 Wrapping Paper Yellow +wrap03 Wrapping Paper Pink +wrap04 Wrapping Paper Orange +wrap05 Wrapping Paper Chartreuse +wrap06 Wrapping Paper Green +wrap07 Wrapping Paper Mint +wrap08 Wrapping Paper LightBlue +wrap09 Wrapping Paper Purple +wrap10 Wrapping Paper Navy +wrap11 Wrapping Paper Blue +wrap12 Wrapping Paper White +wrap13 Wrapping Paper Red +wrap14 Wrapping Paper Gold +wrap15 Wrapping Paper Brown +wrap16 Wrapping Paper Gray +wrap17 Wrapping Paper Black +wrap18 Wrapping Paper Festive +wrap19 Lucky Red Envelope +wrap20 Bokjumeoni Pouch +wrap21 Otoshidama Envelope \ No newline at end of file diff --git a/NHSE.Core/Resources/text/zht/text_villager_zht.txt b/NHSE.Core/Resources/text/zht/text_villager_zht.txt index d555c8c..8ce9f66 100644 --- a/NHSE.Core/Resources/text/zht/text_villager_zht.txt +++ b/NHSE.Core/Resources/text/zht/text_villager_zht.txt @@ -1,4 +1,4 @@ -ant00 陽明 +ant00 陽明 ant01 阿誠 ant02 佩希 ant03 有美 @@ -489,3 +489,16 @@ tuk 富藍 upa 笑匠 wrl 海項 xct 陌陌 +npc_nookinc Nook Inc. +npc_hotel Hotel +npc_hha Happy Home Academy +npc_nintendo Nintendo +npc_bankofnook Bank of Nook +npc_nookshopping Nook Shopping +npc_nookmileageprogram Nook Mileage Program +npc_mom Mom +npc_dodoairlines Dodo Airlines +npc_thefarwaymuseum The Farway Museum +npc_paradiseplanning Paradise Planning +npc_snowboy Snowboy +npc_nooklinkadmins NookLink Admins diff --git a/NHSE.Core/Save/Files/MainSave.cs b/NHSE.Core/Save/Files/MainSave.cs index fb7bbd6..a810c0a 100644 --- a/NHSE.Core/Save/Files/MainSave.cs +++ b/NHSE.Core/Save/Files/MainSave.cs @@ -65,9 +65,9 @@ public void SetVillagerHouses(IReadOnlyList villagers) } public DesignPattern GetDesign(int index) => Offsets.ReadPattern(Data, index); - public void SetDesign(DesignPattern value, int index, Span playerID, Span townID) => Offsets.WritePattern(value, Data, index, playerID, townID); + public void SetDesign(DesignPattern value, int index) => Offsets.WritePattern(value, Data, index); public DesignPatternPRO GetDesignPRO(int index) => Offsets.ReadPatternPRO(Data, index); - public void SetDesignPRO(DesignPatternPRO value, int index, Span playerID, Span townID) => Offsets.WritePatternPRO(value, Data, index, playerID, townID); + public void SetDesignPRO(DesignPatternPRO value, int index) => Offsets.WritePatternPRO(value, Data, index); public IReadOnlyList RecycleBin { @@ -106,11 +106,11 @@ public DesignPattern[] GetDesigns() return result; } - public void SetDesigns(IReadOnlyList value, Span playerID, Span townID) + public void SetDesigns(IReadOnlyList value) { var count = Math.Min(Offsets.PatternCount, value.Count); for (int i = 0; i < count; i++) - SetDesign(value[i], i, playerID, townID); + SetDesign(value[i], i); } public DesignPatternPRO[] GetDesignsPRO() @@ -121,11 +121,11 @@ public DesignPatternPRO[] GetDesignsPRO() return result; } - public void SetDesignsPRO(IReadOnlyList value, Span playerID, Span townID) + public void SetDesignsPRO(IReadOnlyList value) { var count = Math.Min(Offsets.PatternCount, value.Count); for (int i = 0; i < count; i++) - SetDesignPRO(value[i], i, playerID, townID); + SetDesignPRO(value[i], i); } public DesignPattern FlagMyDesign diff --git a/NHSE.Core/Save/Files/PostBox.cs b/NHSE.Core/Save/Files/PostBox.cs index 96ef7ee..b97613c 100644 --- a/NHSE.Core/Save/Files/PostBox.cs +++ b/NHSE.Core/Save/Files/PostBox.cs @@ -1,6 +1,321 @@ -namespace NHSE.Core; +using System; +using System.Collections.Generic; +using System.Text; +using static System.Buffers.Binary.BinaryPrimitives; + +namespace NHSE.Core; /// -/// postbox.dat +/// Data structures stored for the players Post Box (postbox.dat) /// -public sealed class PostBox(ISaveFileProvider provider) : EncryptedFilePair(provider, "postbox"); \ No newline at end of file +public sealed class PostBox : EncryptedFilePair +{ + public const string FileName = "postbox"; + public readonly PostBoxOffsets Offsets; + public PostBox(ISaveFileProvider provider) : base(provider, FileName) => Offsets = PostBoxOffsets.GetOffsets(Info); + + public readonly int MailLength = Mail.SIZE; + public readonly int MailListLength = 0x46E60; + public readonly int MaxMailItems = Mail.MaxSlots; + + public Span Get_s_7b602b39() => Data.Slice(Offsets.s_7b602b39, 4); + + public Span MailListWholeRegion + { + get => Data.Slice(Offsets.MailList, MailListLength); + set => value.CopyTo(Data[Offsets.MailList..]); + } + + public Span GetIndividualLetter(int index) => Data.Slice(Offsets.MailList + (MailLength * index), MailLength); + public void SetIndividualLetter(int index, Span value) + { + value.CopyTo(Data[(Offsets.MailList + (MailLength * index))..]); + } + + public List GetUsedPostBoxSlots() + { + var usedSlots = new List(); + for (int i = 0; i < MaxMailItems; i++) + { + var readStatus = MailListWholeRegion[(MailLength * i) + Mail.ReadUnread]; + if (readStatus == 0x03 || readStatus == 0x04) + usedSlots.Add(i); + } + return usedSlots; + } + + public int GetLatestUniqueId() + { + return ReadInt32LittleEndian(Data.Slice(Offsets.LatestUniqueId, 4)); + } + public void SetLatestUniqueId(int uniqueId) + { + WriteInt32LittleEndian(Data.Slice(Offsets.LatestUniqueId, 4), uniqueId); + } + + #region Mail + + public void WipeTxRxSection(int index) + { + var arr = new byte[0x60]; + Span bytes = arr; + bytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.ReadUnread)..]); + } + + public bool GetMailCheck(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.ReadUnread] != 0x00; + } + public bool GetMailReadStatus(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.ReadUnread] != 0x03; + } + public void SetMailReadStatus(int index, bool isRead) + { + Data[Offsets.MailList + (MailLength * index) + Mail.ReadUnread] = isRead ? (byte)0x04 : (byte)0x03; + } + + public bool GetMailFavStatus(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.LetterFavourited] != 0x00; + } + public void SetMailFavStatus(int index, bool isFavourite) + { + Data[Offsets.MailList + (MailLength * index) + Mail.LetterFavourited] = isFavourite ? (byte)0x01 : (byte)0x00; + } + + public uint GetPlayerSenderIslandId(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.PlayerSenderIslandID; + return ReadUInt32LittleEndian(Data.Slice(offset, 4)); + } + public void SetPlayerSenderIslandId(int index, uint islandId) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.PlayerSenderIslandID; + WriteUInt32LittleEndian(Data.Slice(offset, 4), islandId); + } + + public string GetPlayerSenderIslandName(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.PlayerSenderIslandName, 10); + } + public void SetPlayerSenderIslandName(int index, string islandName) + { + var nameBytes = GetBytes(islandName, 10); + nameBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.PlayerSenderIslandName)..]); + } + + public byte GetVillagerSenderSpeciesId(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.NPCSenderSpeciesID]; + } + public void SetVillagerSenderSpeciesId(int index, int speciesId) + { + Data[Offsets.MailList + (MailLength * index) + Mail.NPCSenderSpeciesID] = (byte)speciesId; + } + public byte GetVillagerSenderVariantId(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.NPCSenderVariantID]; + } + public void SetVillagerSenderVariantId(int index, int variantId) + { + Data[Offsets.MailList + (MailLength * index) + Mail.NPCSenderVariantID] = (byte)variantId; + } + + public uint GetNPCSenderIslandId(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.NPCSenderIslandID; + return ReadUInt32LittleEndian(Data.Slice(offset, 4)); + } + public void SetNPCSenderIslandId(int index, uint islandId) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.NPCSenderIslandID; + WriteUInt32LittleEndian(Data.Slice(offset, 4), islandId); + } + public string GetNPCSenderIslandName(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.NPCSenderIslandName, 10); + } + public void SetNPCSenderIslandName(int index, string islandName) + { + var nameBytes = GetBytes(islandName, 20); + nameBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.NPCSenderIslandName)..]); + } + + public uint GetSenderId(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.SenderID; + return ReadUInt32LittleEndian(Data.Slice(offset, 4)); + } + public void SetSenderId(int index, uint senderId) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.SenderID; + WriteUInt32LittleEndian(Data.Slice(offset, 4), senderId); + } + public string GetSenderName(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.SenderName, 10); + } + public void SetSenderName(int index, string senderName) + { + var nameBytes = GetBytes(senderName, 10); + nameBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.SenderName)..]); + } + public byte GetSenderType(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.SenderType]; + } + public void SetSenderType(int index, byte senderType) + { + Data[Offsets.MailList + (MailLength * index) + Mail.SenderType] = senderType; + } + + public uint GetReceiverIslandId(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.ReceiverIslandID; + return ReadUInt32LittleEndian(Data.Slice(offset, 4)); + } + public void SetReceiverIslandId(int index, uint islandId) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.ReceiverIslandID; + WriteUInt32LittleEndian(Data.Slice(offset, 4), islandId); + } + public string GetReceiverIslandName(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.ReceiverIslandName, 10); + } + public void SetReceiverIslandName(int index, string islandName) + { + var nameBytes = GetBytes(islandName, 10); + nameBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.ReceiverIslandName)..]); + } + + public uint GetReceiverPlayerId(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.ReceiverPlayerID; + return ReadUInt32LittleEndian(Data.Slice(offset, 4)); + } + public void SetReceiverPlayerId(int index, uint playerId) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.ReceiverPlayerID; + WriteUInt32LittleEndian(Data.Slice(offset, 4), playerId); + } + public string GetReceiverPlayerName(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.ReceiverPlayerName, 10); + } + public void SetReceiverPlayerName(int index, string playerName) + { + var nameBytes = GetBytes(playerName, 10); + nameBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.ReceiverPlayerName)..]); + } + + public GSaveDate GetTimestamp(int index) + { + return Data.ToStructure(Offsets.MailList + (MailLength * index) + Mail.TimeStamp, GSaveDate.SIZE); + } + public void SetTimeStamp(int index, GSaveDate timestamp) + { + timestamp.ToBytes().CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.TimeStamp)..]); + } + + public Item GetAttachedItem(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.AttachedItemID; + return Item.GetArray(Data.Slice(offset, Item.SIZE))[0]; + } + public void SetAttachedItem(int index, Item item) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.AttachedItemID; + var itemBytes = Item.SetArray(new[] { item }); + itemBytes.CopyTo(Data[offset..]); + } + + public byte GetItemWrappingType(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.MailItemWrappingType]; + } + public void SetItemWrappingType(int index, byte wrappingType) + { + Data[Offsets.MailList + (MailLength * index) + Mail.MailItemWrappingType] = wrappingType; + } + + public bool GetMailType(int index) + { + var offset = Offsets.MailList + (MailLength * index); + return Data[offset + Mail.MailType01] == 0x00 && Data[offset + Mail.MailType02] == 0x01; // Letter or boxed type + } + public void SetMailType(int index, bool letter) + { + var offset = Offsets.MailList + (MailLength * index); + if (letter) { Data[offset + Mail.MailType01] = 0x00; Data[offset + Mail.MailType02] = 0x01; } // Letter type + else { Data[offset + Mail.MailType01] = 0x01; Data[offset + Mail.MailType02] = 0x00; } // Boxed item type + } + + public string GetLetterToLineText(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.LetterToLineText, Mail.LetterToTextLength); + } + public void SetLetterToLineText(int index, string toLineText) + { + var textBytes = GetBytes(toLineText, Mail.LetterToTextLength); + textBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.LetterToLineText)..]); + } + public string GetLetterMessageText(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.LetterMessageText, Mail.LetterMessageTextLength); + } + public void SetLetterMessageText(int index, string messageText) + { + var textBytes = GetBytes(messageText, Mail.LetterMessageTextLength); + textBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.LetterMessageText)..]); + } + public string GetLetterFromLineText(int index) + { + return GetString(Offsets.MailList + (MailLength * index) + Mail.LetterFromLineText, Mail.LetterFromTextLength); + } + public void SetLetterFromLineText(int index, string fromLineText) + { + var textBytes = GetBytes(fromLineText, Mail.LetterFromTextLength); + textBytes.CopyTo(Data[(Offsets.MailList + (MailLength * index) + Mail.LetterFromLineText)..]); + } + public ushort GetMailStationerySkin(int index) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.MailStationerySkin; + return ReadUInt16LittleEndian(Data.Slice(offset, 2)); + } + public void SetMailStationerySkin(int index, ushort skinCode) + { + var offset = Offsets.MailList + (MailLength * index) + Mail.MailStationerySkin; + WriteUInt16LittleEndian(Data.Slice(offset, 2), skinCode); + } + + public byte GetPostBoxSortIndex(int index) + { + return Data[Offsets.MailList + (MailLength * index) + Mail.PostBoxSortIndex]; + } + public void SetPostBoxSortIndex(int index, byte sortIndex) + { + Data[Offsets.MailList + (MailLength * index) + Mail.PostBoxSortIndex] = sortIndex; + } + + public string GetMailLanguageString(int index) + { + return Encoding.UTF8.GetString(Data.Slice(Offsets.MailList + (MailLength * index) + Mail.LanguageString, 5)); + } + + /// + /// Sets or clears the language string for a mail item at the specified index. + /// + /// The zero-based index of the mail item in the postbox. + /// The IETF BCP 47 language tag string to set (e.g., "en-US", "ja-JP"). + /// If true, sets the language string; if false, clears the language data. + public void SetMailLanguageString(int index, string languageString, bool player) + { + var langOffset = Offsets.MailList + (MailLength * index) + Mail.LanguageString; + if (player) { GetBytes(languageString, 5).CopyTo(Data[langOffset..]); } + else { Data.Slice(langOffset, 5).Clear(); } + } + + #endregion +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs index 3cc7194..acb41b8 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs @@ -123,17 +123,13 @@ public static DesignPattern ReadPatternAtOffset(ReadOnlySpan data, int off return new DesignPattern(v); } - public void WritePattern(DesignPattern p, Span data, int index, Span playerID, Span townID) + public void WritePattern(DesignPattern p, Span data, int index) { if ((uint)index >= PatternCount) throw new ArgumentOutOfRangeException(nameof(index)); - playerID.CopyTo(p.Data[0x54..]); // overwrite playerID bytes so player owns - townID.CopyTo(p.Data[0x38..]); // overwrite townID bytes so player owns - ReadOnlySpan wipeflag = [0x02, 0xEE, 0x00, 0x00]; // wipe so player owns - wipeflag.CopyTo(p.Data[0x70..]); p.Data.CopyTo(data[(LandMyDesign + (index * DesignPattern.SIZE))..]); ReadOnlySpan editedflag = [0x00]; - editedflag.CopyTo(data[(PatternsEditFlagStart + index)..]); // set edited flag for name import to work + editedflag.CopyTo(data[(PatternsEditFlagStart + index)..]); // set edited flag for designs name import to be correct in game } public DesignPatternPRO ReadPatternPRO(ReadOnlySpan data, int index) @@ -150,17 +146,12 @@ public static DesignPatternPRO ReadPatternPROAtOffset(ReadOnlySpan data, i return new DesignPatternPRO(v); } - public void WritePatternPRO(DesignPatternPRO p, Span data, int index, Span playerID, Span townID) + public void WritePatternPRO(DesignPatternPRO p, Span data, int index) { if ((uint)index >= PatternCount) - throw new ArgumentOutOfRangeException(nameof(index)); - playerID.CopyTo(p.Data[0x54..]); // overwrite playerID bytes so player owns - townID.CopyTo(p.Data[0x38..]); // overwrite townID bytes so player owns - ReadOnlySpan wipeflag = [0x00, 0x00, 0x00, 0x00]; // wipe so player owns - wipeflag.CopyTo(p.Data[0x70..]); p.Data.CopyTo(data[(PatternsPRO + (index * DesignPatternPRO.SIZE))..]); ReadOnlySpan editedflag = [0x00]; - editedflag.CopyTo(data[(PatternsProEditFlagStart + index)..]); // set edited flag for name import to work + editedflag.CopyTo(data[(PatternsProEditFlagStart + index)..]); // set edited flag for designs name import to be correct in game } public IVillager ReadVillager(ReadOnlySpan data, int index) diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets.cs new file mode 100644 index 0000000..9acba5a --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets.cs @@ -0,0 +1,55 @@ +using System; + +namespace NHSE.Core; + +/// +/// Offset info and object retrieval logic for +/// +public abstract class PostBoxOffsets +{ + public abstract int s_7b602b39 { get; } + public abstract int MailList { get; } + public abstract int FontTable { get; } + public abstract int LatestUniqueId { get; } + + public static PostBoxOffsets GetOffsets(FileHeaderInfo Info) + { + var rev = Info.GetKnownRevisionIndex(); + return rev switch + { + 0 => new PostBoxOffsets10(), + 1 => new PostBoxOffsets11(), + 2 => new PostBoxOffsets11(), + 3 => new PostBoxOffsets11(), + 4 => new PostBoxOffsets11(), + 5 => new PostBoxOffsets11(), + 6 => new PostBoxOffsets12(), + 7 => new PostBoxOffsets12(), + 8 => new PostBoxOffsets13(), + 9 => new PostBoxOffsets13(), + 10 => new PostBoxOffsets14(), + 11 => new PostBoxOffsets14(), + 12 => new PostBoxOffsets14(), + 13 => new PostBoxOffsets15(), + 14 => new PostBoxOffsets15(), + 15 => new PostBoxOffsets16(), + 16 => new PostBoxOffsets17(), + 17 => new PostBoxOffsets18(), + 18 => new PostBoxOffsets19(), + 19 => new PostBoxOffsets110(), + 20 => new PostBoxOffsets111(), + 21 => new PostBoxOffsets111(), + 22 => new PostBoxOffsets20(), + 23 => new PostBoxOffsets20(), + 24 => new PostBoxOffsets20(), + 25 => new PostBoxOffsets20(), + 26 => new PostBoxOffsets20(), + 27 => new PostBoxOffsets20(), + 28 => new PostBoxOffsets20(), + 29 => new PostBoxOffsets20(), + 30 => new PostBoxOffsets20(), + 31 => new PostBoxOffsets30(), + _ => throw new IndexOutOfRangeException("Unknown revision!" + Environment.NewLine + Info), + }; + } +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets10.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets10.cs new file mode 100644 index 0000000..6b13251 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets10.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets10 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x108; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44578; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets11.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets11.cs new file mode 100644 index 0000000..899dd41 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets11.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets11 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets110.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets110.cs new file mode 100644 index 0000000..967279d --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets110.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets110 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets111.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets111.cs new file mode 100644 index 0000000..7b32d14 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets111.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets111 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets12.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets12.cs new file mode 100644 index 0000000..1a895f2 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets12.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets12 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets13.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets13.cs new file mode 100644 index 0000000..d805e7e --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets13.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets13 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets14.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets14.cs new file mode 100644 index 0000000..ad073ba --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets14.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets14 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets15.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets15.cs new file mode 100644 index 0000000..bcb03bc --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets15.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets15 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets16.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets16.cs new file mode 100644 index 0000000..16a420c --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets16.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets16 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0xb44580; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets17.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets17.cs new file mode 100644 index 0000000..2f60122 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets17.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets17 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets18.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets18.cs new file mode 100644 index 0000000..9097429 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets18.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets18 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets19.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets19.cs new file mode 100644 index 0000000..80d44d5 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets19.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets19 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets20.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets20.cs new file mode 100644 index 0000000..90fbd2f --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets20.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets20 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Save/Offsets/PostBoxOffsets30.cs b/NHSE.Core/Save/Offsets/PostBoxOffsets30.cs new file mode 100644 index 0000000..33687ee --- /dev/null +++ b/NHSE.Core/Save/Offsets/PostBoxOffsets30.cs @@ -0,0 +1,16 @@ +using System; + +namespace NHSE.Core; + +/// +/// +/// +public sealed class PostBoxOffsets30 : PostBoxOffsets +{ + // GSavePostBox + private const int GSaveVersion = 0x0; // @0x0 size 0x100, align 4 + public override int s_7b602b39 => GSaveVersion + 0x100; // (_d35a9251) u32 "Code" size 0x4, align 4. In size 0x10 container + public override int MailList => GSaveVersion + 0x110; // Beginning of mail list + public override int FontTable => GSaveVersion + 0x46E60; // The forbidden alphabetti soup + public override int LatestUniqueId => 0x47420; // Next post index slot +} \ No newline at end of file diff --git a/NHSE.Core/Strings/GameStrings.cs b/NHSE.Core/Strings/GameStrings.cs index 0014ea0..8b5d729 100644 --- a/NHSE.Core/Strings/GameStrings.cs +++ b/NHSE.Core/Strings/GameStrings.cs @@ -14,8 +14,10 @@ public sealed class GameStrings : IRemakeString public readonly string[] itemlist; public readonly string[] itemlistdisplay; public readonly string[] villagerDefaultPhrases; + public readonly string[] mail; public readonly Dictionary VillagerMap; public readonly Dictionary VillagerDefaultPhraseMap; + public readonly Dictionary MailMap; public readonly List ItemDataSource; public readonly Dictionary InternalNameTranslation = []; @@ -36,6 +38,8 @@ public GameStrings(string l) itemlist = Get("item"); itemlistdisplay = GetItemDisplayList(itemlist); ItemDataSource = CreateItemDataSource(itemlistdisplay); + mail = Get("mail"); + MailMap = GetMap(mail); BodyParts = GetDictionary(Get("body_parts")); BodyColor = GetDictionary(Get("body_color")); @@ -116,6 +120,8 @@ public List CreateItemDataSource(IReadOnlyCollection VillagerDefaultPhraseMap.GetValueOrDefault(name, name); // I know it shouldn't be `name` but I have to return something + public string GetMail(string name) => MailMap.GetValueOrDefault(name, name); + public static string[] GetItemDisplayList(ReadOnlySpan arr) { var items = arr.ToArray(); diff --git a/NHSE.Core/Structures/Designs/DesignPattern.cs b/NHSE.Core/Structures/Designs/DesignPattern.cs index 86de1df..7d2133f 100644 --- a/NHSE.Core/Structures/Designs/DesignPattern.cs +++ b/NHSE.Core/Structures/Designs/DesignPattern.cs @@ -13,6 +13,7 @@ public sealed class DesignPattern(Memory Raw) : IVillagerOrigin public const int SIZE = 0x2A8; // 3 bytes unused at end private const int PersonalOffset = 0x38; + private const int UsageCompatibilityOffset = 0x70; private const int PaletteDataStart = 0x78; public const int PaletteColorCount = 15; // y not 16??? private const int PaletteColorSize = 3; // R, G, B @@ -66,6 +67,12 @@ public string PlayerName set => StringUtil.GetBytes(value, 10).CopyTo(Data[(PersonalOffset + 0x20)..]); } + public uint UsageCompatibility + { + get => ReadUInt32LittleEndian(Data[UsageCompatibilityOffset..]); + set => WriteUInt32LittleEndian(Data[UsageCompatibilityOffset..], value); + } + public Span GetPlayerIdentity() => Data.Slice(PersonalOffset + 0x1C, 4 + 20); /// diff --git a/NHSE.Core/Structures/Designs/DesignPatternPRO.cs b/NHSE.Core/Structures/Designs/DesignPatternPRO.cs index 02779ff..0f0d82b 100644 --- a/NHSE.Core/Structures/Designs/DesignPatternPRO.cs +++ b/NHSE.Core/Structures/Designs/DesignPatternPRO.cs @@ -14,6 +14,7 @@ public sealed class DesignPatternPRO(Memory Raw) : IVillagerOrigin public const int SIZE = 0x8A8; // 3 bytes unused at end public const int SheetCount = 4; private const int PersonalOffset = 0x38; + private const int UsageCompatibilityOffset = 0x70; private const int PaletteDataStart = 0x78; public const int PaletteColorCount = 15; // y not 16??? private const int PaletteColorSize = 3; // R, G, B @@ -67,6 +68,12 @@ public string PlayerName set => StringUtil.GetBytes(value, 10).CopyTo(Data[(PersonalOffset + 0x20)..]); } + public uint UsageCompatibility + { + get => ReadUInt32LittleEndian(Data[UsageCompatibilityOffset..]); + set => WriteUInt32LittleEndian(Data[UsageCompatibilityOffset..], value); + } + public Span GetPlayerIdentity() => Data.Slice(PersonalOffset + 0x1C, 4 + 20); public void SetPixelAtIndex(int sheet, int index, int value) diff --git a/NHSE.Core/Structures/Item/ItemWrapping.cs b/NHSE.Core/Structures/Item/ItemWrapping.cs index ca0d877..f4dd928 100644 --- a/NHSE.Core/Structures/Item/ItemWrapping.cs +++ b/NHSE.Core/Structures/Item/ItemWrapping.cs @@ -1,4 +1,6 @@ -namespace NHSE.Core; +using System.Collections.Generic; + +namespace NHSE.Core; /// /// Type of wrapping an has @@ -12,4 +14,76 @@ public enum ItemWrapping : byte // These values are handled with special logic. Only 2 bits are allocated to be stored. Festive = 4, +} + +/// +/// Provides extended wrapping and box skin information for items. +/// +/// +/// Contains lookup dictionaries for item wrapping paper colors and delivery box types. +/// +public sealed class ItemWrappingExtended +{ + /// + /// Dictionary mapping wrapping skin identifiers to their corresponding . + /// + /// + /// Keys are hexadecimal identifiers representing different wrapping paper colors and styles. + /// Includes cultural variants (Lucky Red Envelope, Bokjumeoni Pouch, Otoshidama Envelope). + /// Can return a string for the skin name, or an index for UI ordering or selection use. + /// + // TODO: Build new string resource: "text_wrappers_xx.txt" and convert WrappingInfo.name to a key to lookup against it for translations. + public static readonly Dictionary ItemWrappingSkin = new() // + { + { 0x00, new("wrap00", 0) }, + { 0x02, new("wrap01", 1) }, + { 0x01, new("wrap02", 2) }, + { 0x05, new("wrap03", 3) }, + { 0x09, new("wrap04", 4) }, + { 0x0D, new("wrap05", 5) }, + { 0x11, new("wrap06", 6) }, + { 0x15, new("wrap07", 7) }, + { 0x19, new("wrap08", 8) }, + { 0x1D, new("wrap09", 9) }, + { 0x21, new("wrap10", 10) }, + { 0x25, new("wrap11", 11) }, + { 0x29, new("wrap12", 12) }, + { 0x2D, new("wrap13", 13) }, + { 0x31, new("wrap14", 14) }, + { 0x35, new("wrap15", 15) }, + { 0x39, new("wrap16", 16) }, + { 0x3D, new("wrap17", 17) }, + { 0x3F, new("wrap18", 18) }, + { 0x33, new("wrap19", 19) }, + { 0x37, new("wrap20", 20) }, + { 0x3B, new("wrap21", 21) }, + }; + /// + /// Represents information about a wrapping paper type. + /// + /// The display name of the wrapping paper. + /// The index used for UI ordering or selection. + public record WrappingInfo(string name, int index); + + /// + /// Dictionary mapping box skin identifiers to their corresponding . + /// + /// + /// Keys are hexadecimal identifiers representing different delivery boxes. + /// Includes service-specific boxes (Nook Shopping Box, Hotel Box, Paradise Planning Box). + /// + // TODO: Build new string resource: "text_wrappers_xx.txt" and convert WrappingInfo.name to a key to lookup against it for translations. + public static readonly Dictionary ItemBoxSkin = new() + { + { 0x00, new("box00", 0) }, + { 0x43, new("box01", 1) }, + { 0x6B, new("box02", 2) }, + { 0x6F, new("box03", 3) }, + }; + /// + /// Represents information about a delivery box type. + /// + /// The display name of the box type. + /// The index used for UI ordering or selection. + public record BoxInfo(string name, int index); } \ No newline at end of file diff --git a/NHSE.Core/Structures/Mail/Mail.cs b/NHSE.Core/Structures/Mail/Mail.cs new file mode 100644 index 0000000..342d662 --- /dev/null +++ b/NHSE.Core/Structures/Mail/Mail.cs @@ -0,0 +1,220 @@ +using System.Collections.Generic; + +namespace NHSE.Core; + +public sealed class Mail +{ + public const int SIZE = 0x3C8; + public const int MaxSlots = 299; // zero based (300 slots) + + public const int ReadUnread = 0x0; // 03 = unread, 04 = read + public const int LetterFavourited = 0x1; // 00 = not marked fav, 01 = marked fav + + public const int PlayerSenderIslandID = 0x4; // Used if sender is a player + public const int PlayerSenderIslandName = 0x8; + public const int NPCSenderSpeciesID = 0x4; // Used if sender is a villager or NPC + public const int NPCSenderVariantID = 0x5; + public const int NPCSenderIslandID = 0x8; + public const int NPCSenderIslandName = 0xC; + + public const int SenderID = 0x20; // Sender player identity 4 byte ID or 00000000.. = NPC, 02000000.. = villager + public const int SenderName = 0x24; // Usual 20 byte string (10 char) + + public const int SenderType = 0x5C; // 00 = player, 01 = villager, 02 = NPC + + public const int ReceiverIslandID = 0x60; // Receiver island identity + public const int ReceiverIslandName = 0x64; + public const int ReceiverPlayerID = 0x7C; // Receiver player identity + public const int ReceiverPlayerName = 0x80; + + public const int TimeStamp = 0xBC; // Timestamp start + + public const int AttachedItemID = 0xC0; // ID of item attached to mail, FFFE(le) if collected, type used is cleared + public const int MailItemWrappingType = 0xC3; // Box type used for mail - cleared when item taken + + public const int MailType01 = 0xC8; // If boxed item only, then = 01 and MailType02 = 00 + public const int MailType02 = 0xCC; // If letter item, then = 01 and MailType01 = 00 + + public const int LetterToLineText = 0xCE; // Max size for text in the to line up top (47 char) weird size + public const int LetterToTextLength = 47; // Max renderable, not sure about official limit + public const int LetterMessageText = 0x12E; // MSG start + public const int LetterMessageTextLength = 239; // Max renderable size is 239 char despite official input UI limit of 168 char + public const int LetterMessageTextLengthOfficial = 168; + public const int LetterFromLineText = 0x30E; // Max size for text in the from line up top (47 char) weird size + public const int LetterFromTextLength = 47; // Max renderable, not sure about official limit + + public const int MailStationerySkin = 0x36E; // Skin code (2 byte le int) + + public const int PostBoxSortIndex = 0x374; // PostBox index/slot 1->300(0->299)[0x0->0x12B] - position in postbox, bottom up + + public const int LanguageString = 0x390; // When sent by a player, shows language flag, like 'en-GB' otherwise not used + + /// + /// Maps NPC sender IDs to their corresponding data, including image identifiers, name conversions, and mapping indices. + /// + /// + /// The dictionary key represents the NPC's unique identifier stored at offset in the mail data. + /// Each entry contains image asset names, localization keys, and index values for various in-game NPCs and services + /// such as Tom Nook, Nook Inc., villagers, and special characters. + /// + public record SenderNPCInfo(string Image, string NameConversion, int MappingIndex); + public static readonly Dictionary SenderNPCData = new() + { + { 22, new("rco", "rco", 0) }, // 0x1600 Tom Nook + { 25, new("rco", "npc_nookinc", 1) }, // 0x1900 Nook Inc. + { 40, new("bey", "bey", 2) }, // 0x2800 C.J. + { 41, new("chy", "chy", 3) }, // 0x2900 Flick + { 42, new("pyn", "pyn", 4) }, // 0x2A00 Zipper + { 43, new("fox", "fox", 5) }, // 0x2B00 Redd + { 44, new("alp", "alp", 6) }, // 0x2C00 Reese & Cyrus + { 45, new("gulB", "gulB", 7) }, // 0x2D00 Gullivarrr + { 46, new("tap", "tap", 8) }, // 0x2E00 Luna + { 47, new("pkn", "pkn", 9) }, // 0x2F00 Jack + { 48, new("xct", "xct", 10) }, // 0x3000 Rover + { 50, new("bpt", "bpt", 11) }, // 0x3200 Katrina + { 51, new("slo", "slo", 12) }, // 0x3300 Lief + { 52, new("spn", "spn", 13) }, // 0x3400 Harvey + { 53, new("man", "man", 14) }, // 0x3500 Wardell + { 54, new("OneroomCardboard", "npc_paradiseplanning", 15) }, // 0x3600 Paradise Planning + { 55, new("otg", "otg", 16) }, // 0x3700 Lottie + { 56, new("mnc", "mnc", 17) }, // 0x3800 Niko + { 57, new("kpg", "npc_hotel", 18) }, // 0x3900 Hotel + { 60, new("gul", "gul", 19) }, // 0x3C00 Gulliver + { 61, new("gstA", "gstA", 20) }, // 0x3D00 Wisp + { 62, new("hgc", "hgc", 21) }, // 0x3E00 Label + { 63, new("tkkA", "tkkA", 22) }, // 0x3F00 K.K. + { 64, new("boc", "boc", 23) }, // 0x4000 Daisy Mae + { 65, new("SnowCrystal", "npc_snowboy", 24) }, // 0x4100 Snowboy + { 66, new("bey", "bey", 25) }, // 0x4200 C.J (Duplicate...?) + { 67, new("chy", "chy", 26) }, // 0x4300 Flick (Duplicate...?) + { 68, new("mol", "mol", 27) }, // 0x4400 Resetti + { 80, new("ott", "npc_hha", 28) }, // 0x5000 Happy Home Academy Ranking + { 81, new("Leaf", "npc_nintendo", 29) }, // 0x5100 Nintendo & Happy Home Academy Welcome + { 82, new("MoneyBag010", "npc_bankofnook", 30) }, // 0x5200 Bank of Nook, [island] + { 84, new("Cardboard", "npc_nookshopping", 31) }, // 0x5400 Nook Shopping + { 85, new("PlaneTicket", "npc_nookmileageprogram", 32) }, // 0x5500 Nook Mileage Program + { 86, new("Post", "npc_mom", 33) }, // 0x5600 Mom + { 87, new("dod", "npc_dodoairlines", 34) }, // 0x5700 Dodo Airlines + { 88, new("owl", "npc_thefarwaymuseum", 35) }, // 0x5800 The Farway Museum + { 89, new("Leaf", "npc_nooklinkadmins", 36) } // 0x5900 NookLink Admins + }; + + public static readonly Dictionary BCP47LanguageString = new() + { + { "en-US", 0 }, + { "en-GB", 1 }, + { "ja-JP", 2 }, + { "de-DE", 3 }, + { "es-ES", 4 }, + { "fr-FR", 5 }, + { "it-IT", 6 }, + { "ko-KR", 7 }, + { "zh-CN", 8 }, + { "zh-TW", 9 }, + }; + + public static List NPCTypeList = new List + { + "Player", + "Villager", + "NPC" + }; + + public static List MailTypeList = new List + { + "Boxed Item", + "Letter", + }; + + /// + /// Maps stationery skin IDs to their corresponding data, including the display name and mapping index. + /// + /// + /// The dictionary key represents the stationery skin code stored at offset in the mail data. + /// Each entry contains the localized card name and an index value for various letter stationery designs + /// such as holiday cards, event cards, and special NPC-branded stationery. + /// + public record StationeryInfo(string name, int index); + public static readonly Dictionary LetterStationerySkin = new() + { + // Multiple sources on official total count of skins... + // 68 total according to most wikis, 64 on others. + // 75 according to datamine (including unused(?) T&T logo one) + { 0, new("mail00", 0) }, + { 356, new("mail01", 1) }, + { 357, new("mail02", 2) }, + { 358, new("mail03", 3) }, + { 359, new("mail04", 4) }, + { 360, new("mail05", 5) }, + { 361, new("mail06", 6) }, + { 362, new("mail07", 7) }, + { 363, new("mail08", 8) }, + { 364, new("mail09", 9) }, + { 365, new("mail10", 10) }, + { 366, new("mail11", 11) }, + { 367, new("mail12", 12) }, + { 368, new("mail13", 13) }, + { 370, new("mail14", 14) }, + { 371, new("mail15", 15) }, + { 372, new("mail16", 16) }, + { 373, new("mail17", 17) }, + { 374, new("mail18", 18) }, + { 375, new("mail19", 19) }, + { 376, new("mail20", 20) }, + { 377, new("mail21", 21) }, + { 378, new("mail22", 22) }, + { 379, new("mail23", 23) }, + { 380, new("mail24", 24) }, + { 381, new("mail25", 25) }, + { 382, new("mail26", 26) }, + { 383, new("mail27", 27) }, + { 384, new("mail28", 28) }, + { 385, new("mail29", 29) }, + { 386, new("mail30", 30) }, + { 387, new("mail31", 31) }, + { 388, new("mail32", 32) }, + { 389, new("mail33", 33) }, + { 390, new("mail34", 34) }, + { 391, new("mail35", 35) }, + { 392, new("mail36", 36) }, + { 393, new("mail37", 37) }, + { 394, new("mail38", 38) }, + { 395, new("mail39", 39) }, + { 396, new("mail40", 40) }, + { 397, new("mail41", 41) }, + { 398, new("mail42", 42) }, + { 399, new("mail43", 43) }, + { 402, new("mail44", 44) }, + { 403, new("mail45", 45) }, + { 404, new("mail46", 46) }, + { 405, new("mail47", 47) }, + { 406, new("mail48", 48) }, + { 407, new("mail49", 49) }, + { 408, new("mail50", 50) }, + { 409, new("mail51", 51) }, + { 410, new("mail52", 52) }, + { 411, new("mail53", 53) }, + { 412, new("mail54", 54) }, + { 413, new("mail55", 55) }, + { 414, new("mail56", 56) }, + { 416, new("mail57", 57) }, + { 427, new("mail58", 58) }, + { 428, new("mail59", 59) }, + { 429, new("mail60", 60) }, + { 430, new("mail61", 61) }, + { 431, new("mail62", 62) }, + { 432, new("mail63", 63) }, + { 433, new("mail64", 64) }, + { 434, new("mail65", 65) }, + { 435, new("mail66", 66) }, + { 437, new("mail67", 67) }, + { 438, new("mail68", 68) }, + { 439, new("mail69", 69) }, + { 440, new("mail70", 70) }, + { 443, new("mail71", 71) }, + { 444, new("mail72", 72) }, + { 445, new("mail73", 73) }, + { 448, new("mail74", 74) }, + }; +} + diff --git a/NHSE.WinForms/Controls/ItemEditor.cs b/NHSE.WinForms/Controls/ItemEditor.cs index 2a92be3..90be744 100644 --- a/NHSE.WinForms/Controls/ItemEditor.cs +++ b/NHSE.WinForms/Controls/ItemEditor.cs @@ -16,6 +16,7 @@ public partial class ItemEditor : UserControl private bool Loading = true; private bool CanExtend; + private bool SupressedMode = false; public ItemEditor() { @@ -36,7 +37,7 @@ public ItemEditor() private IReadOnlyList AllItems = []; - public void Initialize(IReadOnlyList items, bool canExtend = false) + public void Initialize(IReadOnlyList items, bool canExtend = false, bool supressed = false) { CHK_IsExtension.Visible = CanExtend = canExtend; @@ -55,6 +56,8 @@ public void Initialize(IReadOnlyList items, bool canExtend = false) LoadItem(Item.NO_ITEM); AllItems = items; + + SupressedMode = supressed; } public Item LoadItem(Item item) @@ -163,6 +166,20 @@ public Item SetItem(Item item) return item; } + /// + /// Hides the item wrapping UI controls from the editor for handling via custom UIs. + /// + /// + /// This method sets the visibility of both the wrapped checkbox () + /// and the wrapped options panel () to . + /// Use this when wrapping information should not be displayed or edited by the standard controls. + /// + public void SupressWrappedInfo() + { + CHK_Wrapped.Visible = false; + FLP_Wrapped.Visible = false; + } + private Item SetExtensionItem(Item item) { var id = (ushort)WinFormsUtil.GetIndex(CB_ItemID); @@ -210,6 +227,7 @@ private void CB_ItemID_SelectedValueChanged(object sender, EventArgs e) L_RemakeFabric.Text = fabric; L_RemakeFabric.Visible = fabric.Length != 0; } + if (SupressedMode) SupressWrappedInfo(); } private void LoadItemTypeValues(ItemKind k, ushort index) @@ -241,6 +259,8 @@ private void LoadItemTypeValues(ItemKind k, ushort index) CHK_Wrapped.Visible = true; FLP_Flag1.Visible = false; + + if (SupressedMode) SupressWrappedInfo(); } private void ToggleEditorVisibility(ItemKind k, ushort id) diff --git a/NHSE.WinForms/Controls/VillagerEditor.cs b/NHSE.WinForms/Controls/VillagerEditor.cs index 6f5aabe..e534399 100644 --- a/NHSE.WinForms/Controls/VillagerEditor.cs +++ b/NHSE.WinForms/Controls/VillagerEditor.cs @@ -14,14 +14,16 @@ public partial class VillagerEditor : UserControl public IVillagerOrigin Origin; private readonly HorizonSave SAV; private int VillagerIndex = -1; + private int PlayerIndex = -1; private bool Loading; - public VillagerEditor(IVillager[] villagers, IVillagerOrigin origin, HorizonSave sav, bool hasHouses) + public VillagerEditor(IVillager[] villagers, IVillagerOrigin origin, HorizonSave sav, bool hasHouses, int playerIndex) { InitializeComponent(); Villagers = villagers; Origin = origin; SAV = sav; + PlayerIndex = playerIndex; LoadVillagers(); B_EditHouses.Visible = hasHouses; @@ -218,13 +220,10 @@ private void B_EditVillagerRoom_Click(object sender, EventArgs e) private void B_EditVillagerDesign_Click(object sender, EventArgs e) { - var playerID = SAV.Players[0].Personal.GetPlayerIdentity(); // fetch ID for overwrite ownership - var townID = SAV.Players[0].Personal.GetTownIdentity(); // fetch ID for overwrite ownership + var player = SAV.Players[PlayerIndex]; var v = Villagers[VillagerIndex]; DesignPatternPRO[] tmp = [v.Design]; - using var editor = new PatternEditorPRO(tmp); - playerID.CopyTo(tmp[0].Data[0x54..]); // overwrite playerID bytes - townID.CopyTo(tmp[0].Data[0x38..]); // overwrite townID bytes + using var editor = new PatternEditorPRO(tmp, player); if (editor.ShowDialog() == DialogResult.OK) v.Design = tmp[0]; } diff --git a/NHSE.WinForms/Editor.Designer.cs b/NHSE.WinForms/Editor.Designer.cs index 18ca5fa..e0bc700 100644 --- a/NHSE.WinForms/Editor.Designer.cs +++ b/NHSE.WinForms/Editor.Designer.cs @@ -51,6 +51,7 @@ private void InitializeComponent() Tab_Map = new System.Windows.Forms.TabPage(); B_EditFruitFlower = new System.Windows.Forms.Button(); B_EditCampsite = new System.Windows.Forms.Button(); + B_EditPlayerPostBox = new System.Windows.Forms.ToolStripMenuItem(); NUD_WeatherSeed = new System.Windows.Forms.NumericUpDown(); L_WeatherSeed = new System.Windows.Forms.Label(); B_EditDesignsTailor = new System.Windows.Forms.Button(); @@ -136,7 +137,7 @@ private void InitializeComponent() Menu_Editor.Location = new System.Drawing.Point(0, 0); Menu_Editor.Name = "Menu_Editor"; Menu_Editor.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2); - Menu_Editor.Size = new System.Drawing.Size(471, 25); + Menu_Editor.Size = new System.Drawing.Size(471, 24); Menu_Editor.TabIndex = 0; Menu_Editor.Text = "menuStrip1"; // @@ -144,14 +145,14 @@ private void InitializeComponent() // Menu_File.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_Save }); Menu_File.Name = "Menu_File"; - Menu_File.Size = new System.Drawing.Size(39, 21); + Menu_File.Size = new System.Drawing.Size(37, 20); Menu_File.Text = "File"; // // Menu_Save // Menu_Save.Name = "Menu_Save"; Menu_Save.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S; - Menu_Save.Size = new System.Drawing.Size(147, 22); + Menu_Save.Size = new System.Drawing.Size(138, 22); Menu_Save.Text = "Save"; Menu_Save.Click += Menu_Save_Click; // @@ -159,14 +160,14 @@ private void InitializeComponent() // Menu_Tools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_DumpDecrypted, Menu_VerifyHashes, Menu_LoadDecrypted, Menu_RAMEdit, Menu_ItemImages }); Menu_Tools.Name = "Menu_Tools"; - Menu_Tools.Size = new System.Drawing.Size(51, 21); + Menu_Tools.Size = new System.Drawing.Size(47, 20); Menu_Tools.Text = "Tools"; // // Menu_DumpDecrypted // Menu_DumpDecrypted.Name = "Menu_DumpDecrypted"; Menu_DumpDecrypted.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D; - Menu_DumpDecrypted.Size = new System.Drawing.Size(221, 22); + Menu_DumpDecrypted.Size = new System.Drawing.Size(206, 22); Menu_DumpDecrypted.Text = "Dump Decrypted"; Menu_DumpDecrypted.Click += Menu_DumpDecrypted_Click; // @@ -174,7 +175,7 @@ private void InitializeComponent() // Menu_VerifyHashes.Name = "Menu_VerifyHashes"; Menu_VerifyHashes.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.H; - Menu_VerifyHashes.Size = new System.Drawing.Size(221, 22); + Menu_VerifyHashes.Size = new System.Drawing.Size(206, 22); Menu_VerifyHashes.Text = "Verify Hashes"; Menu_VerifyHashes.Click += Menu_VerifyHashes_Click; // @@ -182,7 +183,7 @@ private void InitializeComponent() // Menu_LoadDecrypted.Name = "Menu_LoadDecrypted"; Menu_LoadDecrypted.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.L; - Menu_LoadDecrypted.Size = new System.Drawing.Size(221, 22); + Menu_LoadDecrypted.Size = new System.Drawing.Size(206, 22); Menu_LoadDecrypted.Text = "Load Decrypted"; Menu_LoadDecrypted.Click += Menu_LoadDecrypted_Click; // @@ -190,7 +191,7 @@ private void InitializeComponent() // Menu_RAMEdit.Name = "Menu_RAMEdit"; Menu_RAMEdit.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R; - Menu_RAMEdit.Size = new System.Drawing.Size(221, 22); + Menu_RAMEdit.Size = new System.Drawing.Size(206, 22); Menu_RAMEdit.Text = "RAM Edit"; Menu_RAMEdit.Click += Menu_RAMEdit_Click; // @@ -198,7 +199,7 @@ private void InitializeComponent() // Menu_ItemImages.Name = "Menu_ItemImages"; Menu_ItemImages.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M; - Menu_ItemImages.Size = new System.Drawing.Size(221, 22); + Menu_ItemImages.Size = new System.Drawing.Size(206, 22); Menu_ItemImages.Text = "Item Images"; Menu_ItemImages.Click += Menu_ItemImages_Click; // @@ -206,7 +207,7 @@ private void InitializeComponent() // Menu_Options.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_Language, Menu_Theme, Menu_Settings }); Menu_Options.Name = "Menu_Options"; - Menu_Options.Size = new System.Drawing.Size(66, 21); + Menu_Options.Size = new System.Drawing.Size(61, 20); Menu_Options.Text = "Options"; // // Menu_Language @@ -214,7 +215,7 @@ private void InitializeComponent() Menu_Language.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; Menu_Language.Items.AddRange(new object[] { "English", "日本語", "Deutsch", "Español", "Français", "Italiano", "한국어", "简体中文", "繁體中文" }); Menu_Language.Name = "Menu_Language"; - Menu_Language.Size = new System.Drawing.Size(115, 25); + Menu_Language.Size = new System.Drawing.Size(115, 23); Menu_Language.SelectedIndexChanged += Menu_Language_SelectedIndexChanged; // // Menu_Theme @@ -227,21 +228,21 @@ private void InitializeComponent() // Menu_Theme_System // Menu_Theme_System.Name = "Menu_Theme_System"; - Menu_Theme_System.Size = new System.Drawing.Size(160, 22); + Menu_Theme_System.Size = new System.Drawing.Size(152, 22); Menu_Theme_System.Text = "System Theme"; Menu_Theme_System.Click += Menu_Theme_System_Click; // // Menu_Theme_Classic // Menu_Theme_Classic.Name = "Menu_Theme_Classic"; - Menu_Theme_Classic.Size = new System.Drawing.Size(160, 22); + Menu_Theme_Classic.Size = new System.Drawing.Size(152, 22); Menu_Theme_Classic.Text = "Light (Classic)"; Menu_Theme_Classic.Click += Menu_Theme_Classic_Click; // // Menu_Theme_Dark // Menu_Theme_Dark.Name = "Menu_Theme_Dark"; - Menu_Theme_Dark.Size = new System.Drawing.Size(160, 22); + Menu_Theme_Dark.Size = new System.Drawing.Size(152, 22); Menu_Theme_Dark.Text = "Dark"; Menu_Theme_Dark.Click += Menu_Theme_Dark_Click; // @@ -259,12 +260,12 @@ private void InitializeComponent() CM_Picture.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_SavePNG }); CM_Picture.Name = "CM_Picture"; CM_Picture.ShowImageMargin = false; - CM_Picture.Size = new System.Drawing.Size(109, 26); + CM_Picture.Size = new System.Drawing.Size(101, 26); // // Menu_SavePNG // Menu_SavePNG.Name = "Menu_SavePNG"; - Menu_SavePNG.Size = new System.Drawing.Size(108, 22); + Menu_SavePNG.Size = new System.Drawing.Size(100, 22); Menu_SavePNG.Text = "Save .png"; Menu_SavePNG.Click += Menu_SavePNG_Click; // @@ -286,11 +287,11 @@ private void InitializeComponent() Tab_Map.Controls.Add(B_EditPatterns); Tab_Map.Controls.Add(B_EditTurnipExchange); Tab_Map.Controls.Add(B_RecycleBin); - Tab_Map.Location = new System.Drawing.Point(4, 36); + Tab_Map.Location = new System.Drawing.Point(4, 34); Tab_Map.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); Tab_Map.Name = "Tab_Map"; Tab_Map.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - Tab_Map.Size = new System.Drawing.Size(463, 342); + Tab_Map.Size = new System.Drawing.Size(463, 297); Tab_Map.TabIndex = 2; Tab_Map.Text = "Map"; Tab_Map.UseVisualStyleBackColor = true; @@ -298,10 +299,10 @@ private void InitializeComponent() // B_EditFruitFlower // B_EditFruitFlower.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - B_EditFruitFlower.Location = new System.Drawing.Point(236, 270); + B_EditFruitFlower.Location = new System.Drawing.Point(236, 236); B_EditFruitFlower.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditFruitFlower.Name = "B_EditFruitFlower"; - B_EditFruitFlower.Size = new System.Drawing.Size(107, 64); + B_EditFruitFlower.Size = new System.Drawing.Size(107, 56); B_EditFruitFlower.TabIndex = 67; B_EditFruitFlower.Text = "Edit Island Fruits + Flowers"; B_EditFruitFlower.UseVisualStyleBackColor = true; @@ -310,10 +311,10 @@ private void InitializeComponent() // B_EditCampsite // B_EditCampsite.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - B_EditCampsite.Location = new System.Drawing.Point(121, 270); + B_EditCampsite.Location = new System.Drawing.Point(121, 236); B_EditCampsite.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditCampsite.Name = "B_EditCampsite"; - B_EditCampsite.Size = new System.Drawing.Size(107, 64); + B_EditCampsite.Size = new System.Drawing.Size(107, 56); B_EditCampsite.TabIndex = 66; B_EditCampsite.Text = "Edit Campsite"; B_EditCampsite.UseVisualStyleBackColor = true; @@ -322,7 +323,7 @@ private void InitializeComponent() // NUD_WeatherSeed // NUD_WeatherSeed.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0); - NUD_WeatherSeed.Location = new System.Drawing.Point(236, 77); + NUD_WeatherSeed.Location = new System.Drawing.Point(236, 68); NUD_WeatherSeed.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_WeatherSeed.Maximum = new decimal(new int[] { -1, 0, 0, 0 }); NUD_WeatherSeed.Name = "NUD_WeatherSeed"; @@ -333,19 +334,19 @@ private void InitializeComponent() // L_WeatherSeed // L_WeatherSeed.AutoSize = true; - L_WeatherSeed.Location = new System.Drawing.Point(351, 79); + L_WeatherSeed.Location = new System.Drawing.Point(351, 70); L_WeatherSeed.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_WeatherSeed.Name = "L_WeatherSeed"; - L_WeatherSeed.Size = new System.Drawing.Size(89, 17); + L_WeatherSeed.Size = new System.Drawing.Size(79, 15); L_WeatherSeed.TabIndex = 64; L_WeatherSeed.Text = "Weather Seed"; // // B_EditDesignsTailor // - B_EditDesignsTailor.Location = new System.Drawing.Point(350, 128); + B_EditDesignsTailor.Location = new System.Drawing.Point(350, 113); B_EditDesignsTailor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditDesignsTailor.Name = "B_EditDesignsTailor"; - B_EditDesignsTailor.Size = new System.Drawing.Size(107, 64); + B_EditDesignsTailor.Size = new System.Drawing.Size(107, 56); B_EditDesignsTailor.TabIndex = 63; B_EditDesignsTailor.Text = "Edit Tailor Designs"; B_EditDesignsTailor.UseVisualStyleBackColor = true; @@ -353,10 +354,10 @@ private void InitializeComponent() // // B_EditPatternFlag // - B_EditPatternFlag.Location = new System.Drawing.Point(236, 128); + B_EditPatternFlag.Location = new System.Drawing.Point(236, 113); B_EditPatternFlag.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPatternFlag.Name = "B_EditPatternFlag"; - B_EditPatternFlag.Size = new System.Drawing.Size(107, 64); + B_EditPatternFlag.Size = new System.Drawing.Size(107, 56); B_EditPatternFlag.TabIndex = 62; B_EditPatternFlag.Text = "Edit Flag Design"; B_EditPatternFlag.UseVisualStyleBackColor = true; @@ -366,29 +367,29 @@ private void InitializeComponent() // CB_AirportColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; CB_AirportColor.FormattingEnabled = true; - CB_AirportColor.Location = new System.Drawing.Point(236, 42); + CB_AirportColor.Location = new System.Drawing.Point(236, 37); CB_AirportColor.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); CB_AirportColor.Name = "CB_AirportColor"; - CB_AirportColor.Size = new System.Drawing.Size(107, 25); + CB_AirportColor.Size = new System.Drawing.Size(107, 23); CB_AirportColor.TabIndex = 61; // // L_AirportColor // L_AirportColor.AutoSize = true; - L_AirportColor.Location = new System.Drawing.Point(350, 45); + L_AirportColor.Location = new System.Drawing.Point(350, 40); L_AirportColor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_AirportColor.Name = "L_AirportColor"; - L_AirportColor.Size = new System.Drawing.Size(85, 17); + L_AirportColor.Size = new System.Drawing.Size(76, 15); L_AirportColor.TabIndex = 60; L_AirportColor.Text = "Airport Color"; // // L_Hemisphere // L_Hemisphere.AutoSize = true; - L_Hemisphere.Location = new System.Drawing.Point(350, 11); + L_Hemisphere.Location = new System.Drawing.Point(350, 10); L_Hemisphere.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_Hemisphere.Name = "L_Hemisphere"; - L_Hemisphere.Size = new System.Drawing.Size(78, 17); + L_Hemisphere.Size = new System.Drawing.Size(71, 15); L_Hemisphere.TabIndex = 58; L_Hemisphere.Text = "Hemisphere"; // @@ -396,19 +397,19 @@ private void InitializeComponent() // CB_Hemisphere.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; CB_Hemisphere.FormattingEnabled = true; - CB_Hemisphere.Location = new System.Drawing.Point(236, 8); + CB_Hemisphere.Location = new System.Drawing.Point(236, 7); CB_Hemisphere.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); CB_Hemisphere.Name = "CB_Hemisphere"; - CB_Hemisphere.Size = new System.Drawing.Size(107, 25); + CB_Hemisphere.Size = new System.Drawing.Size(107, 23); CB_Hemisphere.TabIndex = 57; // // B_EditPlayerHouses // B_EditPlayerHouses.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - B_EditPlayerHouses.Location = new System.Drawing.Point(7, 270); + B_EditPlayerHouses.Location = new System.Drawing.Point(7, 236); B_EditPlayerHouses.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPlayerHouses.Name = "B_EditPlayerHouses"; - B_EditPlayerHouses.Size = new System.Drawing.Size(107, 64); + B_EditPlayerHouses.Size = new System.Drawing.Size(107, 56); B_EditPlayerHouses.TabIndex = 56; B_EditPlayerHouses.Text = "Edit Player Houses"; B_EditPlayerHouses.UseVisualStyleBackColor = true; @@ -418,10 +419,10 @@ private void InitializeComponent() // B_EditMap.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; B_EditMap.ContextMenuStrip = CM_EditMap; - B_EditMap.Location = new System.Drawing.Point(350, 270); + B_EditMap.Location = new System.Drawing.Point(350, 236); B_EditMap.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditMap.Name = "B_EditMap"; - B_EditMap.Size = new System.Drawing.Size(107, 64); + B_EditMap.Size = new System.Drawing.Size(107, 56); B_EditMap.TabIndex = 2; B_EditMap.Text = "Edit Map..."; B_EditMap.UseVisualStyleBackColor = true; @@ -432,49 +433,49 @@ private void InitializeComponent() CM_EditMap.ImageScalingSize = new System.Drawing.Size(20, 20); CM_EditMap.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { B_EditLandFlags, B_EditFieldItems, B_EditBulletin, B_EditMuseum_Click, B_EditVisitors }); CM_EditMap.Name = "CM_EditMap"; - CM_EditMap.Size = new System.Drawing.Size(183, 114); + CM_EditMap.Size = new System.Drawing.Size(172, 114); // // B_EditLandFlags // B_EditLandFlags.Name = "B_EditLandFlags"; - B_EditLandFlags.Size = new System.Drawing.Size(182, 22); + B_EditLandFlags.Size = new System.Drawing.Size(171, 22); B_EditLandFlags.Text = "Edit Flags"; B_EditLandFlags.Click += B_EditLandFlags_Click; // // B_EditFieldItems // B_EditFieldItems.Name = "B_EditFieldItems"; - B_EditFieldItems.Size = new System.Drawing.Size(182, 22); + B_EditFieldItems.Size = new System.Drawing.Size(171, 22); B_EditFieldItems.Text = "Edit Field Items"; B_EditFieldItems.Click += B_EditFieldItems_Click; // // B_EditBulletin // B_EditBulletin.Name = "B_EditBulletin"; - B_EditBulletin.Size = new System.Drawing.Size(182, 22); + B_EditBulletin.Size = new System.Drawing.Size(171, 22); B_EditBulletin.Text = "Edit Bulletin Board"; B_EditBulletin.Click += B_EditBulletin_Click; // // B_EditMuseum_Click // B_EditMuseum_Click.Name = "B_EditMuseum_Click"; - B_EditMuseum_Click.Size = new System.Drawing.Size(182, 22); + B_EditMuseum_Click.Size = new System.Drawing.Size(171, 22); B_EditMuseum_Click.Text = "Edit Museum"; B_EditMuseum_Click.Click += B_EditMuseum_Click_Click; // // B_EditVisitors // B_EditVisitors.Name = "B_EditVisitors"; - B_EditVisitors.Size = new System.Drawing.Size(182, 22); + B_EditVisitors.Size = new System.Drawing.Size(171, 22); B_EditVisitors.Text = "Edit Visitors"; B_EditVisitors.Click += B_EditVisitors_Click; // // B_EditPRODesigns // - B_EditPRODesigns.Location = new System.Drawing.Point(121, 128); + B_EditPRODesigns.Location = new System.Drawing.Point(121, 113); B_EditPRODesigns.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPRODesigns.Name = "B_EditPRODesigns"; - B_EditPRODesigns.Size = new System.Drawing.Size(107, 64); + B_EditPRODesigns.Size = new System.Drawing.Size(107, 56); B_EditPRODesigns.TabIndex = 55; B_EditPRODesigns.Text = "Edit PRO Designs"; B_EditPRODesigns.UseVisualStyleBackColor = true; @@ -482,10 +483,10 @@ private void InitializeComponent() // // B_EditPatterns // - B_EditPatterns.Location = new System.Drawing.Point(7, 128); + B_EditPatterns.Location = new System.Drawing.Point(7, 113); B_EditPatterns.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPatterns.Name = "B_EditPatterns"; - B_EditPatterns.Size = new System.Drawing.Size(107, 64); + B_EditPatterns.Size = new System.Drawing.Size(107, 56); B_EditPatterns.TabIndex = 54; B_EditPatterns.Text = "Edit Patterns"; B_EditPatterns.UseVisualStyleBackColor = true; @@ -493,10 +494,10 @@ private void InitializeComponent() // // B_EditTurnipExchange // - B_EditTurnipExchange.Location = new System.Drawing.Point(7, 8); + B_EditTurnipExchange.Location = new System.Drawing.Point(7, 7); B_EditTurnipExchange.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditTurnipExchange.Name = "B_EditTurnipExchange"; - B_EditTurnipExchange.Size = new System.Drawing.Size(107, 52); + B_EditTurnipExchange.Size = new System.Drawing.Size(107, 46); B_EditTurnipExchange.TabIndex = 15; B_EditTurnipExchange.Text = "Edit Turnip Exchange"; B_EditTurnipExchange.UseVisualStyleBackColor = true; @@ -504,10 +505,10 @@ private void InitializeComponent() // // B_RecycleBin // - B_RecycleBin.Location = new System.Drawing.Point(7, 68); + B_RecycleBin.Location = new System.Drawing.Point(7, 60); B_RecycleBin.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_RecycleBin.Name = "B_RecycleBin"; - B_RecycleBin.Size = new System.Drawing.Size(107, 52); + B_RecycleBin.Size = new System.Drawing.Size(107, 46); B_RecycleBin.TabIndex = 13; B_RecycleBin.Text = "Edit Recycle Bin"; B_RecycleBin.UseVisualStyleBackColor = true; @@ -515,11 +516,11 @@ private void InitializeComponent() // // Tab_Villagers // - Tab_Villagers.Location = new System.Drawing.Point(4, 36); + Tab_Villagers.Location = new System.Drawing.Point(4, 34); Tab_Villagers.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); Tab_Villagers.Name = "Tab_Villagers"; Tab_Villagers.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - Tab_Villagers.Size = new System.Drawing.Size(463, 342); + Tab_Villagers.Size = new System.Drawing.Size(463, 299); Tab_Villagers.TabIndex = 0; Tab_Villagers.Text = "Villagers"; Tab_Villagers.UseVisualStyleBackColor = true; @@ -552,100 +553,107 @@ private void InitializeComponent() Tab_Players.Controls.Add(L_PlayerName); Tab_Players.Controls.Add(CB_Players); Tab_Players.Controls.Add(PB_Player); - Tab_Players.Location = new System.Drawing.Point(4, 36); + Tab_Players.Location = new System.Drawing.Point(4, 34); Tab_Players.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); Tab_Players.Name = "Tab_Players"; Tab_Players.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - Tab_Players.Size = new System.Drawing.Size(463, 342); + Tab_Players.Size = new System.Drawing.Size(463, 297); Tab_Players.TabIndex = 1; Tab_Players.Text = "Players"; Tab_Players.UseVisualStyleBackColor = true; // + // B_EditPostBox + // + B_EditPlayerPostBox.Name = "B_EditPlayerPostBox"; + B_EditPlayerPostBox.Size = new System.Drawing.Size(107, 56); + B_EditPlayerPostBox.Text = "Edit Post Box"; + B_EditPlayerPostBox.Click += B_EditPlayerPostBox_Click; + // // L_HotelTickets // - L_HotelTickets.Location = new System.Drawing.Point(166, 309); + L_HotelTickets.Location = new System.Drawing.Point(166, 273); L_HotelTickets.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_HotelTickets.Name = "L_HotelTickets"; - L_HotelTickets.Size = new System.Drawing.Size(98, 26); + L_HotelTickets.Size = new System.Drawing.Size(98, 23); L_HotelTickets.TabIndex = 30; L_HotelTickets.Text = "Hotel Tickets:"; L_HotelTickets.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_HotelTickets // - NUD_HotelTickets.Location = new System.Drawing.Point(271, 309); + NUD_HotelTickets.Location = new System.Drawing.Point(271, 273); NUD_HotelTickets.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_HotelTickets.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_HotelTickets.Name = "NUD_HotelTickets"; - NUD_HotelTickets.Size = new System.Drawing.Size(117, 25); + NUD_HotelTickets.Size = new System.Drawing.Size(117, 23); NUD_HotelTickets.TabIndex = 29; // // L_Poki // - L_Poki.Location = new System.Drawing.Point(166, 278); + L_Poki.Location = new System.Drawing.Point(166, 245); L_Poki.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_Poki.Name = "L_Poki"; - L_Poki.Size = new System.Drawing.Size(98, 26); + L_Poki.Size = new System.Drawing.Size(98, 23); L_Poki.TabIndex = 28; L_Poki.Text = "Poki:"; L_Poki.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_Poki // - NUD_Poki.Location = new System.Drawing.Point(271, 278); + NUD_Poki.Location = new System.Drawing.Point(271, 245); NUD_Poki.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_Poki.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_Poki.Name = "NUD_Poki"; - NUD_Poki.Size = new System.Drawing.Size(117, 25); + NUD_Poki.Size = new System.Drawing.Size(117, 23); NUD_Poki.TabIndex = 27; // // L_EarnedMiles // - L_EarnedMiles.Location = new System.Drawing.Point(166, 153); + L_EarnedMiles.Location = new System.Drawing.Point(166, 135); L_EarnedMiles.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_EarnedMiles.Name = "L_EarnedMiles"; - L_EarnedMiles.Size = new System.Drawing.Size(98, 26); + L_EarnedMiles.Size = new System.Drawing.Size(98, 23); L_EarnedMiles.TabIndex = 26; L_EarnedMiles.Text = "Earned Miles:"; L_EarnedMiles.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_TotalNookMiles // - NUD_TotalNookMiles.Location = new System.Drawing.Point(271, 153); + NUD_TotalNookMiles.Location = new System.Drawing.Point(271, 135); NUD_TotalNookMiles.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_TotalNookMiles.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_TotalNookMiles.Name = "NUD_TotalNookMiles"; - NUD_TotalNookMiles.Size = new System.Drawing.Size(117, 25); + NUD_TotalNookMiles.Size = new System.Drawing.Size(117, 23); NUD_TotalNookMiles.TabIndex = 25; // // L_StorageCount // L_StorageCount.AutoSize = true; - L_StorageCount.Location = new System.Drawing.Point(233, 189); + L_StorageCount.Location = new System.Drawing.Point(233, 167); L_StorageCount.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_StorageCount.Name = "L_StorageCount"; - L_StorageCount.Size = new System.Drawing.Size(92, 17); + L_StorageCount.Size = new System.Drawing.Size(83, 15); L_StorageCount.TabIndex = 24; L_StorageCount.Text = "Storage Count"; L_StorageCount.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // NUD_StorageCount // - NUD_StorageCount.Location = new System.Drawing.Point(176, 186); + NUD_StorageCount.Location = new System.Drawing.Point(176, 164); NUD_StorageCount.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_StorageCount.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_StorageCount.Name = "NUD_StorageCount"; - NUD_StorageCount.Size = new System.Drawing.Size(54, 25); + NUD_StorageCount.Size = new System.Drawing.Size(54, 23); NUD_StorageCount.TabIndex = 23; NUD_StorageCount.Value = new decimal(new int[] { 5000, 0, 0, 0 }); // // L_PocketCount2 // L_PocketCount2.AutoSize = true; - L_PocketCount2.Location = new System.Drawing.Point(233, 252); + L_PocketCount2.Location = new System.Drawing.Point(233, 222); L_PocketCount2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_PocketCount2.Name = "L_PocketCount2"; - L_PocketCount2.Size = new System.Drawing.Size(95, 17); + L_PocketCount2.Size = new System.Drawing.Size(88, 15); L_PocketCount2.TabIndex = 22; L_PocketCount2.Text = "Pocket Count 2"; L_PocketCount2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -653,32 +661,32 @@ private void InitializeComponent() // L_PocketCount1 // L_PocketCount1.AutoSize = true; - L_PocketCount1.Location = new System.Drawing.Point(233, 223); + L_PocketCount1.Location = new System.Drawing.Point(233, 197); L_PocketCount1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_PocketCount1.Name = "L_PocketCount1"; - L_PocketCount1.Size = new System.Drawing.Size(95, 17); + L_PocketCount1.Size = new System.Drawing.Size(88, 15); L_PocketCount1.TabIndex = 21; L_PocketCount1.Text = "Pocket Count 1"; L_PocketCount1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // NUD_PocketCount2 // - NUD_PocketCount2.Location = new System.Drawing.Point(176, 247); + NUD_PocketCount2.Location = new System.Drawing.Point(176, 218); NUD_PocketCount2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_PocketCount2.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_PocketCount2.Name = "NUD_PocketCount2"; - NUD_PocketCount2.Size = new System.Drawing.Size(54, 25); + NUD_PocketCount2.Size = new System.Drawing.Size(54, 23); NUD_PocketCount2.TabIndex = 20; NUD_PocketCount2.Value = new decimal(new int[] { 20, 0, 0, 0 }); NUD_PocketCount2.ValueChanged += NUD_PocketCount_ValueChanged; // // NUD_PocketCount1 // - NUD_PocketCount1.Location = new System.Drawing.Point(176, 220); + NUD_PocketCount1.Location = new System.Drawing.Point(176, 194); NUD_PocketCount1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_PocketCount1.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_PocketCount1.Name = "NUD_PocketCount1"; - NUD_PocketCount1.Size = new System.Drawing.Size(54, 25); + NUD_PocketCount1.Size = new System.Drawing.Size(54, 23); NUD_PocketCount1.TabIndex = 19; NUD_PocketCount1.Value = new decimal(new int[] { 20, 0, 0, 0 }); NUD_PocketCount1.ValueChanged += NUD_PocketCount_ValueChanged; @@ -686,10 +694,10 @@ private void InitializeComponent() // B_EditPlayer // B_EditPlayer.ContextMenuStrip = CM_EditPlayer; - B_EditPlayer.Location = new System.Drawing.Point(7, 280); + B_EditPlayer.Location = new System.Drawing.Point(7, 247); B_EditPlayer.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPlayer.Name = "B_EditPlayer"; - B_EditPlayer.Size = new System.Drawing.Size(152, 52); + B_EditPlayer.Size = new System.Drawing.Size(152, 46); B_EditPlayer.TabIndex = 18; B_EditPlayer.Text = "Edit Player..."; B_EditPlayer.UseVisualStyleBackColor = true; @@ -698,65 +706,65 @@ private void InitializeComponent() // CM_EditPlayer // CM_EditPlayer.ImageScalingSize = new System.Drawing.Size(20, 20); - CM_EditPlayer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { B_EditPlayerStorage, B_EditPlayerReceivedItems, B_EditAchievements, B_EditPlayerRecipes, B_EditPlayerFlags, B_EditPlayerReactions, B_EditPlayerMisc }); + CM_EditPlayer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { B_EditPlayerStorage, B_EditPlayerReceivedItems, B_EditAchievements, B_EditPlayerRecipes, B_EditPlayerPostBox, B_EditPlayerFlags, B_EditPlayerReactions, B_EditPlayerMisc }); CM_EditPlayer.Name = "CM_EditPlayer"; - CM_EditPlayer.Size = new System.Drawing.Size(190, 158); + CM_EditPlayer.Size = new System.Drawing.Size(177, 158); // // B_EditPlayerStorage // B_EditPlayerStorage.Name = "B_EditPlayerStorage"; - B_EditPlayerStorage.Size = new System.Drawing.Size(189, 22); + B_EditPlayerStorage.Size = new System.Drawing.Size(176, 22); B_EditPlayerStorage.Text = "Edit Storage"; B_EditPlayerStorage.Click += B_Storage_Click; // // B_EditPlayerReceivedItems // B_EditPlayerReceivedItems.Name = "B_EditPlayerReceivedItems"; - B_EditPlayerReceivedItems.Size = new System.Drawing.Size(189, 22); + B_EditPlayerReceivedItems.Size = new System.Drawing.Size(176, 22); B_EditPlayerReceivedItems.Text = "Edit Received Items"; B_EditPlayerReceivedItems.Click += B_EditPlayerReceivedItems_Click; // // B_EditAchievements // B_EditAchievements.Name = "B_EditAchievements"; - B_EditAchievements.Size = new System.Drawing.Size(189, 22); + B_EditAchievements.Size = new System.Drawing.Size(176, 22); B_EditAchievements.Text = "Edit Achievements"; B_EditAchievements.Click += B_EditAchievements_Click; // // B_EditPlayerRecipes // B_EditPlayerRecipes.Name = "B_EditPlayerRecipes"; - B_EditPlayerRecipes.Size = new System.Drawing.Size(189, 22); + B_EditPlayerRecipes.Size = new System.Drawing.Size(176, 22); B_EditPlayerRecipes.Text = "Edit Recipes"; B_EditPlayerRecipes.Click += B_EditPlayerRecipes_Click; // // B_EditPlayerFlags // B_EditPlayerFlags.Name = "B_EditPlayerFlags"; - B_EditPlayerFlags.Size = new System.Drawing.Size(189, 22); + B_EditPlayerFlags.Size = new System.Drawing.Size(176, 22); B_EditPlayerFlags.Text = "Edit Flags"; B_EditPlayerFlags.Click += B_EditPlayerFlags_Click; // // B_EditPlayerReactions // B_EditPlayerReactions.Name = "B_EditPlayerReactions"; - B_EditPlayerReactions.Size = new System.Drawing.Size(189, 22); + B_EditPlayerReactions.Size = new System.Drawing.Size(176, 22); B_EditPlayerReactions.Text = "Edit Reactions"; B_EditPlayerReactions.Click += B_EditPlayerReactions_Click; // // B_EditPlayerMisc // B_EditPlayerMisc.Name = "B_EditPlayerMisc"; - B_EditPlayerMisc.Size = new System.Drawing.Size(189, 22); + B_EditPlayerMisc.Size = new System.Drawing.Size(176, 22); B_EditPlayerMisc.Text = "Edit Misc"; B_EditPlayerMisc.Click += B_EditPlayerMisc_Click; // // B_EditPlayerItems // - B_EditPlayerItems.Location = new System.Drawing.Point(7, 220); + B_EditPlayerItems.Location = new System.Drawing.Point(7, 194); B_EditPlayerItems.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); B_EditPlayerItems.Name = "B_EditPlayerItems"; - B_EditPlayerItems.Size = new System.Drawing.Size(152, 52); + B_EditPlayerItems.Size = new System.Drawing.Size(152, 46); B_EditPlayerItems.TabIndex = 12; B_EditPlayerItems.Text = "Edit Items"; B_EditPlayerItems.UseVisualStyleBackColor = true; @@ -764,94 +772,94 @@ private void InitializeComponent() // // L_Wallet // - L_Wallet.Location = new System.Drawing.Point(166, 67); + L_Wallet.Location = new System.Drawing.Point(166, 59); L_Wallet.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_Wallet.Name = "L_Wallet"; - L_Wallet.Size = new System.Drawing.Size(98, 26); + L_Wallet.Size = new System.Drawing.Size(98, 23); L_Wallet.TabIndex = 11; L_Wallet.Text = "Wallet:"; L_Wallet.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_Wallet // - NUD_Wallet.Location = new System.Drawing.Point(271, 67); + NUD_Wallet.Location = new System.Drawing.Point(271, 59); NUD_Wallet.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_Wallet.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_Wallet.Name = "NUD_Wallet"; - NUD_Wallet.Size = new System.Drawing.Size(117, 25); + NUD_Wallet.Size = new System.Drawing.Size(117, 23); NUD_Wallet.TabIndex = 10; NUD_Wallet.ValueChanged += NUD_Wallet_ValueChanged; // // L_NookMiles // - L_NookMiles.Location = new System.Drawing.Point(166, 125); + L_NookMiles.Location = new System.Drawing.Point(166, 110); L_NookMiles.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_NookMiles.Name = "L_NookMiles"; - L_NookMiles.Size = new System.Drawing.Size(98, 26); + L_NookMiles.Size = new System.Drawing.Size(98, 23); L_NookMiles.TabIndex = 9; L_NookMiles.Text = "Nook Miles:"; L_NookMiles.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_NookMiles // - NUD_NookMiles.Location = new System.Drawing.Point(271, 125); + NUD_NookMiles.Location = new System.Drawing.Point(271, 110); NUD_NookMiles.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_NookMiles.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_NookMiles.Name = "NUD_NookMiles"; - NUD_NookMiles.Size = new System.Drawing.Size(117, 25); + NUD_NookMiles.Size = new System.Drawing.Size(117, 23); NUD_NookMiles.TabIndex = 8; // // L_BankBells // - L_BankBells.Location = new System.Drawing.Point(166, 95); + L_BankBells.Location = new System.Drawing.Point(166, 84); L_BankBells.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_BankBells.Name = "L_BankBells"; - L_BankBells.Size = new System.Drawing.Size(98, 26); + L_BankBells.Size = new System.Drawing.Size(98, 23); L_BankBells.TabIndex = 7; L_BankBells.Text = "Bank Bells:"; L_BankBells.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // NUD_BankBells // - NUD_BankBells.Location = new System.Drawing.Point(271, 95); + NUD_BankBells.Location = new System.Drawing.Point(271, 84); NUD_BankBells.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); NUD_BankBells.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 }); NUD_BankBells.Name = "NUD_BankBells"; - NUD_BankBells.Size = new System.Drawing.Size(117, 25); + NUD_BankBells.Size = new System.Drawing.Size(117, 23); NUD_BankBells.TabIndex = 6; // // TB_TownName // - TB_TownName.Location = new System.Drawing.Point(271, 37); + TB_TownName.Location = new System.Drawing.Point(271, 33); TB_TownName.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); TB_TownName.Name = "TB_TownName"; - TB_TownName.Size = new System.Drawing.Size(116, 25); + TB_TownName.Size = new System.Drawing.Size(116, 23); TB_TownName.TabIndex = 5; // // TB_Name // - TB_Name.Location = new System.Drawing.Point(271, 9); + TB_Name.Location = new System.Drawing.Point(271, 8); TB_Name.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); TB_Name.Name = "TB_Name"; - TB_Name.Size = new System.Drawing.Size(116, 25); + TB_Name.Size = new System.Drawing.Size(116, 23); TB_Name.TabIndex = 3; // // L_TownName // - L_TownName.Location = new System.Drawing.Point(166, 37); + L_TownName.Location = new System.Drawing.Point(166, 33); L_TownName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_TownName.Name = "L_TownName"; - L_TownName.Size = new System.Drawing.Size(98, 26); + L_TownName.Size = new System.Drawing.Size(98, 23); L_TownName.TabIndex = 4; L_TownName.Text = "Town Name:"; L_TownName.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // L_PlayerName // - L_PlayerName.Location = new System.Drawing.Point(166, 9); + L_PlayerName.Location = new System.Drawing.Point(166, 8); L_PlayerName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); L_PlayerName.Name = "L_PlayerName"; - L_PlayerName.Size = new System.Drawing.Size(98, 26); + L_PlayerName.Size = new System.Drawing.Size(98, 23); L_PlayerName.TabIndex = 2; L_PlayerName.Text = "Player Name:"; L_PlayerName.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -860,10 +868,10 @@ private void InitializeComponent() // CB_Players.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; CB_Players.FormattingEnabled = true; - CB_Players.Location = new System.Drawing.Point(7, 8); + CB_Players.Location = new System.Drawing.Point(7, 7); CB_Players.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); CB_Players.Name = "CB_Players"; - CB_Players.Size = new System.Drawing.Size(151, 25); + CB_Players.Size = new System.Drawing.Size(151, 23); CB_Players.TabIndex = 1; CB_Players.SelectedIndexChanged += LoadPlayer; // @@ -871,10 +879,10 @@ private void InitializeComponent() // PB_Player.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; PB_Player.ContextMenuStrip = CM_Picture; - PB_Player.Location = new System.Drawing.Point(7, 43); + PB_Player.Location = new System.Drawing.Point(7, 38); PB_Player.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); PB_Player.Name = "PB_Player"; - PB_Player.Size = new System.Drawing.Size(151, 170); + PB_Player.Size = new System.Drawing.Size(151, 150); PB_Player.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; PB_Player.TabIndex = 0; PB_Player.TabStop = false; @@ -885,19 +893,19 @@ private void InitializeComponent() TC_Editors.Controls.Add(Tab_Villagers); TC_Editors.Controls.Add(Tab_Map); TC_Editors.Dock = System.Windows.Forms.DockStyle.Fill; - TC_Editors.Location = new System.Drawing.Point(0, 25); + TC_Editors.Location = new System.Drawing.Point(0, 24); TC_Editors.Margin = new System.Windows.Forms.Padding(4); TC_Editors.Name = "TC_Editors"; TC_Editors.Padding = new System.Drawing.Point(8, 8); TC_Editors.SelectedIndex = 0; - TC_Editors.Size = new System.Drawing.Size(471, 382); + TC_Editors.Size = new System.Drawing.Size(471, 335); TC_Editors.TabIndex = 1; // // Editor // - AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - ClientSize = new System.Drawing.Size(471, 407); + ClientSize = new System.Drawing.Size(471, 359); Controls.Add(TC_Editors); Controls.Add(Menu_Editor); Icon = Properties.Resources.icon; @@ -1008,6 +1016,7 @@ private void InitializeComponent() private System.Windows.Forms.Label L_HotelTickets; private System.Windows.Forms.NumericUpDown NUD_HotelTickets; private System.Windows.Forms.Button B_EditCampsite; + private System.Windows.Forms.ToolStripMenuItem B_EditPlayerPostBox; private System.Windows.Forms.ToolStripMenuItem Menu_Theme; private System.Windows.Forms.ToolStripMenuItem Menu_Theme_System; private System.Windows.Forms.ToolStripMenuItem Menu_Theme_Classic; diff --git a/NHSE.WinForms/Editor.cs b/NHSE.WinForms/Editor.cs index a2f9603..cbc89a6 100644 --- a/NHSE.WinForms/Editor.cs +++ b/NHSE.WinForms/Editor.cs @@ -242,7 +242,7 @@ private VillagerEditor LoadVillagers() { var p0 = SAV.Players[0].Personal; var villagers = SAV.Main.GetVillagers(); - var v = new VillagerEditor(villagers, p0, SAV, true) { Dock = DockStyle.Fill }; + var v = new VillagerEditor(villagers, p0, SAV, true, PlayerIndex) { Dock = DockStyle.Fill }; Tab_Villagers.Controls.Add(v); return v; } @@ -359,6 +359,15 @@ private void B_EditPlayerMisc_Click(object sender, EventArgs e) editor.ShowDialog(); } + private void B_EditPlayerPostBox_Click(object sender, EventArgs e) + { + var player = SAV.Players[PlayerIndex]; + var save = SAV.Main; + var pb = SAV.Players[PlayerIndex].PostBox; + using var editor = new PostBoxEditor(player, pb); + editor.ShowDialog(); + } + private void LoadPlayer(int index) { if (PlayerIndex >= 0) @@ -520,36 +529,36 @@ private void B_EditLandFlags_Click(object sender, EventArgs e) private void B_EditPatterns_Click(object sender, EventArgs e) { - var playerID = SAV.Players[0].Personal.GetPlayerIdentity(); // fetch ID for overwrite ownership - var townID = SAV.Players[0].Personal.GetTownIdentity(); // fetch ID for overwrite ownership + var player = SAV.Players[PlayerIndex]; var patterns = SAV.Main.GetDesigns(); - using var editor = new PatternEditor(patterns); + using var editor = new PatternEditor(patterns, player); if (editor.ShowDialog() == DialogResult.OK) - SAV.Main.SetDesigns(patterns, playerID, townID); + SAV.Main.SetDesigns(patterns); } private void B_EditPRODesigns_Click(object sender, EventArgs e) { - var playerID = SAV.Players[0].Personal.GetPlayerIdentity(); // fetch ID for overwrite ownership - var townID = SAV.Players[0].Personal.GetTownIdentity(); // fetch ID for overwrite ownership + var player = SAV.Players[PlayerIndex]; var patterns = SAV.Main.GetDesignsPRO(); - using var editor = new PatternEditorPRO(patterns); + using var editor = new PatternEditorPRO(patterns, player); if (editor.ShowDialog() == DialogResult.OK) - SAV.Main.SetDesignsPRO(patterns, playerID, townID); + SAV.Main.SetDesignsPRO(patterns); } private void B_EditPatternFlag_Click(object sender, EventArgs e) { + var player = SAV.Players[PlayerIndex]; var patterns = new[] { SAV.Main.FlagMyDesign }; - using var editor = new PatternEditor(patterns); + using var editor = new PatternEditor(patterns, player); if (editor.ShowDialog() == DialogResult.OK) SAV.Main.FlagMyDesign = patterns[0]; } private void B_EditDesignsTailor_Click(object sender, EventArgs e) { + var player = SAV.Players[PlayerIndex]; var patterns = SAV.Main.GetDesignsTailor(); - using var editor = new PatternEditorPRO(patterns); + using var editor = new PatternEditorPRO(patterns, player); if (editor.ShowDialog() == DialogResult.OK) SAV.Main.SetDesignsTailor(patterns); } diff --git a/NHSE.WinForms/Resources/text/lang_de.txt b/NHSE.WinForms/Resources/text/lang_de.txt index 19234a4..cc24b1b 100644 --- a/NHSE.WinForms/Resources/text/lang_de.txt +++ b/NHSE.WinForms/Resources/text/lang_de.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Uses: PlayerItemEditor.L_WaterDays=Days: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Cancel ReactionEditor.B_GiveAll=Give All ReactionEditor.B_Save=Save diff --git a/NHSE.WinForms/Resources/text/lang_en.txt b/NHSE.WinForms/Resources/text/lang_en.txt index bcb1895..91d175a 100644 --- a/NHSE.WinForms/Resources/text/lang_en.txt +++ b/NHSE.WinForms/Resources/text/lang_en.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Uses: PlayerItemEditor.L_WaterDays=Days: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Cancel ReactionEditor.B_GiveAll=Give All ReactionEditor.B_Save=Save diff --git a/NHSE.WinForms/Resources/text/lang_es.txt b/NHSE.WinForms/Resources/text/lang_es.txt index f65048d..0658143 100644 --- a/NHSE.WinForms/Resources/text/lang_es.txt +++ b/NHSE.WinForms/Resources/text/lang_es.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Usos: PlayerItemEditor.L_WaterDays=Días: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Cancelar ReactionEditor.B_GiveAll=Far Todo ReactionEditor.B_Save=Guardar diff --git a/NHSE.WinForms/Resources/text/lang_fr.txt b/NHSE.WinForms/Resources/text/lang_fr.txt index 7eeaab4..df827db 100644 --- a/NHSE.WinForms/Resources/text/lang_fr.txt +++ b/NHSE.WinForms/Resources/text/lang_fr.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Uses: PlayerItemEditor.L_WaterDays=Days: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Cancel ReactionEditor.B_GiveAll=Give All ReactionEditor.B_Save=Save diff --git a/NHSE.WinForms/Resources/text/lang_it.txt b/NHSE.WinForms/Resources/text/lang_it.txt index d9f786f..8ac97ea 100644 --- a/NHSE.WinForms/Resources/text/lang_it.txt +++ b/NHSE.WinForms/Resources/text/lang_it.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Utilizzi: PlayerItemEditor.L_WaterDays=Giorni: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Indietro ReactionEditor.B_GiveAll=Tutto ReactionEditor.B_Save=Salva diff --git a/NHSE.WinForms/Resources/text/lang_jp.txt b/NHSE.WinForms/Resources/text/lang_jp.txt index d0e2578..31225b1 100644 --- a/NHSE.WinForms/Resources/text/lang_jp.txt +++ b/NHSE.WinForms/Resources/text/lang_jp.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=Flag0: PlayerItemEditor.L_Flag1=Flag1: PlayerItemEditor.L_Uses=Uses: PlayerItemEditor.L_WaterDays=Days: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=Cancel ReactionEditor.B_GiveAll=Give All ReactionEditor.B_Save=Save diff --git a/NHSE.WinForms/Resources/text/lang_ko.txt b/NHSE.WinForms/Resources/text/lang_ko.txt index 22ae1ec..9175610 100644 --- a/NHSE.WinForms/Resources/text/lang_ko.txt +++ b/NHSE.WinForms/Resources/text/lang_ko.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=플래그0: PlayerItemEditor.L_Flag1=플래그1: PlayerItemEditor.L_Uses=사용 횟수: PlayerItemEditor.L_WaterDays=일수: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=취소 ReactionEditor.B_GiveAll=모두 지급 ReactionEditor.B_Save=저장 diff --git a/NHSE.WinForms/Resources/text/lang_zhs.txt b/NHSE.WinForms/Resources/text/lang_zhs.txt index 9b4ba98..0b833d0 100644 --- a/NHSE.WinForms/Resources/text/lang_zhs.txt +++ b/NHSE.WinForms/Resources/text/lang_zhs.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=属性 0: PlayerItemEditor.L_Flag1=属性 1: PlayerItemEditor.L_Uses=耐久: PlayerItemEditor.L_WaterDays=天数: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=取消 ReactionEditor.B_GiveAll=获得全部 ReactionEditor.B_Save=保存 diff --git a/NHSE.WinForms/Resources/text/lang_zht.txt b/NHSE.WinForms/Resources/text/lang_zht.txt index bd2704b..9145e28 100644 --- a/NHSE.WinForms/Resources/text/lang_zht.txt +++ b/NHSE.WinForms/Resources/text/lang_zht.txt @@ -399,6 +399,43 @@ PlayerItemEditor.L_Flag0=屬性 0: PlayerItemEditor.L_Flag1=屬性 1: PlayerItemEditor.L_Uses=耐久: PlayerItemEditor.L_WaterDays=天數: +PostBoxEditor.B_Cancel=Cancel +PostBoxEditor.B_Save=Save Slot +PostBoxEditor.B_Delete=Delete Mail +PostBoxEditor.B_Import=Import Mail +PostBoxEditor.B_Dump=Dump Mail +PostBoxEditor.B_Post_DumpAll=Dump All +PostBoxEditor.CK_Post_Read=Mark Read +PostBoxEditor.CK_Post_Faved=Favorited +PostBoxEditor.GB_Post_Villager=Villager +PostBoxEditor.GB_Post_Player=Player +PostBoxEditor.GB_Post_NPC=NPC +PostBoxEditor.GB_Post_ReceiverPlayer=Receiver Player +PostBoxEditor.GB_Post_Stationery=Stationery Type +PostBoxEditor.GB_Post_AttachedInfo=Attachment Info +PostBoxEditor.GB_Post_ReceiverIsland=Receiver Island +PostBoxEditor.L_Sender_Edit=Edit Sender: +PostBoxEditor.L_Sender_ExternalName=Sender Name: +PostBoxEditor.L_ExternalName=unknown +PostBoxEditor.L_InternalName=unknown +PostBoxEditor.L_Variant=Variant +PostBoxEditor.L_Species=Species +PostBoxEditor.L_Post_To=To Line: +PostBoxEditor.L_Post_Message=Message: +PostBoxEditor.L_Post_From=From Line: +PostBoxEditor.L_Post_UsedSlots=Used Slots: +PostBoxEditor.L_Post_UsedSlots_Value=unknown +PostBoxEditor.L_Post_SelectedSlot=Selected Slot: +PostBoxEditor.L_SenderType=Sender Type +PostBoxEditor.L_Post_TimeStamp=Timestamp +PostBoxEditor.L_Post_Language=Language +PostBoxEditor.L_Post_CountTo=count +PostBoxEditor.L_Post_CountMsg=count +PostBoxEditor.L_Post_CountFrom=count +PostBoxEditor.L_Post_MailType=Mail Type: +PostBoxEditor.L_Post_AttachmentSkin=Attachment Skin: +PostBoxEditor.TP_Post_SR=Details +PostBoxEditor.TP_Post_Items=Attachments ReactionEditor.B_Cancel=取消 ReactionEditor.B_GiveAll=獲得全部 ReactionEditor.B_Save=儲存 diff --git a/NHSE.WinForms/Subforms/Map/PatternEditor.Designer.cs b/NHSE.WinForms/Subforms/Map/PatternEditor.Designer.cs index b9510bc..730ff03 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditor.Designer.cs +++ b/NHSE.WinForms/Subforms/Map/PatternEditor.Designer.cs @@ -28,178 +28,185 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.B_Save = new System.Windows.Forms.Button(); - this.B_Cancel = new System.Windows.Forms.Button(); - this.LB_Items = new System.Windows.Forms.ListBox(); - this.PB_Palette = new System.Windows.Forms.PictureBox(); - this.L_PatternName = new System.Windows.Forms.Label(); - this.B_DumpLoadDesign = new System.Windows.Forms.Button(); - this.CM_DLDesign = new System.Windows.Forms.ContextMenuStrip(this.components); - this.B_DumpDesign = new System.Windows.Forms.ToolStripMenuItem(); - this.B_DumpDesignAll = new System.Windows.Forms.ToolStripMenuItem(); - this.B_LoadDesign = new System.Windows.Forms.ToolStripMenuItem(); - this.B_LoadDesignAll = new System.Windows.Forms.ToolStripMenuItem(); - this.PB_Pattern = new System.Windows.Forms.PictureBox(); - this.CM_Picture = new System.Windows.Forms.ContextMenuStrip(this.components); - this.Menu_SavePNG = new System.Windows.Forms.ToolStripMenuItem(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Palette)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Pattern)).BeginInit(); - this.CM_Picture.SuspendLayout(); - this.CM_DLDesign.SuspendLayout(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + B_Save = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + LB_Items = new System.Windows.Forms.ListBox(); + PB_Palette = new System.Windows.Forms.PictureBox(); + L_PatternName = new System.Windows.Forms.Label(); + B_DumpLoadDesign = new System.Windows.Forms.Button(); + CM_DLDesign = new System.Windows.Forms.ContextMenuStrip(components); + B_DumpDesign = new System.Windows.Forms.ToolStripMenuItem(); + B_DumpDesignAll = new System.Windows.Forms.ToolStripMenuItem(); + B_LoadDesign = new System.Windows.Forms.ToolStripMenuItem(); + B_LoadDesignAll = new System.Windows.Forms.ToolStripMenuItem(); + PB_Pattern = new System.Windows.Forms.PictureBox(); + CM_Picture = new System.Windows.Forms.ContextMenuStrip(components); + Menu_SavePNG = new System.Windows.Forms.ToolStripMenuItem(); + CB_Pattern_OverwriteDesigner = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)PB_Palette).BeginInit(); + ((System.ComponentModel.ISupportInitialize)PB_Pattern).BeginInit(); + CM_Picture.SuspendLayout(); + SuspendLayout(); // // B_Save // - this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Save.Location = new System.Drawing.Point(488, 276); - this.B_Save.Name = "B_Save"; - this.B_Save.Size = new System.Drawing.Size(92, 40); - this.B_Save.TabIndex = 1; - this.B_Save.Text = "Save"; - this.B_Save.UseVisualStyleBackColor = true; - this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + B_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Save.Location = new System.Drawing.Point(490, 276); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(92, 40); + B_Save.TabIndex = 1; + B_Save.Text = "Save"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; // // B_Cancel // - this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Cancel.Location = new System.Drawing.Point(390, 276); - this.B_Cancel.Name = "B_Cancel"; - this.B_Cancel.Size = new System.Drawing.Size(92, 40); - this.B_Cancel.TabIndex = 2; - this.B_Cancel.Text = "Cancel"; - this.B_Cancel.UseVisualStyleBackColor = true; - this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + B_Cancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Cancel.Location = new System.Drawing.Point(392, 276); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(92, 40); + B_Cancel.TabIndex = 2; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; // // LB_Items // - this.LB_Items.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.LB_Items.FormattingEnabled = true; - this.LB_Items.Location = new System.Drawing.Point(12, 12); - this.LB_Items.Name = "LB_Items"; - this.LB_Items.Size = new System.Drawing.Size(149, 303); - this.LB_Items.TabIndex = 3; - this.LB_Items.SelectedIndexChanged += new System.EventHandler(this.LB_Items_SelectedIndexChanged); + LB_Items.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + LB_Items.FormattingEnabled = true; + LB_Items.Location = new System.Drawing.Point(12, 12); + LB_Items.Name = "LB_Items"; + LB_Items.Size = new System.Drawing.Size(149, 289); + LB_Items.TabIndex = 3; + LB_Items.SelectedIndexChanged += LB_Items_SelectedIndexChanged; // // PB_Palette // - this.PB_Palette.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Palette.Location = new System.Drawing.Point(432, 12); - this.PB_Palette.Name = "PB_Palette"; - this.PB_Palette.Size = new System.Drawing.Size(152, 12); - this.PB_Palette.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Palette.TabIndex = 34; - this.PB_Palette.TabStop = false; + PB_Palette.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Palette.Location = new System.Drawing.Point(432, 12); + PB_Palette.Name = "PB_Palette"; + PB_Palette.Size = new System.Drawing.Size(152, 12); + PB_Palette.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Palette.TabIndex = 34; + PB_Palette.TabStop = false; // // L_PatternName // - this.L_PatternName.AutoSize = true; - this.L_PatternName.Location = new System.Drawing.Point(429, 28); - this.L_PatternName.Name = "L_PatternName"; - this.L_PatternName.Size = new System.Drawing.Size(73, 13); - this.L_PatternName.TabIndex = 33; - this.L_PatternName.Text = "*PatternName"; + L_PatternName.AutoSize = true; + L_PatternName.Location = new System.Drawing.Point(429, 28); + L_PatternName.Name = "L_PatternName"; + L_PatternName.Size = new System.Drawing.Size(82, 15); + L_PatternName.TabIndex = 33; + L_PatternName.Text = "*PatternName"; // // B_DumpLoadDesign // - this.B_DumpLoadDesign.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.B_DumpLoadDesign.ContextMenuStrip = this.CM_DLDesign; - this.B_DumpLoadDesign.Location = new System.Drawing.Point(168, 276); - this.B_DumpLoadDesign.Name = "B_DumpLoadDesign"; - this.B_DumpLoadDesign.Size = new System.Drawing.Size(92, 40); - this.B_DumpLoadDesign.TabIndex = 31; - this.B_DumpLoadDesign.Text = "Dump/Import"; - this.B_DumpLoadDesign.UseVisualStyleBackColor = true; - this.B_DumpLoadDesign.Click += new System.EventHandler(this.B_DumpLoadDesign_Click); + B_DumpLoadDesign.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + B_DumpLoadDesign.ContextMenuStrip = CM_DLDesign; + B_DumpLoadDesign.Location = new System.Drawing.Point(168, 276); + B_DumpLoadDesign.Name = "B_DumpLoadDesign"; + B_DumpLoadDesign.Size = new System.Drawing.Size(92, 40); + B_DumpLoadDesign.TabIndex = 31; + B_DumpLoadDesign.Text = "Dump/Import"; + B_DumpLoadDesign.UseVisualStyleBackColor = true; + B_DumpLoadDesign.Click += B_DumpLoadDesign_Click; // // CM_DLDesign // - this.CM_DLDesign.ImageScalingSize = new System.Drawing.Size(20, 20); - this.CM_DLDesign.Name = "CM_DLDesign"; - this.CM_DLDesign.ShowImageMargin = false; - this.CM_DLDesign.Size = new System.Drawing.Size(93, 92); + CM_DLDesign.ImageScalingSize = new System.Drawing.Size(20, 20); + CM_DLDesign.Name = "CM_DLDesign"; + CM_DLDesign.ShowImageMargin = false; + CM_DLDesign.Size = new System.Drawing.Size(36, 4); // // B_DumpDesign // - this.B_DumpDesign.Name = "B_DumpDesign"; - this.B_DumpDesign.Size = new System.Drawing.Size(92, 22); - this.B_DumpDesign.Text = "Dump Design"; - this.B_DumpDesign.Click += new System.EventHandler(this.B_DumpDesign_Click); + B_DumpDesign.Name = "B_DumpDesign"; + B_DumpDesign.Size = new System.Drawing.Size(92, 22); + B_DumpDesign.Text = "Dump Design"; + B_DumpDesign.Click += B_DumpDesign_Click; // // B_DumpDesignAll // - this.B_DumpDesignAll.Name = "B_DumpDesignAll"; - this.B_DumpDesignAll.Size = new System.Drawing.Size(92, 22); - this.B_DumpDesignAll.Text = "Dump All Designs"; - this.B_DumpDesignAll.Click += new System.EventHandler(this.B_DumpDesign_Click); + B_DumpDesignAll.Name = "B_DumpDesignAll"; + B_DumpDesignAll.Size = new System.Drawing.Size(92, 22); + B_DumpDesignAll.Text = "Dump All Designs"; + B_DumpDesignAll.Click += B_DumpDesign_Click; // // B_LoadDesign // - this.B_LoadDesign.Name = "B_LoadDesign"; - this.B_LoadDesign.Size = new System.Drawing.Size(92, 22); - this.B_LoadDesign.Text = "Load Design"; - this.B_LoadDesign.Click += new System.EventHandler(this.B_LoadDesign_Click); + B_LoadDesign.Name = "B_LoadDesign"; + B_LoadDesign.Size = new System.Drawing.Size(92, 22); + B_LoadDesign.Text = "Load Design"; + B_LoadDesign.Click += B_LoadDesign_Click; // // B_LoadDesignAll // - this.B_LoadDesignAll.Name = "B_LoadDesignAll"; - this.B_LoadDesignAll.Size = new System.Drawing.Size(92, 22); - this.B_LoadDesignAll.Text = "Load All Designs"; - this.B_LoadDesignAll.Click += new System.EventHandler(this.B_LoadDesign_Click); + B_LoadDesignAll.Name = "B_LoadDesignAll"; + B_LoadDesignAll.Size = new System.Drawing.Size(92, 22); + B_LoadDesignAll.Text = "Load All Designs"; + B_LoadDesignAll.Click += B_LoadDesign_Click; // // PB_Pattern // - this.PB_Pattern.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Pattern.ContextMenuStrip = this.CM_Picture; - this.PB_Pattern.Location = new System.Drawing.Point(168, 12); - this.PB_Pattern.Name = "PB_Pattern"; - this.PB_Pattern.Size = new System.Drawing.Size(258, 258); - this.PB_Pattern.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Pattern.TabIndex = 30; - this.PB_Pattern.TabStop = false; - this.PB_Pattern.MouseEnter += new System.EventHandler(this.PB_Pattern_MouseEnter); - this.PB_Pattern.MouseLeave += new System.EventHandler(this.PB_Pattern_MouseLeave); + PB_Pattern.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Pattern.ContextMenuStrip = CM_Picture; + PB_Pattern.Location = new System.Drawing.Point(168, 12); + PB_Pattern.Name = "PB_Pattern"; + PB_Pattern.Size = new System.Drawing.Size(258, 258); + PB_Pattern.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Pattern.TabIndex = 30; + PB_Pattern.TabStop = false; + PB_Pattern.MouseEnter += PB_Pattern_MouseEnter; + PB_Pattern.MouseLeave += PB_Pattern_MouseLeave; // // CM_Picture // - this.CM_Picture.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.Menu_SavePNG}); - this.CM_Picture.Name = "CM_Picture"; - this.CM_Picture.ShowImageMargin = false; - this.CM_Picture.Size = new System.Drawing.Size(156, 48); + CM_Picture.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_SavePNG }); + CM_Picture.Name = "CM_Picture"; + CM_Picture.ShowImageMargin = false; + CM_Picture.Size = new System.Drawing.Size(101, 26); // // Menu_SavePNG // - this.Menu_SavePNG.Name = "Menu_SavePNG"; - this.Menu_SavePNG.Size = new System.Drawing.Size(155, 22); - this.Menu_SavePNG.Text = "Save .png"; - this.Menu_SavePNG.Click += new System.EventHandler(this.Menu_SavePNG_Click); + Menu_SavePNG.Name = "Menu_SavePNG"; + Menu_SavePNG.Size = new System.Drawing.Size(100, 22); + Menu_SavePNG.Text = "Save .png"; + Menu_SavePNG.Click += Menu_SavePNG_Click; + // + // CB_Pattern_OverwriteDesigner + // + CB_Pattern_OverwriteDesigner.AutoSize = true; + CB_Pattern_OverwriteDesigner.Location = new System.Drawing.Point(263, 288); + CB_Pattern_OverwriteDesigner.Name = "CB_Pattern_OverwriteDesigner"; + CB_Pattern_OverwriteDesigner.Size = new System.Drawing.Size(126, 19); + CB_Pattern_OverwriteDesigner.TabIndex = 35; + CB_Pattern_OverwriteDesigner.Text = "Overwrite Designer"; + CB_Pattern_OverwriteDesigner.UseVisualStyleBackColor = true; // // PatternEditor // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; - this.ClientSize = new System.Drawing.Size(592, 328); - this.Controls.Add(this.PB_Palette); - this.Controls.Add(this.L_PatternName); - this.Controls.Add(this.B_DumpLoadDesign); - this.Controls.Add(this.PB_Pattern); - this.Controls.Add(this.LB_Items); - this.Controls.Add(this.B_Cancel); - this.Controls.Add(this.B_Save); - this.Icon = global::NHSE.WinForms.Properties.Resources.icon; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "PatternEditor"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Pattern Editor"; - ((System.ComponentModel.ISupportInitialize)(this.PB_Palette)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Pattern)).EndInit(); - this.CM_Picture.ResumeLayout(false); - this.CM_DLDesign.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + ClientSize = new System.Drawing.Size(592, 328); + Controls.Add(CB_Pattern_OverwriteDesigner); + Controls.Add(PB_Palette); + Controls.Add(L_PatternName); + Controls.Add(B_DumpLoadDesign); + Controls.Add(PB_Pattern); + Controls.Add(LB_Items); + Controls.Add(B_Cancel); + Controls.Add(B_Save); + Icon = Properties.Resources.icon; + MaximizeBox = false; + MinimizeBox = false; + Name = "PatternEditor"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Pattern Editor"; + ((System.ComponentModel.ISupportInitialize)PB_Palette).EndInit(); + ((System.ComponentModel.ISupportInitialize)PB_Pattern).EndInit(); + CM_Picture.ResumeLayout(false); + ResumeLayout(false); + PerformLayout(); } @@ -218,5 +225,6 @@ private void InitializeComponent() private System.Windows.Forms.PictureBox PB_Pattern; private System.Windows.Forms.ContextMenuStrip CM_Picture; private System.Windows.Forms.ToolStripMenuItem Menu_SavePNG; + private System.Windows.Forms.CheckBox CB_Pattern_OverwriteDesigner; } } \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/Map/PatternEditor.cs b/NHSE.WinForms/Subforms/Map/PatternEditor.cs index 527d8c0..a3ca12b 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditor.cs +++ b/NHSE.WinForms/Subforms/Map/PatternEditor.cs @@ -1,25 +1,28 @@ -using System; +using NHSE.Core; +using NHSE.Sprites; +using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; +using System.Runtime.Intrinsics.Arm; using System.Windows.Forms; -using NHSE.Core; -using NHSE.Sprites; namespace NHSE.WinForms; public partial class PatternEditor : Form { private readonly DesignPattern[] Patterns; + private readonly Player Player; private int Index; private const int scale = 8; - public PatternEditor(DesignPattern[] patterns) + public PatternEditor(DesignPattern[] patterns, Player player) { InitializeComponent(); this.TranslateInterface(GameInfo.CurrentLanguage); Patterns = patterns; + Player = player; DialogResult = DialogResult.Cancel; foreach (var p in patterns) @@ -146,8 +149,44 @@ private void RepopulateList(int index) LB_Items.SelectedIndex = index; } + public bool ContainsTransparentPixels(Bitmap image) + { + for (int y = 0; y < image.Height; ++y) + { + for (int x = 0; x < image.Width; ++x) + { + if (image.GetPixel(x, y).A < 255) // check alpha + { + return true; + } + } + } + return false; + } + private void LoadPattern(DesignPattern designPattern) { + if (designPattern.UsageCompatibility is not (0xEE00 or 0xEE02)) // known valid values (00=non-transparent, 02=transparent) + { + using var image = designPattern.GetImage(); + if (ContainsTransparentPixels(image)) + { + designPattern.UsageCompatibility = 0xEE02; // set to transparent + } + else + { + designPattern.UsageCompatibility = 0xEE00; // reset to default value (non-transparent) + } + } + + if (CB_Pattern_OverwriteDesigner.Checked) + { + designPattern.PlayerID = Player.Personal.PlayerID; + designPattern.PlayerName = Player.Personal.PlayerName; + designPattern.TownID = Player.Personal.TownID; + designPattern.TownName = Player.Personal.TownName; + } + PB_Pattern.Image = ImageUtil.ResizeImage(designPattern.GetImage(), DesignPattern.Width * scale, DesignPattern.Height * scale); PB_Palette.Image = ImageUtil.ResizeImage(designPattern.GetPalette(), 150, 10); L_PatternName.Text = designPattern.DesignName + Environment.NewLine + diff --git a/NHSE.WinForms/Subforms/Map/PatternEditor.resx b/NHSE.WinForms/Subforms/Map/PatternEditor.resx index 978a819..20f38d5 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditor.resx +++ b/NHSE.WinForms/Subforms/Map/PatternEditor.resx @@ -1,17 +1,17 @@  - @@ -117,7 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 + + 145, 17 + \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.Designer.cs b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.Designer.cs index f337529..624f448 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.Designer.cs +++ b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.Designer.cs @@ -28,223 +28,230 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.B_Save = new System.Windows.Forms.Button(); - this.B_Cancel = new System.Windows.Forms.Button(); - this.LB_Items = new System.Windows.Forms.ListBox(); - this.PB_Palette = new System.Windows.Forms.PictureBox(); - this.L_PatternName = new System.Windows.Forms.Label(); - this.B_DumpLoadDesign = new System.Windows.Forms.Button(); - this.CM_DLDesign = new System.Windows.Forms.ContextMenuStrip(this.components); - this.B_DumpDesign = new System.Windows.Forms.ToolStripMenuItem(); - this.B_DumpDesignAll = new System.Windows.Forms.ToolStripMenuItem(); - this.B_LoadDesign = new System.Windows.Forms.ToolStripMenuItem(); - this.B_LoadDesignAll = new System.Windows.Forms.ToolStripMenuItem(); - this.PB_Sheet0 = new System.Windows.Forms.PictureBox(); - this.CM_Picture = new System.Windows.Forms.ContextMenuStrip(this.components); - this.Menu_SavePNG = new System.Windows.Forms.ToolStripMenuItem(); - this.PB_Sheet1 = new System.Windows.Forms.PictureBox(); - this.PB_Sheet3 = new System.Windows.Forms.PictureBox(); - this.PB_Sheet2 = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Palette)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet0)).BeginInit(); - this.CM_Picture.SuspendLayout(); - this.CM_DLDesign.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet3)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet2)).BeginInit(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + B_Save = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + LB_Items = new System.Windows.Forms.ListBox(); + PB_Palette = new System.Windows.Forms.PictureBox(); + L_PatternName = new System.Windows.Forms.Label(); + B_DumpLoadDesign = new System.Windows.Forms.Button(); + CM_DLDesign = new System.Windows.Forms.ContextMenuStrip(components); + B_DumpDesign = new System.Windows.Forms.ToolStripMenuItem(); + B_DumpDesignAll = new System.Windows.Forms.ToolStripMenuItem(); + B_LoadDesign = new System.Windows.Forms.ToolStripMenuItem(); + B_LoadDesignAll = new System.Windows.Forms.ToolStripMenuItem(); + PB_Sheet0 = new System.Windows.Forms.PictureBox(); + CM_Picture = new System.Windows.Forms.ContextMenuStrip(components); + Menu_SavePNG = new System.Windows.Forms.ToolStripMenuItem(); + PB_Sheet1 = new System.Windows.Forms.PictureBox(); + PB_Sheet3 = new System.Windows.Forms.PictureBox(); + PB_Sheet2 = new System.Windows.Forms.PictureBox(); + CB_Pattern_OverwriteDesigner = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)PB_Palette).BeginInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet0).BeginInit(); + CM_Picture.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet3).BeginInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet2).BeginInit(); + SuspendLayout(); // // B_Save // - this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Save.Location = new System.Drawing.Point(488, 276); - this.B_Save.Name = "B_Save"; - this.B_Save.Size = new System.Drawing.Size(92, 40); - this.B_Save.TabIndex = 1; - this.B_Save.Text = "Save"; - this.B_Save.UseVisualStyleBackColor = true; - this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + B_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Save.Location = new System.Drawing.Point(490, 276); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(92, 40); + B_Save.TabIndex = 1; + B_Save.Text = "Save"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; // // B_Cancel // - this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Cancel.Location = new System.Drawing.Point(390, 276); - this.B_Cancel.Name = "B_Cancel"; - this.B_Cancel.Size = new System.Drawing.Size(92, 40); - this.B_Cancel.TabIndex = 2; - this.B_Cancel.Text = "Cancel"; - this.B_Cancel.UseVisualStyleBackColor = true; - this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + B_Cancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Cancel.Location = new System.Drawing.Point(392, 276); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(92, 40); + B_Cancel.TabIndex = 2; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; // // LB_Items // - this.LB_Items.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.LB_Items.FormattingEnabled = true; - this.LB_Items.Location = new System.Drawing.Point(12, 12); - this.LB_Items.Name = "LB_Items"; - this.LB_Items.Size = new System.Drawing.Size(149, 303); - this.LB_Items.TabIndex = 3; - this.LB_Items.SelectedIndexChanged += new System.EventHandler(this.LB_Items_SelectedIndexChanged); + LB_Items.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + LB_Items.FormattingEnabled = true; + LB_Items.Location = new System.Drawing.Point(12, 12); + LB_Items.Name = "LB_Items"; + LB_Items.Size = new System.Drawing.Size(149, 289); + LB_Items.TabIndex = 3; + LB_Items.SelectedIndexChanged += LB_Items_SelectedIndexChanged; // // PB_Palette // - this.PB_Palette.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Palette.Location = new System.Drawing.Point(432, 12); - this.PB_Palette.Name = "PB_Palette"; - this.PB_Palette.Size = new System.Drawing.Size(152, 12); - this.PB_Palette.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Palette.TabIndex = 34; - this.PB_Palette.TabStop = false; + PB_Palette.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Palette.Location = new System.Drawing.Point(432, 12); + PB_Palette.Name = "PB_Palette"; + PB_Palette.Size = new System.Drawing.Size(152, 12); + PB_Palette.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Palette.TabIndex = 34; + PB_Palette.TabStop = false; // // L_PatternName // - this.L_PatternName.AutoSize = true; - this.L_PatternName.Location = new System.Drawing.Point(429, 28); - this.L_PatternName.Name = "L_PatternName"; - this.L_PatternName.Size = new System.Drawing.Size(73, 13); - this.L_PatternName.TabIndex = 33; - this.L_PatternName.Text = "*PatternName"; + L_PatternName.AutoSize = true; + L_PatternName.Location = new System.Drawing.Point(429, 28); + L_PatternName.Name = "L_PatternName"; + L_PatternName.Size = new System.Drawing.Size(82, 15); + L_PatternName.TabIndex = 33; + L_PatternName.Text = "*PatternName"; // // B_DumpLoadDesign // - this.B_DumpLoadDesign.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.B_DumpLoadDesign.ContextMenuStrip = this.CM_DLDesign; - this.B_DumpLoadDesign.Location = new System.Drawing.Point(168, 276); - this.B_DumpLoadDesign.Name = "B_DumpLoadDesign"; - this.B_DumpLoadDesign.Size = new System.Drawing.Size(92, 40); - this.B_DumpLoadDesign.TabIndex = 31; - this.B_DumpLoadDesign.Text = "Dump/Import"; - this.B_DumpLoadDesign.UseVisualStyleBackColor = true; - this.B_DumpLoadDesign.Click += new System.EventHandler(this.B_DumpLoadDesign_Click); + B_DumpLoadDesign.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + B_DumpLoadDesign.ContextMenuStrip = CM_DLDesign; + B_DumpLoadDesign.Location = new System.Drawing.Point(168, 276); + B_DumpLoadDesign.Name = "B_DumpLoadDesign"; + B_DumpLoadDesign.Size = new System.Drawing.Size(92, 40); + B_DumpLoadDesign.TabIndex = 31; + B_DumpLoadDesign.Text = "Dump/Import"; + B_DumpLoadDesign.UseVisualStyleBackColor = true; + B_DumpLoadDesign.Click += B_DumpLoadDesign_Click; // // CM_DLDesign // - this.CM_DLDesign.ImageScalingSize = new System.Drawing.Size(20, 20); - this.CM_DLDesign.Name = "CM_DLDesign"; - this.CM_DLDesign.ShowImageMargin = false; - this.CM_DLDesign.Size = new System.Drawing.Size(93, 92); + CM_DLDesign.ImageScalingSize = new System.Drawing.Size(20, 20); + CM_DLDesign.Name = "CM_DLDesign"; + CM_DLDesign.ShowImageMargin = false; + CM_DLDesign.Size = new System.Drawing.Size(36, 4); // // B_DumpDesign // - this.B_DumpDesign.Name = "B_DumpDesign"; - this.B_DumpDesign.Size = new System.Drawing.Size(92, 22); - this.B_DumpDesign.Text = "Dump Design"; - this.B_DumpDesign.Click += new System.EventHandler(this.B_DumpDesign_Click); + B_DumpDesign.Name = "B_DumpDesign"; + B_DumpDesign.Size = new System.Drawing.Size(92, 22); + B_DumpDesign.Text = "Dump Design"; + B_DumpDesign.Click += B_DumpDesign_Click; // // B_DumpDesignAll // - this.B_DumpDesignAll.Name = "B_DumpDesignAll"; - this.B_DumpDesignAll.Size = new System.Drawing.Size(92, 22); - this.B_DumpDesignAll.Text = "Dump All Designs"; - this.B_DumpDesignAll.Click += new System.EventHandler(this.B_DumpDesign_Click); + B_DumpDesignAll.Name = "B_DumpDesignAll"; + B_DumpDesignAll.Size = new System.Drawing.Size(92, 22); + B_DumpDesignAll.Text = "Dump All Designs"; + B_DumpDesignAll.Click += B_DumpDesign_Click; // // B_LoadDesign // - this.B_LoadDesign.Name = "B_LoadDesign"; - this.B_LoadDesign.Size = new System.Drawing.Size(92, 22); - this.B_LoadDesign.Text = "Load Design"; - this.B_LoadDesign.Click += new System.EventHandler(this.B_LoadDesign_Click); + B_LoadDesign.Name = "B_LoadDesign"; + B_LoadDesign.Size = new System.Drawing.Size(92, 22); + B_LoadDesign.Text = "Load Design"; + B_LoadDesign.Click += B_LoadDesign_Click; // // B_LoadDesignAll // - this.B_LoadDesignAll.Name = "B_LoadDesignAll"; - this.B_LoadDesignAll.Size = new System.Drawing.Size(92, 22); - this.B_LoadDesignAll.Text = "Load All Designs"; - this.B_LoadDesignAll.Click += new System.EventHandler(this.B_LoadDesign_Click); + B_LoadDesignAll.Name = "B_LoadDesignAll"; + B_LoadDesignAll.Size = new System.Drawing.Size(92, 22); + B_LoadDesignAll.Text = "Load All Designs"; + B_LoadDesignAll.Click += B_LoadDesign_Click; // // PB_Sheet0 // - this.PB_Sheet0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Sheet0.ContextMenuStrip = this.CM_Picture; - this.PB_Sheet0.Location = new System.Drawing.Point(168, 12); - this.PB_Sheet0.Name = "PB_Sheet0"; - this.PB_Sheet0.Size = new System.Drawing.Size(130, 130); - this.PB_Sheet0.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Sheet0.TabIndex = 30; - this.PB_Sheet0.TabStop = false; - this.PB_Sheet0.MouseEnter += new System.EventHandler(this.PB_Pattern_MouseEnter); - this.PB_Sheet0.MouseLeave += new System.EventHandler(this.PB_Pattern_MouseLeave); + PB_Sheet0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Sheet0.ContextMenuStrip = CM_Picture; + PB_Sheet0.Location = new System.Drawing.Point(168, 12); + PB_Sheet0.Name = "PB_Sheet0"; + PB_Sheet0.Size = new System.Drawing.Size(130, 130); + PB_Sheet0.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Sheet0.TabIndex = 30; + PB_Sheet0.TabStop = false; + PB_Sheet0.MouseEnter += PB_Pattern_MouseEnter; + PB_Sheet0.MouseLeave += PB_Pattern_MouseLeave; // // CM_Picture // - this.CM_Picture.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.Menu_SavePNG}); - this.CM_Picture.Name = "CM_Picture"; - this.CM_Picture.ShowImageMargin = false; - this.CM_Picture.Size = new System.Drawing.Size(101, 26); + CM_Picture.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { Menu_SavePNG }); + CM_Picture.Name = "CM_Picture"; + CM_Picture.ShowImageMargin = false; + CM_Picture.Size = new System.Drawing.Size(101, 26); // // Menu_SavePNG // - this.Menu_SavePNG.Name = "Menu_SavePNG"; - this.Menu_SavePNG.Size = new System.Drawing.Size(100, 22); - this.Menu_SavePNG.Text = "Save .png"; - this.Menu_SavePNG.Click += new System.EventHandler(this.Menu_SavePNG_Click); + Menu_SavePNG.Name = "Menu_SavePNG"; + Menu_SavePNG.Size = new System.Drawing.Size(100, 22); + Menu_SavePNG.Text = "Save .png"; + Menu_SavePNG.Click += Menu_SavePNG_Click; // // PB_Sheet1 // - this.PB_Sheet1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Sheet1.ContextMenuStrip = this.CM_Picture; - this.PB_Sheet1.Location = new System.Drawing.Point(298, 12); - this.PB_Sheet1.Name = "PB_Sheet1"; - this.PB_Sheet1.Size = new System.Drawing.Size(130, 130); - this.PB_Sheet1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Sheet1.TabIndex = 35; - this.PB_Sheet1.TabStop = false; + PB_Sheet1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Sheet1.ContextMenuStrip = CM_Picture; + PB_Sheet1.Location = new System.Drawing.Point(298, 12); + PB_Sheet1.Name = "PB_Sheet1"; + PB_Sheet1.Size = new System.Drawing.Size(130, 130); + PB_Sheet1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Sheet1.TabIndex = 35; + PB_Sheet1.TabStop = false; // // PB_Sheet3 // - this.PB_Sheet3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Sheet3.ContextMenuStrip = this.CM_Picture; - this.PB_Sheet3.Location = new System.Drawing.Point(298, 142); - this.PB_Sheet3.Name = "PB_Sheet3"; - this.PB_Sheet3.Size = new System.Drawing.Size(130, 130); - this.PB_Sheet3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Sheet3.TabIndex = 37; - this.PB_Sheet3.TabStop = false; + PB_Sheet3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Sheet3.ContextMenuStrip = CM_Picture; + PB_Sheet3.Location = new System.Drawing.Point(298, 142); + PB_Sheet3.Name = "PB_Sheet3"; + PB_Sheet3.Size = new System.Drawing.Size(130, 130); + PB_Sheet3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Sheet3.TabIndex = 37; + PB_Sheet3.TabStop = false; // // PB_Sheet2 // - this.PB_Sheet2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.PB_Sheet2.ContextMenuStrip = this.CM_Picture; - this.PB_Sheet2.Location = new System.Drawing.Point(168, 142); - this.PB_Sheet2.Name = "PB_Sheet2"; - this.PB_Sheet2.Size = new System.Drawing.Size(130, 130); - this.PB_Sheet2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.PB_Sheet2.TabIndex = 36; - this.PB_Sheet2.TabStop = false; + PB_Sheet2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Sheet2.ContextMenuStrip = CM_Picture; + PB_Sheet2.Location = new System.Drawing.Point(168, 142); + PB_Sheet2.Name = "PB_Sheet2"; + PB_Sheet2.Size = new System.Drawing.Size(130, 130); + PB_Sheet2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Sheet2.TabIndex = 36; + PB_Sheet2.TabStop = false; + // + // CB_Pattern_OverwriteDesigner + // + CB_Pattern_OverwriteDesigner.AutoSize = true; + CB_Pattern_OverwriteDesigner.Location = new System.Drawing.Point(263, 288); + CB_Pattern_OverwriteDesigner.Name = "CB_Pattern_OverwriteDesigner"; + CB_Pattern_OverwriteDesigner.Size = new System.Drawing.Size(126, 19); + CB_Pattern_OverwriteDesigner.TabIndex = 38; + CB_Pattern_OverwriteDesigner.Text = "Overwrite Designer"; + CB_Pattern_OverwriteDesigner.UseVisualStyleBackColor = true; // // PatternEditorPRO // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; - this.ClientSize = new System.Drawing.Size(592, 328); - this.Controls.Add(this.PB_Sheet3); - this.Controls.Add(this.PB_Sheet2); - this.Controls.Add(this.PB_Sheet1); - this.Controls.Add(this.PB_Palette); - this.Controls.Add(this.L_PatternName); - this.Controls.Add(this.B_DumpLoadDesign); - this.Controls.Add(this.PB_Sheet0); - this.Controls.Add(this.LB_Items); - this.Controls.Add(this.B_Cancel); - this.Controls.Add(this.B_Save); - this.Icon = global::NHSE.WinForms.Properties.Resources.icon; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "PatternEditorPRO"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Pro Design Editor"; - ((System.ComponentModel.ISupportInitialize)(this.PB_Palette)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet0)).EndInit(); - this.CM_Picture.ResumeLayout(false); - this.CM_DLDesign.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_Sheet2)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + ClientSize = new System.Drawing.Size(592, 328); + Controls.Add(CB_Pattern_OverwriteDesigner); + Controls.Add(PB_Sheet3); + Controls.Add(PB_Sheet2); + Controls.Add(PB_Sheet1); + Controls.Add(PB_Palette); + Controls.Add(L_PatternName); + Controls.Add(B_DumpLoadDesign); + Controls.Add(PB_Sheet0); + Controls.Add(LB_Items); + Controls.Add(B_Cancel); + Controls.Add(B_Save); + Icon = Properties.Resources.icon; + MaximizeBox = false; + MinimizeBox = false; + Name = "PatternEditorPRO"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Pro Design Editor"; + ((System.ComponentModel.ISupportInitialize)PB_Palette).EndInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet0).EndInit(); + CM_Picture.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)PB_Sheet1).EndInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet3).EndInit(); + ((System.ComponentModel.ISupportInitialize)PB_Sheet2).EndInit(); + ResumeLayout(false); + PerformLayout(); } @@ -266,5 +273,6 @@ private void InitializeComponent() private System.Windows.Forms.PictureBox PB_Sheet1; private System.Windows.Forms.PictureBox PB_Sheet3; private System.Windows.Forms.PictureBox PB_Sheet2; + private System.Windows.Forms.CheckBox CB_Pattern_OverwriteDesigner; } } \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.cs b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.cs index 47edadd..3e1570c 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.cs +++ b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.cs @@ -1,25 +1,28 @@ -using System; +using NHSE.Core; +using NHSE.Sprites; +using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; +using System.Reflection; using System.Windows.Forms; -using NHSE.Core; -using NHSE.Sprites; namespace NHSE.WinForms; public partial class PatternEditorPRO : Form { private readonly DesignPatternPRO[] Patterns; + private readonly Player Player; private int Index; private const int scale = 4; - public PatternEditorPRO(DesignPatternPRO[] patterns) + public PatternEditorPRO(DesignPatternPRO[] patterns, Player player) { InitializeComponent(); this.TranslateInterface(GameInfo.CurrentLanguage); Patterns = patterns; + Player = player; DialogResult = DialogResult.Cancel; foreach (var p in patterns) @@ -147,6 +150,17 @@ private void RepopulateList(int index) private void LoadPattern(DesignPatternPRO dp) { + if (dp.UsageCompatibility is not (0xEE01 or 0xEE05)) // known valid values (01=pro, 05=default_unused) + dp.UsageCompatibility = 0xEE01; // reset to default pro design + + if (CB_Pattern_OverwriteDesigner.Checked) + { + dp.PlayerID = Player.Personal.PlayerID; + dp.PlayerName = Player.Personal.PlayerName; + dp.TownID = Player.Personal.TownID; + dp.TownName = Player.Personal.TownName; + } + const int w = DesignPatternPRO.Width * scale; const int h = DesignPatternPRO.Height * scale; PB_Sheet0.Image = ImageUtil.ResizeImage(dp.GetImage(0), w, h); diff --git a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.resx b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.resx index 978a819..20f38d5 100644 --- a/NHSE.WinForms/Subforms/Map/PatternEditorPRO.resx +++ b/NHSE.WinForms/Subforms/Map/PatternEditorPRO.resx @@ -1,17 +1,17 @@  - @@ -117,7 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 + + 145, 17 + \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/Player/PostBoxEditor.Designer.cs b/NHSE.WinForms/Subforms/Player/PostBoxEditor.Designer.cs new file mode 100644 index 0000000..9114d66 --- /dev/null +++ b/NHSE.WinForms/Subforms/Player/PostBoxEditor.Designer.cs @@ -0,0 +1,812 @@ +using NHSE.Core; + +namespace NHSE.WinForms +{ + partial class PostBoxEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + CAL_PostTimestamp = new System.Windows.Forms.DateTimePicker(); + B_Cancel = new System.Windows.Forms.Button(); + B_Save = new System.Windows.Forms.Button(); + L_Sender_Edit = new System.Windows.Forms.Label(); + L_Sender_ExternalName = new System.Windows.Forms.Label(); + L_ExternalName = new System.Windows.Forms.Label(); + L_InternalName = new System.Windows.Forms.Label(); + NUD_Variant = new System.Windows.Forms.NumericUpDown(); + L_Variant = new System.Windows.Forms.Label(); + NUD_Species = new System.Windows.Forms.NumericUpDown(); + L_Species = new System.Windows.Forms.Label(); + PB_Villager = new System.Windows.Forms.PictureBox(); + TB_Post_Message = new System.Windows.Forms.TextBox(); + TB_Post_FromLine = new System.Windows.Forms.TextBox(); + TB_Post_ToLine = new System.Windows.Forms.TextBox(); + L_Post_To = new System.Windows.Forms.Label(); + L_Post_Message = new System.Windows.Forms.Label(); + L_Post_From = new System.Windows.Forms.Label(); + CB_Post_Language = new System.Windows.Forms.ComboBox(); + L_Post_UsedSlots = new System.Windows.Forms.Label(); + L_Post_UsedSlots_Value = new System.Windows.Forms.Label(); + L_Post_SelectedSlot = new System.Windows.Forms.Label(); + B_Delete = new System.Windows.Forms.Button(); + CK_Post_Read = new System.Windows.Forms.CheckBox(); + CK_Post_Faved = new System.Windows.Forms.CheckBox(); + CB_Post_SenderType = new System.Windows.Forms.ComboBox(); + L_SenderType = new System.Windows.Forms.Label(); + GB_Post_Villager = new System.Windows.Forms.GroupBox(); + GB_Post_Player = new System.Windows.Forms.GroupBox(); + TB_Post_PlayerName = new System.Windows.Forms.TextBox(); + L_Post_TimeStamp = new System.Windows.Forms.Label(); + L_Post_Language = new System.Windows.Forms.Label(); + L_Post_CountTo = new System.Windows.Forms.Label(); + L_Post_CountMsg = new System.Windows.Forms.Label(); + L_Post_CountFrom = new System.Windows.Forms.Label(); + GB_Post_NPC = new System.Windows.Forms.GroupBox(); + CB_Post_NPC = new System.Windows.Forms.ComboBox(); + TC_Post_SR = new System.Windows.Forms.TabControl(); + TP_Post_SR = new System.Windows.Forms.TabPage(); + GB_Post_ReceiverIsland = new System.Windows.Forms.GroupBox(); + TB_Post_ReceiverIsland = new System.Windows.Forms.TextBox(); + GB_Post_Stationery = new System.Windows.Forms.GroupBox(); + CB_Post_Stationery = new System.Windows.Forms.ComboBox(); + GB_Post_ReceiverPlayer = new System.Windows.Forms.GroupBox(); + TB_Post_ReceiverPlayer = new System.Windows.Forms.TextBox(); + TP_Post_Items = new System.Windows.Forms.TabPage(); + GB_Post_AttachedInfo = new System.Windows.Forms.GroupBox(); + ItemEditor = new ItemEditor(); + L_Post_AttachmentSkin = new System.Windows.Forms.Label(); + CB_Post_AttachmentSkin = new System.Windows.Forms.ComboBox(); + CB_Post_MailType = new System.Windows.Forms.ComboBox(); + L_Post_MailType = new System.Windows.Forms.Label(); + B_Import = new System.Windows.Forms.Button(); + B_Dump = new System.Windows.Forms.Button(); + B_Post_DumpAll = new System.Windows.Forms.Button(); + NUD_Post_Slots = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)NUD_Variant).BeginInit(); + ((System.ComponentModel.ISupportInitialize)NUD_Species).BeginInit(); + ((System.ComponentModel.ISupportInitialize)PB_Villager).BeginInit(); + GB_Post_Villager.SuspendLayout(); + GB_Post_Player.SuspendLayout(); + GB_Post_NPC.SuspendLayout(); + TC_Post_SR.SuspendLayout(); + TP_Post_SR.SuspendLayout(); + GB_Post_ReceiverIsland.SuspendLayout(); + GB_Post_Stationery.SuspendLayout(); + GB_Post_ReceiverPlayer.SuspendLayout(); + TP_Post_Items.SuspendLayout(); + GB_Post_AttachedInfo.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)NUD_Post_Slots).BeginInit(); + SuspendLayout(); + // + // CAL_PostTimestamp + // + CAL_PostTimestamp.Location = new System.Drawing.Point(9, 446); + CAL_PostTimestamp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + CAL_PostTimestamp.Name = "CAL_PostTimestamp"; + CAL_PostTimestamp.Size = new System.Drawing.Size(233, 23); + CAL_PostTimestamp.TabIndex = 76; + // + // B_Cancel + // + B_Cancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Cancel.Location = new System.Drawing.Point(385, 544); + B_Cancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(107, 46); + B_Cancel.TabIndex = 75; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; + // + // B_Save + // + B_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Save.Location = new System.Drawing.Point(496, 544); + B_Save.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(107, 46); + B_Save.TabIndex = 74; + B_Save.Text = "Save Slot"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; + // + // L_Sender_Edit + // + L_Sender_Edit.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_Sender_Edit.Location = new System.Drawing.Point(123, 16); + L_Sender_Edit.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Sender_Edit.Name = "L_Sender_Edit"; + L_Sender_Edit.Size = new System.Drawing.Size(72, 23); + L_Sender_Edit.TabIndex = 86; + L_Sender_Edit.Text = "Edit Sender:"; + L_Sender_Edit.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Sender_ExternalName + // + L_Sender_ExternalName.Location = new System.Drawing.Point(126, 94); + L_Sender_ExternalName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Sender_ExternalName.Name = "L_Sender_ExternalName"; + L_Sender_ExternalName.Size = new System.Drawing.Size(86, 23); + L_Sender_ExternalName.TabIndex = 84; + L_Sender_ExternalName.Text = "Sender Name:"; + L_Sender_ExternalName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_ExternalName + // + L_ExternalName.AutoSize = true; + L_ExternalName.Font = new System.Drawing.Font("Segoe UI", 9F); + L_ExternalName.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_ExternalName.Location = new System.Drawing.Point(126, 114); + L_ExternalName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_ExternalName.Name = "L_ExternalName"; + L_ExternalName.Size = new System.Drawing.Size(57, 15); + L_ExternalName.TabIndex = 83; + L_ExternalName.Text = "unknown"; + L_ExternalName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_InternalName + // + L_InternalName.AutoSize = true; + L_InternalName.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0); + L_InternalName.Location = new System.Drawing.Point(8, 137); + L_InternalName.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_InternalName.Name = "L_InternalName"; + L_InternalName.Size = new System.Drawing.Size(56, 14); + L_InternalName.TabIndex = 82; + L_InternalName.Text = "unknown"; + L_InternalName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // NUD_Variant + // + NUD_Variant.Location = new System.Drawing.Point(128, 65); + NUD_Variant.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + NUD_Variant.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + NUD_Variant.Name = "NUD_Variant"; + NUD_Variant.Size = new System.Drawing.Size(46, 23); + NUD_Variant.TabIndex = 81; + NUD_Variant.ValueChanged += ChangeVillager; + // + // L_Variant + // + L_Variant.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + L_Variant.Location = new System.Drawing.Point(177, 64); + L_Variant.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Variant.Name = "L_Variant"; + L_Variant.Size = new System.Drawing.Size(56, 23); + L_Variant.TabIndex = 80; + L_Variant.Text = "Variant"; + L_Variant.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // NUD_Species + // + NUD_Species.Location = new System.Drawing.Point(128, 40); + NUD_Species.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + NUD_Species.Maximum = new decimal(new int[] { 400, 0, 0, 0 }); + NUD_Species.Name = "NUD_Species"; + NUD_Species.Size = new System.Drawing.Size(46, 23); + NUD_Species.TabIndex = 79; + NUD_Species.ValueChanged += ChangeVillager; + // + // L_Species + // + L_Species.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + L_Species.Location = new System.Drawing.Point(177, 39); + L_Species.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Species.Name = "L_Species"; + L_Species.Size = new System.Drawing.Size(56, 23); + L_Species.TabIndex = 78; + L_Species.Text = "Species"; + L_Species.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // PB_Villager + // + PB_Villager.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + PB_Villager.Location = new System.Drawing.Point(9, 21); + PB_Villager.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + PB_Villager.Name = "PB_Villager"; + PB_Villager.Size = new System.Drawing.Size(114, 114); + PB_Villager.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + PB_Villager.TabIndex = 77; + PB_Villager.TabStop = false; + // + // TB_Post_Message + // + TB_Post_Message.Location = new System.Drawing.Point(7, 138); + TB_Post_Message.Multiline = true; + TB_Post_Message.Name = "TB_Post_Message"; + TB_Post_Message.Size = new System.Drawing.Size(220, 218); + TB_Post_Message.TabIndex = 87; + TB_Post_Message.TextChanged += UpdateMailCounters; + // + // TB_Post_FromLine + // + TB_Post_FromLine.Location = new System.Drawing.Point(7, 383); + TB_Post_FromLine.Name = "TB_Post_FromLine"; + TB_Post_FromLine.Size = new System.Drawing.Size(220, 23); + TB_Post_FromLine.TabIndex = 88; + TB_Post_FromLine.TextChanged += UpdateMailCounters; + // + // TB_Post_ToLine + // + TB_Post_ToLine.Location = new System.Drawing.Point(7, 88); + TB_Post_ToLine.Name = "TB_Post_ToLine"; + TB_Post_ToLine.Size = new System.Drawing.Size(220, 23); + TB_Post_ToLine.TabIndex = 89; + TB_Post_ToLine.TextChanged += UpdateMailCounters; + // + // L_Post_To + // + L_Post_To.Location = new System.Drawing.Point(3, 64); + L_Post_To.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_To.Name = "L_Post_To"; + L_Post_To.Size = new System.Drawing.Size(52, 23); + L_Post_To.TabIndex = 90; + L_Post_To.Text = "To Line:"; + L_Post_To.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_Post_Message + // + L_Post_Message.Location = new System.Drawing.Point(5, 113); + L_Post_Message.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_Message.Name = "L_Post_Message"; + L_Post_Message.Size = new System.Drawing.Size(58, 23); + L_Post_Message.TabIndex = 91; + L_Post_Message.Text = "Message:"; + L_Post_Message.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_Post_From + // + L_Post_From.Location = new System.Drawing.Point(5, 358); + L_Post_From.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_From.Name = "L_Post_From"; + L_Post_From.Size = new System.Drawing.Size(64, 23); + L_Post_From.TabIndex = 92; + L_Post_From.Text = "From Line:"; + L_Post_From.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Post_Language + // + CB_Post_Language.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + CB_Post_Language.FormattingEnabled = true; + CB_Post_Language.Location = new System.Drawing.Point(7, 477); + CB_Post_Language.Name = "CB_Post_Language"; + CB_Post_Language.Size = new System.Drawing.Size(115, 23); + CB_Post_Language.TabIndex = 93; + // + // L_Post_UsedSlots + // + L_Post_UsedSlots.Location = new System.Drawing.Point(8, 7); + L_Post_UsedSlots.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_UsedSlots.Name = "L_Post_UsedSlots"; + L_Post_UsedSlots.Size = new System.Drawing.Size(74, 23); + L_Post_UsedSlots.TabIndex = 94; + L_Post_UsedSlots.Text = "Used Slots:"; + L_Post_UsedSlots.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_UsedSlots_Value + // + L_Post_UsedSlots_Value.AutoSize = true; + L_Post_UsedSlots_Value.Font = new System.Drawing.Font("Segoe UI", 9F); + L_Post_UsedSlots_Value.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_Post_UsedSlots_Value.Location = new System.Drawing.Point(90, 11); + L_Post_UsedSlots_Value.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_UsedSlots_Value.Name = "L_Post_UsedSlots_Value"; + L_Post_UsedSlots_Value.Size = new System.Drawing.Size(57, 15); + L_Post_UsedSlots_Value.TabIndex = 95; + L_Post_UsedSlots_Value.Text = "unknown"; + L_Post_UsedSlots_Value.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_SelectedSlot + // + L_Post_SelectedSlot.Location = new System.Drawing.Point(8, 33); + L_Post_SelectedSlot.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_SelectedSlot.Name = "L_Post_SelectedSlot"; + L_Post_SelectedSlot.Size = new System.Drawing.Size(81, 23); + L_Post_SelectedSlot.TabIndex = 96; + L_Post_SelectedSlot.Text = "Selected Slot:"; + L_Post_SelectedSlot.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // B_Delete + // + B_Delete.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + B_Delete.Location = new System.Drawing.Point(134, 551); + B_Delete.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Delete.Name = "B_Delete"; + B_Delete.Size = new System.Drawing.Size(92, 32); + B_Delete.TabIndex = 99; + B_Delete.Text = "Delete Mail"; + B_Delete.UseVisualStyleBackColor = true; + B_Delete.Click += B_Delete_Click; + // + // CK_Post_Read + // + CK_Post_Read.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + CK_Post_Read.AutoSize = true; + CK_Post_Read.Location = new System.Drawing.Point(7, 412); + CK_Post_Read.Name = "CK_Post_Read"; + CK_Post_Read.Size = new System.Drawing.Size(82, 19); + CK_Post_Read.TabIndex = 100; + CK_Post_Read.Text = "Mark Read"; + CK_Post_Read.UseVisualStyleBackColor = true; + // + // CK_Post_Faved + // + CK_Post_Faved.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + CK_Post_Faved.AutoSize = true; + CK_Post_Faved.Location = new System.Drawing.Point(7, 435); + CK_Post_Faved.Name = "CK_Post_Faved"; + CK_Post_Faved.Size = new System.Drawing.Size(82, 19); + CK_Post_Faved.TabIndex = 101; + CK_Post_Faved.Text = "Favourited"; + CK_Post_Faved.UseVisualStyleBackColor = true; + // + // CB_Post_SenderType + // + CB_Post_SenderType.FormattingEnabled = true; + CB_Post_SenderType.Location = new System.Drawing.Point(6, 26); + CB_Post_SenderType.Name = "CB_Post_SenderType"; + CB_Post_SenderType.Size = new System.Drawing.Size(114, 23); + CB_Post_SenderType.TabIndex = 103; + CB_Post_SenderType.SelectedIndexChanged += UpdateSenderType; + // + // L_SenderType + // + L_SenderType.Location = new System.Drawing.Point(5, 3); + L_SenderType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_SenderType.Name = "L_SenderType"; + L_SenderType.Size = new System.Drawing.Size(106, 22); + L_SenderType.TabIndex = 104; + L_SenderType.Text = "Sender Type"; + L_SenderType.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // GB_Post_Villager + // + GB_Post_Villager.Controls.Add(PB_Villager); + GB_Post_Villager.Controls.Add(L_Species); + GB_Post_Villager.Controls.Add(NUD_Species); + GB_Post_Villager.Controls.Add(L_Variant); + GB_Post_Villager.Controls.Add(NUD_Variant); + GB_Post_Villager.Controls.Add(L_InternalName); + GB_Post_Villager.Controls.Add(L_ExternalName); + GB_Post_Villager.Controls.Add(L_Sender_ExternalName); + GB_Post_Villager.Controls.Add(L_Sender_Edit); + GB_Post_Villager.Location = new System.Drawing.Point(6, 104); + GB_Post_Villager.Name = "GB_Post_Villager"; + GB_Post_Villager.Size = new System.Drawing.Size(283, 161); + GB_Post_Villager.TabIndex = 105; + GB_Post_Villager.TabStop = false; + GB_Post_Villager.Text = "Villager"; + // + // GB_Post_Player + // + GB_Post_Player.Controls.Add(TB_Post_PlayerName); + GB_Post_Player.Location = new System.Drawing.Point(130, 6); + GB_Post_Player.Name = "GB_Post_Player"; + GB_Post_Player.Size = new System.Drawing.Size(159, 48); + GB_Post_Player.TabIndex = 106; + GB_Post_Player.TabStop = false; + GB_Post_Player.Text = "Player"; + // + // TB_Post_PlayerName + // + TB_Post_PlayerName.Location = new System.Drawing.Point(6, 19); + TB_Post_PlayerName.Name = "TB_Post_PlayerName"; + TB_Post_PlayerName.Size = new System.Drawing.Size(147, 23); + TB_Post_PlayerName.TabIndex = 113; + // + // L_Post_TimeStamp + // + L_Post_TimeStamp.Location = new System.Drawing.Point(7, 422); + L_Post_TimeStamp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_TimeStamp.Name = "L_Post_TimeStamp"; + L_Post_TimeStamp.Size = new System.Drawing.Size(70, 23); + L_Post_TimeStamp.TabIndex = 107; + L_Post_TimeStamp.Text = "Timestamp:"; + L_Post_TimeStamp.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_Language + // + L_Post_Language.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + L_Post_Language.Location = new System.Drawing.Point(5, 454); + L_Post_Language.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_Language.Name = "L_Post_Language"; + L_Post_Language.Size = new System.Drawing.Size(67, 23); + L_Post_Language.TabIndex = 108; + L_Post_Language.Text = "Language:"; + L_Post_Language.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_CountTo + // + L_Post_CountTo.AutoSize = true; + L_Post_CountTo.Font = new System.Drawing.Font("Segoe UI", 9F); + L_Post_CountTo.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_Post_CountTo.Location = new System.Drawing.Point(231, 92); + L_Post_CountTo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_CountTo.Name = "L_Post_CountTo"; + L_Post_CountTo.Size = new System.Drawing.Size(38, 15); + L_Post_CountTo.TabIndex = 109; + L_Post_CountTo.Text = "count"; + L_Post_CountTo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_CountMsg + // + L_Post_CountMsg.AutoSize = true; + L_Post_CountMsg.Font = new System.Drawing.Font("Segoe UI", 9F); + L_Post_CountMsg.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_Post_CountMsg.Location = new System.Drawing.Point(231, 138); + L_Post_CountMsg.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_CountMsg.Name = "L_Post_CountMsg"; + L_Post_CountMsg.Size = new System.Drawing.Size(38, 15); + L_Post_CountMsg.TabIndex = 110; + L_Post_CountMsg.Text = "count"; + L_Post_CountMsg.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_Post_CountFrom + // + L_Post_CountFrom.AutoSize = true; + L_Post_CountFrom.Font = new System.Drawing.Font("Segoe UI", 9F); + L_Post_CountFrom.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + L_Post_CountFrom.Location = new System.Drawing.Point(231, 387); + L_Post_CountFrom.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_CountFrom.Name = "L_Post_CountFrom"; + L_Post_CountFrom.Size = new System.Drawing.Size(38, 15); + L_Post_CountFrom.TabIndex = 111; + L_Post_CountFrom.Text = "count"; + L_Post_CountFrom.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // GB_Post_NPC + // + GB_Post_NPC.Controls.Add(CB_Post_NPC); + GB_Post_NPC.Location = new System.Drawing.Point(6, 55); + GB_Post_NPC.Name = "GB_Post_NPC"; + GB_Post_NPC.Size = new System.Drawing.Size(283, 48); + GB_Post_NPC.TabIndex = 108; + GB_Post_NPC.TabStop = false; + GB_Post_NPC.Text = "NPC"; + // + // CB_Post_NPC + // + CB_Post_NPC.FormattingEnabled = true; + CB_Post_NPC.Location = new System.Drawing.Point(6, 18); + CB_Post_NPC.Name = "CB_Post_NPC"; + CB_Post_NPC.Size = new System.Drawing.Size(206, 23); + CB_Post_NPC.TabIndex = 107; + CB_Post_NPC.SelectedIndexChanged += UpdateSenderNPC; + // + // TC_Post_SR + // + TC_Post_SR.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + TC_Post_SR.Controls.Add(TP_Post_SR); + TC_Post_SR.Controls.Add(TP_Post_Items); + TC_Post_SR.Location = new System.Drawing.Point(300, 32); + TC_Post_SR.Name = "TC_Post_SR"; + TC_Post_SR.SelectedIndex = 0; + TC_Post_SR.Size = new System.Drawing.Size(304, 507); + TC_Post_SR.TabIndex = 112; + // + // TP_Post_SR + // + TP_Post_SR.Controls.Add(GB_Post_ReceiverIsland); + TP_Post_SR.Controls.Add(GB_Post_Stationery); + TP_Post_SR.Controls.Add(GB_Post_ReceiverPlayer); + TP_Post_SR.Controls.Add(L_SenderType); + TP_Post_SR.Controls.Add(GB_Post_NPC); + TP_Post_SR.Controls.Add(CB_Post_SenderType); + TP_Post_SR.Controls.Add(GB_Post_Villager); + TP_Post_SR.Controls.Add(L_Post_TimeStamp); + TP_Post_SR.Controls.Add(GB_Post_Player); + TP_Post_SR.Controls.Add(CAL_PostTimestamp); + TP_Post_SR.Location = new System.Drawing.Point(4, 24); + TP_Post_SR.Name = "TP_Post_SR"; + TP_Post_SR.Padding = new System.Windows.Forms.Padding(3); + TP_Post_SR.Size = new System.Drawing.Size(296, 479); + TP_Post_SR.TabIndex = 0; + TP_Post_SR.Text = "Details"; + TP_Post_SR.UseVisualStyleBackColor = true; + // + // GB_Post_ReceiverIsland + // + GB_Post_ReceiverIsland.Controls.Add(TB_Post_ReceiverIsland); + GB_Post_ReceiverIsland.Location = new System.Drawing.Point(6, 370); + GB_Post_ReceiverIsland.Name = "GB_Post_ReceiverIsland"; + GB_Post_ReceiverIsland.Size = new System.Drawing.Size(283, 48); + GB_Post_ReceiverIsland.TabIndex = 117; + GB_Post_ReceiverIsland.TabStop = false; + GB_Post_ReceiverIsland.Text = "Receiver Island"; + // + // TB_Post_ReceiverIsland + // + TB_Post_ReceiverIsland.Location = new System.Drawing.Point(8, 19); + TB_Post_ReceiverIsland.Name = "TB_Post_ReceiverIsland"; + TB_Post_ReceiverIsland.Size = new System.Drawing.Size(157, 23); + TB_Post_ReceiverIsland.TabIndex = 115; + // + // GB_Post_Stationery + // + GB_Post_Stationery.Controls.Add(CB_Post_Stationery); + GB_Post_Stationery.Location = new System.Drawing.Point(6, 268); + GB_Post_Stationery.Name = "GB_Post_Stationery"; + GB_Post_Stationery.Size = new System.Drawing.Size(283, 48); + GB_Post_Stationery.TabIndex = 114; + GB_Post_Stationery.TabStop = false; + GB_Post_Stationery.Text = "Stationery Type"; + // + // CB_Post_Stationery + // + CB_Post_Stationery.FormattingEnabled = true; + CB_Post_Stationery.Location = new System.Drawing.Point(6, 18); + CB_Post_Stationery.Name = "CB_Post_Stationery"; + CB_Post_Stationery.Size = new System.Drawing.Size(271, 23); + CB_Post_Stationery.TabIndex = 107; + // + // GB_Post_ReceiverPlayer + // + GB_Post_ReceiverPlayer.Controls.Add(TB_Post_ReceiverPlayer); + GB_Post_ReceiverPlayer.Location = new System.Drawing.Point(6, 319); + GB_Post_ReceiverPlayer.Name = "GB_Post_ReceiverPlayer"; + GB_Post_ReceiverPlayer.Size = new System.Drawing.Size(283, 48); + GB_Post_ReceiverPlayer.TabIndex = 113; + GB_Post_ReceiverPlayer.TabStop = false; + GB_Post_ReceiverPlayer.Text = "Receiver Player"; + // + // TB_Post_ReceiverPlayer + // + TB_Post_ReceiverPlayer.Location = new System.Drawing.Point(8, 19); + TB_Post_ReceiverPlayer.Name = "TB_Post_ReceiverPlayer"; + TB_Post_ReceiverPlayer.Size = new System.Drawing.Size(157, 23); + TB_Post_ReceiverPlayer.TabIndex = 115; + // + // TP_Post_Items + // + TP_Post_Items.Controls.Add(GB_Post_AttachedInfo); + TP_Post_Items.Controls.Add(CB_Post_MailType); + TP_Post_Items.Controls.Add(L_Post_MailType); + TP_Post_Items.Location = new System.Drawing.Point(4, 24); + TP_Post_Items.Name = "TP_Post_Items"; + TP_Post_Items.Padding = new System.Windows.Forms.Padding(3); + TP_Post_Items.Size = new System.Drawing.Size(296, 479); + TP_Post_Items.TabIndex = 1; + TP_Post_Items.Text = "Attachments"; + TP_Post_Items.UseVisualStyleBackColor = true; + // + // GB_Post_AttachedInfo + // + GB_Post_AttachedInfo.Controls.Add(ItemEditor); + GB_Post_AttachedInfo.Controls.Add(L_Post_AttachmentSkin); + GB_Post_AttachedInfo.Controls.Add(CB_Post_AttachmentSkin); + GB_Post_AttachedInfo.Location = new System.Drawing.Point(5, 32); + GB_Post_AttachedInfo.Name = "GB_Post_AttachedInfo"; + GB_Post_AttachedInfo.Size = new System.Drawing.Size(288, 443); + GB_Post_AttachedInfo.TabIndex = 114; + GB_Post_AttachedInfo.TabStop = false; + GB_Post_AttachedInfo.Text = "Attachment Info"; + // + // ItemEditor + // + ItemEditor.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + ItemEditor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + ItemEditor.Location = new System.Drawing.Point(7, 65); + ItemEditor.Name = "ItemEditor"; + ItemEditor.Size = new System.Drawing.Size(275, 371); + ItemEditor.TabIndex = 113; + // + // L_Post_AttachmentSkin + // + L_Post_AttachmentSkin.Location = new System.Drawing.Point(7, 14); + L_Post_AttachmentSkin.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_AttachmentSkin.Name = "L_Post_AttachmentSkin"; + L_Post_AttachmentSkin.Size = new System.Drawing.Size(201, 23); + L_Post_AttachmentSkin.TabIndex = 114; + L_Post_AttachmentSkin.Text = "Attachment Skin:"; + L_Post_AttachmentSkin.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // CB_Post_AttachmentSkin + // + CB_Post_AttachmentSkin.FormattingEnabled = true; + CB_Post_AttachmentSkin.Location = new System.Drawing.Point(7, 37); + CB_Post_AttachmentSkin.Name = "CB_Post_AttachmentSkin"; + CB_Post_AttachmentSkin.Size = new System.Drawing.Size(240, 23); + CB_Post_AttachmentSkin.TabIndex = 115; + // + // CB_Post_MailType + // + CB_Post_MailType.FormattingEnabled = true; + CB_Post_MailType.Location = new System.Drawing.Point(123, 7); + CB_Post_MailType.Name = "CB_Post_MailType"; + CB_Post_MailType.Size = new System.Drawing.Size(129, 23); + CB_Post_MailType.TabIndex = 113; + CB_Post_MailType.SelectedIndexChanged += UpdateMailType; + // + // L_Post_MailType + // + L_Post_MailType.Location = new System.Drawing.Point(11, 6); + L_Post_MailType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + L_Post_MailType.Name = "L_Post_MailType"; + L_Post_MailType.Size = new System.Drawing.Size(68, 23); + L_Post_MailType.TabIndex = 113; + L_Post_MailType.Text = "Mail Type:"; + L_Post_MailType.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // B_Import + // + B_Import.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + B_Import.Location = new System.Drawing.Point(134, 472); + B_Import.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Import.Name = "B_Import"; + B_Import.Size = new System.Drawing.Size(92, 31); + B_Import.TabIndex = 113; + B_Import.Text = "Import Mail"; + B_Import.UseVisualStyleBackColor = true; + B_Import.Click += B_Import_Click; + // + // B_Dump + // + B_Dump.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + B_Dump.Location = new System.Drawing.Point(134, 436); + B_Dump.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Dump.Name = "B_Dump"; + B_Dump.Size = new System.Drawing.Size(92, 31); + B_Dump.TabIndex = 114; + B_Dump.Text = "Dump Mail"; + B_Dump.UseVisualStyleBackColor = true; + B_Dump.Click += B_Dump_Click; + // + // B_Post_DumpAll + // + B_Post_DumpAll.Location = new System.Drawing.Point(191, 29); + B_Post_DumpAll.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + B_Post_DumpAll.Name = "B_Post_DumpAll"; + B_Post_DumpAll.Size = new System.Drawing.Size(88, 32); + B_Post_DumpAll.TabIndex = 115; + B_Post_DumpAll.Text = "Dump All"; + B_Post_DumpAll.UseVisualStyleBackColor = true; + B_Post_DumpAll.Click += B_Dump_Click; + // + // NUD_Post_Slots + // + NUD_Post_Slots.Location = new System.Drawing.Point(88, 34); + NUD_Post_Slots.Name = "NUD_Post_Slots"; + NUD_Post_Slots.Size = new System.Drawing.Size(60, 23); + NUD_Post_Slots.TabIndex = 116; + NUD_Post_Slots.ValueChanged += LoadMailItem; + // + // PostBoxEditor + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(614, 601); + Controls.Add(NUD_Post_Slots); + Controls.Add(B_Post_DumpAll); + Controls.Add(B_Dump); + Controls.Add(B_Import); + Controls.Add(TC_Post_SR); + Controls.Add(L_Post_CountFrom); + Controls.Add(L_Post_CountMsg); + Controls.Add(L_Post_CountTo); + Controls.Add(L_Post_Language); + Controls.Add(CK_Post_Faved); + Controls.Add(CK_Post_Read); + Controls.Add(B_Delete); + Controls.Add(L_Post_SelectedSlot); + Controls.Add(L_Post_UsedSlots_Value); + Controls.Add(L_Post_UsedSlots); + Controls.Add(CB_Post_Language); + Controls.Add(L_Post_From); + Controls.Add(L_Post_Message); + Controls.Add(L_Post_To); + Controls.Add(TB_Post_ToLine); + Controls.Add(TB_Post_FromLine); + Controls.Add(TB_Post_Message); + Controls.Add(B_Cancel); + Controls.Add(B_Save); + Icon = Properties.Resources.icon; + Name = "PostBoxEditor"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Post Box Editor"; + ((System.ComponentModel.ISupportInitialize)NUD_Variant).EndInit(); + ((System.ComponentModel.ISupportInitialize)NUD_Species).EndInit(); + ((System.ComponentModel.ISupportInitialize)PB_Villager).EndInit(); + GB_Post_Villager.ResumeLayout(false); + GB_Post_Villager.PerformLayout(); + GB_Post_Player.ResumeLayout(false); + GB_Post_Player.PerformLayout(); + GB_Post_NPC.ResumeLayout(false); + TC_Post_SR.ResumeLayout(false); + TP_Post_SR.ResumeLayout(false); + GB_Post_ReceiverIsland.ResumeLayout(false); + GB_Post_ReceiverIsland.PerformLayout(); + GB_Post_Stationery.ResumeLayout(false); + GB_Post_ReceiverPlayer.ResumeLayout(false); + GB_Post_ReceiverPlayer.PerformLayout(); + TP_Post_Items.ResumeLayout(false); + GB_Post_AttachedInfo.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)NUD_Post_Slots).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.DateTimePicker CAL_PostTimestamp; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Label L_Sender_Edit; + private System.Windows.Forms.Label L_Sender_ExternalName; + private System.Windows.Forms.Label L_ExternalName; + private System.Windows.Forms.Label L_InternalName; + private System.Windows.Forms.NumericUpDown NUD_Variant; + private System.Windows.Forms.Label L_Variant; + private System.Windows.Forms.NumericUpDown NUD_Species; + private System.Windows.Forms.Label L_Species; + private System.Windows.Forms.PictureBox PB_Villager; + private System.Windows.Forms.TextBox TB_Post_Message; + private System.Windows.Forms.TextBox TB_Post_FromLine; + private System.Windows.Forms.TextBox TB_Post_ToLine; + private System.Windows.Forms.Label L_Post_To; + private System.Windows.Forms.Label L_Post_Message; + private System.Windows.Forms.Label L_Post_From; + private System.Windows.Forms.ComboBox CB_Post_Language; + private System.Windows.Forms.Label L_Post_UsedSlots; + private System.Windows.Forms.Label L_Post_UsedSlots_Value; + private System.Windows.Forms.Label L_Post_SelectedSlot; + private System.Windows.Forms.Button B_Delete; + private System.Windows.Forms.CheckBox CK_Post_Read; + private System.Windows.Forms.CheckBox CK_Post_Faved; + private System.Windows.Forms.ComboBox CB_Post_SenderType; + private System.Windows.Forms.Label L_SenderType; + private System.Windows.Forms.GroupBox GB_Post_Villager; + private System.Windows.Forms.GroupBox GB_Post_Player; + private System.Windows.Forms.Label L_Post_TimeStamp; + private System.Windows.Forms.Label L_Post_Language; + private System.Windows.Forms.Label L_Post_CountTo; + private System.Windows.Forms.Label L_Post_CountMsg; + private System.Windows.Forms.Label L_Post_CountFrom; + private System.Windows.Forms.GroupBox GB_Post_NPC; + private System.Windows.Forms.ComboBox CB_Post_NPC; + private System.Windows.Forms.TabControl TC_Post_SR; + private System.Windows.Forms.TabPage TP_Post_SR; + private System.Windows.Forms.TabPage TP_Post_Items; + private System.Windows.Forms.GroupBox GB_Post_ReceiverPlayer; + private System.Windows.Forms.GroupBox GB_Post_Stationery; + private System.Windows.Forms.ComboBox CB_Post_Stationery; + private System.Windows.Forms.Label L_Post_MailType; + private System.Windows.Forms.ComboBox CB_Post_MailType; + private System.Windows.Forms.GroupBox GB_Post_AttachedInfo; + private System.Windows.Forms.Label L_Post_AttachmentSkin; + private System.Windows.Forms.ComboBox CB_Post_AttachmentSkin; + private ItemEditor ItemEditor; + private System.Windows.Forms.TextBox TB_Post_PlayerName; + private System.Windows.Forms.Button B_Import; + private System.Windows.Forms.Button B_Dump; + private System.Windows.Forms.Button B_Post_DumpAll; + private System.Windows.Forms.GroupBox GB_Post_ReceiverIsland; + private System.Windows.Forms.TextBox TB_Post_ReceiverIsland; + private System.Windows.Forms.TextBox TB_Post_ReceiverPlayer; + private System.Windows.Forms.NumericUpDown NUD_Post_Slots; + } +} \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/Player/PostBoxEditor.cs b/NHSE.WinForms/Subforms/Player/PostBoxEditor.cs new file mode 100644 index 0000000..595dc42 --- /dev/null +++ b/NHSE.WinForms/Subforms/Player/PostBoxEditor.cs @@ -0,0 +1,572 @@ +using NHSE.Core; +using NHSE.Sprites; +using NHSE.WinForms.Properties; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Media; +using System.Windows.Forms; +using static NHSE.Core.Mail; + +namespace NHSE.WinForms; + +public partial class PostBoxEditor : Form +{ + private readonly Player Player; + private readonly PostBox PostBox; + + private readonly string[] Wrap; + private readonly string[] Box; + private Item Attachment; + private List PostSlots; + + private string GetUpdatedVillagerInternalName() => VillagerUtil.GetInternalVillagerName((VillagerSpecies)NUD_Species.Value, (int)NUD_Variant.Value); + + public PostBoxEditor(Player p, PostBox pb) + { + InitializeComponent(); + this.TranslateInterface(GameInfo.CurrentLanguage); + + Player = p; + PostBox = pb; + Attachment = new Item(); + + PostSlots = PostBox.GetUsedPostBoxSlots(); + + NUD_Post_Slots.Maximum = MaxSlots; + + L_Post_UsedSlots_Value.Text = PostSlots.Count + " / 300"; + + CB_Post_SenderType.Items.AddRange(NPCTypeList.ToArray()); + var senderNPC = SenderNPCData.Values.Select(npc => GameInfo.Strings.GetVillager(npc.NameConversion)); + CB_Post_NPC.Items.AddRange(senderNPC.ToArray()); + CB_Post_Language.Items.AddRange(BCP47LanguageString.Keys.ToArray()); + + CB_Post_Stationery.Items.AddRange(LetterStationerySkin.Values.Select(skin => GameInfo.Strings.GetMail(skin.name)).ToArray()); + + TB_Post_ToLine.MaxLength = LetterToTextLength; + TB_Post_Message.MaxLength = LetterMessageTextLength; + TB_Post_FromLine.MaxLength = LetterFromTextLength; + + ItemEditor.Initialize(GameInfo.Strings.ItemDataSource, true, true); + + CB_Post_MailType.Items.AddRange(MailTypeList.ToArray()); + + Wrap = ItemWrappingExtended.ItemWrappingSkin.Values.Select(skin => GameInfo.Strings.GetMail(skin.name)).ToArray(); + Box = ItemWrappingExtended.ItemBoxSkin.Values.Select(skin => GameInfo.Strings.GetMail(skin.name)).ToArray(); + + LoadMailItem(); + + DialogResult = DialogResult.Cancel; + } + + private void ChangeVillager(object sender, EventArgs e) => ChangeVillager(); + private void ChangeVillager() + { + var index = (int)NUD_Post_Slots.Value; + + if (PostBox.GetMailCheck((int)NUD_Post_Slots.Value) == false) + { + return; + } + + if (CB_Post_SenderType.SelectedIndex != 0) + { + var spVal = (int)NUD_Species.Value; + var vaVal = (int)NUD_Variant.Value; + + if (spVal >= 35 || (spVal == 25 && vaVal == 0) || (spVal == 22 && vaVal == 0)) + { + CB_Post_SenderType.SelectedIndex = 2; + } + else + { + CB_Post_SenderType.SelectedIndex = 1; + } + } + + var name = GetUpdatedVillagerInternalName(); + L_InternalName.Text = name; + L_ExternalName.Text = GameInfo.Strings.GetVillager(name); + + var sprite = VillagerSprite.GetVillagerSprite(name); + + if (CB_Post_SenderType.SelectedIndex == 1) // Villager + { + GB_Post_NPC.Enabled = false; + GB_Post_Player.Enabled = false; + + PB_Villager.Image = sprite; + + CB_Post_SenderType.SelectedIndex = 1; + CB_Post_NPC.SelectedIndex = -1; + } + else if (CB_Post_SenderType.SelectedIndex == 2) // NPC + { + GB_Post_NPC.Enabled = true; + GB_Post_Player.Enabled = false; + + + var speciesValue = (int)NUD_Species.Value; + if (!SenderNPCData.TryGetValue(speciesValue, out var npcData)) + { + PB_Villager.Image = sprite; + CB_Post_SenderType.SelectedIndex = 2; + CB_Post_NPC.SelectedIndex = -1; + return; + } + name = npcData.Image; + + sprite = VillagerSprite.GetVillagerSprite(name); + var nameNPC = SenderNPCData[(int)NUD_Species.Value].NameConversion; + L_InternalName.Text = nameNPC; + L_ExternalName.Text = GameInfo.Strings.GetVillager(nameNPC); + + PB_Villager.Image = sprite; + + CB_Post_SenderType.SelectedIndex = 2; + CB_Post_NPC.SelectedIndex = npcData.MappingIndex; + } + else if (CB_Post_SenderType.SelectedIndex == 0) // Player + { + GB_Post_NPC.Enabled = false; + GB_Post_Player.Enabled = true; + + sprite = VillagerSprite.GetVillagerSprite("Leaf"); + L_InternalName.Text = PostBox.GetSenderName(index); + L_ExternalName.Text = PostBox.GetSenderName(index); + + PB_Villager.Image = sprite; + + CB_Post_SenderType.SelectedIndex = 0; + CB_Post_NPC.SelectedIndex = -1; + } + else + { + var senderType = PostBox.GetSenderType(index); + throw new NotSupportedException($"Unknown sender type: 0x{senderType:X2}"); + } + } + + private void UpdateSenderNPC(object sender, EventArgs e) + { + var index = (int)NUD_Post_Slots.Value; + + var npcSelected = SenderNPCData.FirstOrDefault(x => x.Value.MappingIndex == CB_Post_NPC.SelectedIndex).Key; + NUD_Species.Value = npcSelected; + } + + private void UpdateMailType(object sender, EventArgs e) + { + if (CB_Post_MailType.SelectedIndex == 1) // Letter + { + CB_Post_Stationery.Enabled = true; + CB_Post_AttachmentSkin.Items.Clear(); + CB_Post_AttachmentSkin.Items.AddRange(Wrap); + CB_Post_AttachmentSkin.SelectedIndex = 0; + } + else if (CB_Post_MailType.SelectedIndex == 0) // Package + { + CB_Post_Stationery.Enabled = false; + CB_Post_AttachmentSkin.Items.Clear(); + CB_Post_AttachmentSkin.Items.AddRange(Box); + CB_Post_AttachmentSkin.SelectedIndex = 0; + CB_Post_Stationery.SelectedIndex = -1; + } + } + + private void UpdateSenderType(object sender, EventArgs e) + { + if (CB_Post_SenderType.SelectedIndex == 0) // Player + { + GB_Post_NPC.Enabled = false; + GB_Post_Player.Enabled = true; + L_InternalName.Text = "player"; + L_ExternalName.Text = "Player"; + PB_Villager.Image = null; + } + else if (CB_Post_SenderType.SelectedIndex == 1) // Villager + { + GB_Post_NPC.Enabled = false; + GB_Post_Player.Enabled = false; + } + else + { + GB_Post_NPC.Enabled = true; + GB_Post_Player.Enabled = false; + } + } + + private void UpdateMailCounters(object sender, EventArgs e) => UpdateMailCounters(); + private void UpdateMailCounters() + { + void UpdateCounter(Label label, TextBox textBox, int maxLength) + { + var currentLength = textBox.Text.Replace("\r\n", "\n").Length; + label.Text = currentLength + " / " + maxLength; + label.ForeColor = currentLength > maxLength + ? System.Drawing.Color.Red + : System.Drawing.SystemColors.WindowText; + } + + UpdateCounter(L_Post_CountTo, TB_Post_ToLine, LetterToTextLength); + UpdateCounter(L_Post_CountMsg, TB_Post_Message, LetterMessageTextLength); + UpdateCounter(L_Post_CountFrom, TB_Post_FromLine, LetterFromTextLength); + } + + private void ResetInterface() + { + L_InternalName.Text = ""; + L_ExternalName.Text = ""; + PB_Villager.Image = null; + TB_Post_ToLine.Text = ""; + TB_Post_Message.Text = ""; + TB_Post_FromLine.Text = ""; + CK_Post_Read.Checked = false; + CK_Post_Faved.Checked = false; + CAL_PostTimestamp.Value = DateTime.Now; + CB_Post_SenderType.SelectedIndex = -1; + CB_Post_NPC.SelectedIndex = -1; + TB_Post_PlayerName.Text = ""; + TB_Post_ReceiverPlayer.Text = ""; + TB_Post_ReceiverIsland.Text = ""; + CB_Post_Language.SelectedIndex = -1; + CB_Post_Stationery.SelectedIndex = -1; + CB_Post_MailType.SelectedIndex = -1; + CB_Post_AttachmentSkin.Items.Clear(); + } + + + private void LoadMailItem(object sender, EventArgs e) => LoadMailItem(); + private void LoadMailItem() + { + ResetInterface(); + + if (PostBox.GetUsedPostBoxSlots().Count == 0) + { + MessageBox.Show("No mail items found in the post box."); + return; + } + + if(PostBox.GetMailCheck((int)NUD_Post_Slots.Value) == false) + { + return; + } + + LoadVillagerFromMail(); + LoadMailText(); + LoadMailProperties(); + LoadMailAttachment(); + } + + private void LoadVillagerFromMail() + { + var index = (int)NUD_Post_Slots.Value; + NUD_Species.Value = PostBox.GetVillagerSenderSpeciesId(index); + NUD_Variant.Value = PostBox.GetVillagerSenderVariantId(index); + + CB_Post_SenderType.SelectedIndex = PostBox.GetSenderType(index); + + ChangeVillager(); + } + + private void LoadMailText() + { + var index = (int)NUD_Post_Slots.Value; + + var toText = PostBox.GetLetterToLineText(index); + TB_Post_ToLine.Text = toText; + var msgText = PostBox.GetLetterMessageText(index); + TB_Post_Message.Text = msgText.Replace("\n", "\r\n"); + var fromText = PostBox.GetLetterFromLineText(index); + TB_Post_FromLine.Text = fromText; + + UpdateMailCounters(); + } + + private void LoadMailProperties() + { + var index = (int)NUD_Post_Slots.Value; + + CK_Post_Read.Checked = PostBox.GetMailReadStatus(index); + CK_Post_Faved.Checked = PostBox.GetMailFavStatus(index); + CAL_PostTimestamp.Value = PostBox.GetTimestamp(index); + CB_Post_SenderType.SelectedIndex = PostBox.GetSenderType(index); + + SenderNPCData.TryGetValue((int)NUD_Species.Value, out var npcData); + + if (CB_Post_SenderType.SelectedIndex == 2 && npcData != null) // NPC + CB_Post_NPC.SelectedIndex = npcData.MappingIndex; + + if (CB_Post_SenderType.SelectedIndex == 0) // Player + TB_Post_PlayerName.Text = PostBox.GetSenderName(index); + + TB_Post_ReceiverPlayer.Text = PostBox.GetReceiverPlayerName(index); + TB_Post_ReceiverIsland.Text = PostBox.GetReceiverIslandName(index); + + var lang = PostBox.GetMailLanguageString(index); + if (lang != null && BCP47LanguageString.ContainsKey(lang)) + { + CB_Post_Language.SelectedIndex = BCP47LanguageString[lang]; + } + else + { + CB_Post_Language.SelectedIndex = -1; + } + + var stationerySkin = PostBox.GetMailStationerySkin(index); + if (LetterStationerySkin.ContainsKey(stationerySkin)) + { + CB_Post_Stationery.SelectedIndex = LetterStationerySkin[stationerySkin].index; + } + else + { + CB_Post_Stationery.SelectedIndex = -1; + } + } + + private void LoadMailAttachment() + { + var index = (int)NUD_Post_Slots.Value; + + var attachedItemId = PostBox.GetAttachedItem(index); + Attachment = ItemEditor.LoadItem(attachedItemId); + + var wrap = PostBox.GetItemWrappingType(index); + var letterType = PostBox.GetMailType(index); + + CB_Post_MailType.SelectedIndex = Convert.ToInt32(letterType); + + if (CB_Post_MailType.SelectedIndex == 1) + { + CB_Post_Stationery.Enabled = true; + CB_Post_AttachmentSkin.Items.Clear(); + CB_Post_AttachmentSkin.Items.AddRange(Wrap); + CB_Post_AttachmentSkin.SelectedIndex = ItemWrappingExtended.ItemWrappingSkin[wrap].index; + } + if (CB_Post_MailType.SelectedIndex == 0) + { + CB_Post_Stationery.Enabled = false; + CB_Post_AttachmentSkin.Items.Clear(); + CB_Post_AttachmentSkin.Items.AddRange(Box); + CB_Post_AttachmentSkin.SelectedIndex = ItemWrappingExtended.ItemBoxSkin[wrap].index; + CB_Post_Stationery.SelectedIndex = -1; + } + } + + private void UpdateMailSlotIndex(int index) + { + if (!PostBox.GetMailCheck(index) || PostBox.GetPostBoxSortIndex(index) == 0x00) + { + var nextSlot = PostBox.GetLatestUniqueId(); + PostBox.SetPostBoxSortIndex(index, (byte)nextSlot); + PostBox.SetLatestUniqueId(nextSlot + 1); + } + } + + private void UpdateMailSenderInfo(int index) + { + PostBox.SetSenderType(index, (byte)CB_Post_SenderType.SelectedIndex); + if (CB_Post_SenderType.SelectedIndex == 0x00) // Player + { + PostBox.SetPlayerSenderIslandId(index, Player.Personal.TownID); + PostBox.SetPlayerSenderIslandName(index, Player.Personal.TownName); + PostBox.SetSenderId(index, Player.Personal.PlayerID); + PostBox.SetSenderName(index, TB_Post_PlayerName.Text); + } + + if (CB_Post_SenderType.SelectedIndex == 0x01) // Villager + { + PostBox.SetVillagerSenderSpeciesId(index, (int)NUD_Species.Value); + PostBox.SetVillagerSenderVariantId(index, (int)NUD_Variant.Value); + PostBox.SetNPCSenderIslandId(index, Player.Personal.TownID); + PostBox.SetNPCSenderIslandName(index, Player.Personal.TownName); + PostBox.SetSenderId(index, 0x02); + // Don't set a sender nameNPC, this is blank for villagers. + } + + if (CB_Post_SenderType.SelectedIndex == 0x02) // NPC + { + PostBox.SetVillagerSenderSpeciesId(index, (int)NUD_Species.Value); + PostBox.SetVillagerSenderVariantId(index, (int)NUD_Variant.Value); + // Don't set a sender island ID or nameNPC, this is blank for NPCs. + PostBox.SetSenderId(index, 0x00); + // Don't set a sender nameNPC, this is blank for NPCs. + } + } + + private void UpdateMailAttachment(int index) + { + PostBox.SetAttachedItem(index, ItemEditor.SetItem(Attachment)); + + var selectedSkinIndex = CB_Post_AttachmentSkin.SelectedIndex; + if (CB_Post_MailType.SelectedIndex == 1) + { + PostBox.SetMailType(index, true); + var attachmentSkin = ItemWrappingExtended.ItemWrappingSkin.FirstOrDefault(x => x.Value.index == selectedSkinIndex); + if (attachmentSkin.Value != null) + { + PostBox.SetItemWrappingType(index, (byte)attachmentSkin.Key); + } + + var letterSkinIndex = CB_Post_Stationery.SelectedIndex; + var letterSkin = (ushort)LetterStationerySkin.FirstOrDefault(skin => skin.Value.index == letterSkinIndex).Key; + PostBox.SetMailStationerySkin(index, letterSkin); + } + else if (CB_Post_MailType.SelectedIndex == 0) + { + PostBox.SetMailType(index, false); + var attachmentSkin = ItemWrappingExtended.ItemBoxSkin.FirstOrDefault(x => x.Value.index == selectedSkinIndex); + if (attachmentSkin.Value != null) + { + PostBox.SetItemWrappingType(index, (byte)attachmentSkin.Key); + } + + PostBox.SetMailStationerySkin(index, 0); + } + } + + private void UpdateMailReceiverInfo(int index) + { + PostBox.SetReceiverPlayerName(index, TB_Post_ReceiverPlayer.Text); + PostBox.SetReceiverPlayerId(index, Player.Personal.PlayerID); + PostBox.SetReceiverIslandName(index, TB_Post_ReceiverIsland.Text); + PostBox.SetReceiverIslandId(index, Player.Personal.TownID); + } + + private void UpdateMailText(int index) + { + var langString = BCP47LanguageString.FirstOrDefault(x => x.Value == CB_Post_Language.SelectedIndex).Key; + PostBox.SetMailLanguageString(index, langString, CB_Post_SenderType.SelectedIndex == 0); + PostBox.SetLetterToLineText(index, TB_Post_ToLine.Text.Replace("\r\n", "\n").Replace("\n", "")); + PostBox.SetLetterMessageText(index, TB_Post_Message.Text.Replace("\r\n", "\n")); + PostBox.SetLetterFromLineText(index, TB_Post_FromLine.Text.Replace("\r\n", "\n").Replace("\n", "")); + } + + private void UpdateMailItem(object sender, EventArgs e) + { + var index = (int)NUD_Post_Slots.Value; + + UpdateMailSlotIndex(index); + + PostBox.WipeTxRxSection(index); + + PostBox.SetMailReadStatus(index, CK_Post_Read.Checked); + PostBox.SetMailFavStatus(index, CK_Post_Faved.Checked); + + UpdateMailSenderInfo(index); + + UpdateMailReceiverInfo(index); + + UpdateMailAttachment(index); + + UpdateMailText(index); + + PostBox.SetTimeStamp(index, CAL_PostTimestamp.Value); + } + + private void ImportPostItem(int index) + { + var currentIndex = PostBox.GetPostBoxSortIndex(index); + int currentUniqueId = PostBox.GetLatestUniqueId(); + + currentUniqueId = Math.Min(currentUniqueId, 299); // Cap unique ID to prevent overflow and ensure it stays within the 300 mail item limit. + + if(currentIndex != 0x00 || PostBox.GetMailCheck(index)) + { + using var ofd = new OpenFileDialog(); + ofd.Filter = "New Horizons Post (*.nhpb)|*.nhpb|All files (*.*)|*.*"; + if (ofd.ShowDialog() != DialogResult.OK) + return; + var d = File.ReadAllBytes(ofd.FileName); + PostBox.SetIndividualLetter(index, d); + PostBox.SetPostBoxSortIndex(index, (byte)currentIndex); + } + else + { + using var ofd = new OpenFileDialog(); + ofd.Filter = "New Horizons Post (*.nhpb)|*.nhpb|All files (*.*)|*.*"; + if (ofd.ShowDialog() != DialogResult.OK) + return; + var d = File.ReadAllBytes(ofd.FileName); + PostBox.SetIndividualLetter(index, d); + PostBox.SetPostBoxSortIndex(index, (byte)currentUniqueId); + PostBox.SetLatestUniqueId(Math.Min(currentUniqueId + 1, 299)); + } + LoadMailItem(); + } + private void DumpPostItem(int index) + { + var name = Player.Personal.PlayerName + "_Post_Slot" + index + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); + using var sfd = new SaveFileDialog(); + sfd.Filter = "New Horizons Post (*.nhpb)|*.nhpb|All files (*.*)|*.*"; + sfd.FileName = $"{name}.nhpb"; + if (sfd.ShowDialog() != DialogResult.OK) + return; + + var d = PostBox.GetIndividualLetter(index); + File.WriteAllBytes(sfd.FileName, d); + } + + private void DumpAllPostItems() + { + using var fbd = new FolderBrowserDialog(); + if (fbd.ShowDialog() != DialogResult.OK) + return; + var postSlots = PostBox.GetUsedPostBoxSlots(); + postSlots.ForEach(i => + { + var name = Player.Personal.PlayerName + "_Post_Slot" + i + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); + var path = Path.Combine(fbd.SelectedPath, $"{name}.nhpb"); + var d = PostBox.GetIndividualLetter(i); + File.WriteAllBytes(path, d); + }); + } + + private void B_Dump_Click(object sender, EventArgs e) + { + var index = (int)NUD_Post_Slots.Value; + + if (sender == B_Post_DumpAll) + { + DumpAllPostItems(); + SystemSounds.Asterisk.Play(); + } + else + { + DumpPostItem(index); + SystemSounds.Asterisk.Play(); + } + } + + private void B_Import_Click(object sender, EventArgs e) + { + var index = (int)NUD_Post_Slots.Value; + ImportPostItem(index); + SystemSounds.Asterisk.Play(); + } + + private void B_Delete_Click(object sender, EventArgs e) + { + var index = (int)NUD_Post_Slots.Value; + + var arr = new byte[Mail.SIZE]; + arr[AttachedItemID] = 0xFE; + arr[AttachedItemID + 1] = 0xFF; + arr[PostBoxSortIndex - 4] = 0xFE; + arr[PostBoxSortIndex - 3] = 0xFF; + Span bytes = arr; + PostBox.SetIndividualLetter(index, bytes); + + SystemSounds.Asterisk.Play(); + } + + private void B_Save_Click(object sender, EventArgs e) + { + UpdateMailItem(sender, e); + SystemSounds.Asterisk.Play(); + } + + private void B_Cancel_Click(object sender, EventArgs e) => Close(); +} diff --git a/NHSE.WinForms/Subforms/Player/PostBoxEditor.resx b/NHSE.WinForms/Subforms/Player/PostBoxEditor.resx new file mode 100644 index 0000000..68d1a99 --- /dev/null +++ b/NHSE.WinForms/Subforms/Player/PostBoxEditor.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/NHSE.WinForms/Subforms/SingleItemEditor.Designer.cs b/NHSE.WinForms/Subforms/SingleItemEditor.Designer.cs index c027390..0faed43 100644 --- a/NHSE.WinForms/Subforms/SingleItemEditor.Designer.cs +++ b/NHSE.WinForms/Subforms/SingleItemEditor.Designer.cs @@ -28,56 +28,55 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.B_Save = new System.Windows.Forms.Button(); - this.B_Cancel = new System.Windows.Forms.Button(); - this.ItemEditor = new NHSE.WinForms.ItemEditor(); - this.SuspendLayout(); + B_Save = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + ItemEditor = new ItemEditor(); + SuspendLayout(); // // B_Save // - this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Save.Location = new System.Drawing.Point(92, 236); - this.B_Save.Name = "B_Save"; - this.B_Save.Size = new System.Drawing.Size(75, 31); - this.B_Save.TabIndex = 1; - this.B_Save.Text = "Save"; - this.B_Save.UseVisualStyleBackColor = true; - this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + B_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Save.Location = new System.Drawing.Point(94, 339); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(75, 31); + B_Save.TabIndex = 1; + B_Save.Text = "Save"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; // // B_Cancel // - this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Cancel.Location = new System.Drawing.Point(11, 236); - this.B_Cancel.Name = "B_Cancel"; - this.B_Cancel.Size = new System.Drawing.Size(75, 31); - this.B_Cancel.TabIndex = 2; - this.B_Cancel.Text = "Cancel"; - this.B_Cancel.UseVisualStyleBackColor = true; - this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + B_Cancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + B_Cancel.Location = new System.Drawing.Point(13, 339); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(75, 31); + B_Cancel.TabIndex = 2; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; // - // itemEditor1 + // ItemEditor // - this.ItemEditor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.ItemEditor.Location = new System.Drawing.Point(12, 12); - this.ItemEditor.Name = "ItemEditor"; - this.ItemEditor.Size = new System.Drawing.Size(155, 210); - this.ItemEditor.TabIndex = 3; + ItemEditor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + ItemEditor.Location = new System.Drawing.Point(12, 12); + ItemEditor.Name = "ItemEditor"; + ItemEditor.Size = new System.Drawing.Size(157, 316); + ItemEditor.TabIndex = 3; // // SingleItemEditor // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; - this.ClientSize = new System.Drawing.Size(179, 279); - this.Controls.Add(this.ItemEditor); - this.Controls.Add(this.B_Cancel); - this.Controls.Add(this.B_Save); - this.Icon = global::NHSE.WinForms.Properties.Resources.icon; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SingleItemEditor"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Item Editor"; - this.ResumeLayout(false); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + ClientSize = new System.Drawing.Size(181, 382); + Controls.Add(ItemEditor); + Controls.Add(B_Cancel); + Controls.Add(B_Save); + Icon = Properties.Resources.icon; + MaximizeBox = false; + MinimizeBox = false; + Name = "SingleItemEditor"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Item Editor"; + ResumeLayout(false); } diff --git a/NHSE.WinForms/Subforms/SingleItemEditor.resx b/NHSE.WinForms/Subforms/SingleItemEditor.resx index 1af7de1..8b2ff64 100644 --- a/NHSE.WinForms/Subforms/SingleItemEditor.resx +++ b/NHSE.WinForms/Subforms/SingleItemEditor.resx @@ -1,17 +1,17 @@  -