Skip to content

Commit bcba355

Browse files
Honor of Kings: World support
Co-Authored-By: LongerWarrior <37636768+LongerWarrior@users.noreply.github.com>
1 parent 147e014 commit bcba355

5 files changed

Lines changed: 250 additions & 2 deletions

File tree

CUE4Parse

Submodule CUE4Parse updated 29 files

FModel/Extensions/AvalonExtensions.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public static class AvalonExtensions
1414
private static readonly IHighlightingDefinition _cppHighlighter = LoadHighlighter("Cpp.xshd");
1515
private static readonly IHighlightingDefinition _changelogHighlighter = LoadHighlighter("Changelog.xshd");
1616
private static readonly IHighlightingDefinition _verseHighlighter = LoadHighlighter("Verse.xshd");
17+
private static readonly IHighlightingDefinition _luaHighlighter = LoadHighlighter("Lua.xshd");
1718

1819
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1920
private static IHighlightingDefinition LoadHighlighter(string resourceName)
@@ -29,6 +30,9 @@ public static IHighlightingDefinition HighlighterSelector(string ext)
2930
{
3031
switch (ext)
3132
{
33+
case "lua":
34+
case "luac":
35+
return _luaHighlighter;
3236
case "ini":
3337
case "csv":
3438
return _iniHighlighter;

FModel/FModel.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
<None Remove="Resources\Xml.xshd" />
8282
<None Remove="Resources\Cpp.xshd" />
8383
<None Remove="Resources\Changelog.xshd" />
84+
<None Remove="Resources\Lua.xshd" />
8485
<None Remove="Resources\unix.png" />
8586
<None Remove="Resources\linux.png" />
8687
<None Remove="Resources\stateofdecay2.png" />
@@ -129,6 +130,7 @@
129130
<EmbeddedResource Include="Resources\Verse.xshd" />
130131
<EmbeddedResource Include="Resources\Xml.xshd" />
131132
<EmbeddedResource Include="Resources\Cpp.xshd" />
133+
<EmbeddedResource Include="Resources\Lua.xshd" />
132134
<EmbeddedResource Include="Resources\Changelog.xshd" />
133135
<EmbeddedResource Include="Resources\default.frag" />
134136
<EmbeddedResource Include="Resources\default.vert" />

FModel/Resources/Lua.xshd

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
<SyntaxDefinition name="Lua" extensions=".lua;.luac" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
2+
<Color name="Keyword1" foreground="#C586C0" fontWeight="bold" />
3+
<Color name="Keyword2" foreground="#569CD6" fontWeight="bold" />
4+
<Color name="Comment" foreground="#6A9955" />
5+
<Color name="String" foreground="#D69D85" />
6+
<Color name="Number" foreground="#B5CEA8" />
7+
<Color name="Function" foreground="#DCDCAA" />
8+
<Color name="Punctuation" foreground="#89DDFF" />
9+
<Color name="ObjectName" foreground="#3DC9B0" />
10+
<Color name="Constant" foreground="#9CDCFE" />
11+
12+
<RuleSet>
13+
<Rule color="Comment">--.*$</Rule>
14+
15+
<Rule color="String">&quot;([^&quot;\\]|\\.)*&quot;</Rule>
16+
<Rule color="String">&apos;([^&apos;\\]|\\.)*&apos;</Rule>
17+
18+
<Rule color="Number">\b\d+\.\d+([eE][+-]?\d+)?\b</Rule>
19+
<Rule color="Number">\b\d+[eE][+-]?\d+\b</Rule>
20+
<Rule color="Number">\b\d+\b</Rule>
21+
22+
<Keywords color="Keyword1">
23+
<Word>return</Word>
24+
<Word>function</Word>
25+
<Word>goto</Word>
26+
<Word>end</Word>
27+
<Word>if</Word>
28+
<Word>else</Word>
29+
<Word>elseif</Word>
30+
<Word>then</Word>
31+
<Word>for</Word>
32+
<Word>in</Word>
33+
<Word>until</Word>
34+
<Word>while</Word>
35+
<Word>break</Word>
36+
<Word>or</Word>
37+
<Word>and</Word>
38+
<Word>repeat</Word>
39+
<Word>do</Word>
40+
</Keywords>
41+
42+
<Keywords color="Keyword2">
43+
<Word>local</Word>
44+
<Word>nil</Word>
45+
<Word>not</Word>
46+
<Word>true</Word>
47+
<Word>false</Word>
48+
</Keywords>
49+
50+
<Keywords color="Function">
51+
<!-- Core functions -->
52+
<Word>assert</Word>
53+
<Word>collectgarbage</Word>
54+
<Word>error</Word>
55+
<Word>ipairs</Word>
56+
<Word>next</Word>
57+
<Word>pairs</Word>
58+
<Word>pcall</Word>
59+
<Word>print</Word>
60+
<Word>rawequal</Word>
61+
<Word>rawget</Word>
62+
<Word>rawlen</Word>
63+
<Word>rawset</Word>
64+
<Word>select</Word>
65+
<Word>setmetatable</Word>
66+
<Word>tonumber</Word>
67+
<Word>tostring</Word>
68+
<Word>type</Word>
69+
<Word>xpcall</Word>
70+
<Word>getmetatable</Word>
71+
<Word>require</Word>
72+
<Word>module</Word>
73+
74+
<!-- Modules / tables -->
75+
<Word>math</Word>
76+
<Word>string</Word>
77+
<Word>table</Word>
78+
<Word>coroutine</Word>
79+
<Word>os</Word>
80+
<Word>io</Word>
81+
<Word>utf8</Word>
82+
<Word>bit32</Word>
83+
<Word>package</Word>
84+
<Word>debug</Word>
85+
86+
<!-- Bit32 / bitwise functions -->
87+
<Word>arshift</Word>
88+
<Word>band</Word>
89+
<Word>bnot</Word>
90+
<Word>bor</Word>
91+
<Word>bxor</Word>
92+
<Word>btest</Word>
93+
<Word>extract</Word>
94+
<Word>lrotate</Word>
95+
<Word>lshift</Word>
96+
<Word>replace</Word>
97+
<Word>rrotate</Word>
98+
<Word>rshift</Word>
99+
100+
<!-- Coroutine functions -->
101+
<Word>create</Word>
102+
<Word>resume</Word>
103+
<Word>running</Word>
104+
<Word>status</Word>
105+
<Word>wrap</Word>
106+
<Word>yield</Word>
107+
<Word>isyieldable</Word>
108+
109+
<!-- Debug functions -->
110+
<Word>getuservalue</Word>
111+
<Word>gethook</Word>
112+
<Word>getinfo</Word>
113+
<Word>getlocal</Word>
114+
<Word>getregistry</Word>
115+
<Word>getupvalue</Word>
116+
<Word>upvaluejoin</Word>
117+
<Word>upvalueid</Word>
118+
<Word>setuservalue</Word>
119+
<Word>sethook</Word>
120+
<Word>setlocal</Word>
121+
<Word>setupvalue</Word>
122+
<Word>traceback</Word>
123+
124+
<!-- IO functions -->
125+
<Word>close</Word>
126+
<Word>flush</Word>
127+
<Word>input</Word>
128+
<Word>lines</Word>
129+
<Word>open</Word>
130+
<Word>output</Word>
131+
<Word>popen</Word>
132+
<Word>read</Word>
133+
<Word>tmpfile</Word>
134+
<Word>seek</Word>
135+
<Word>setvbuf</Word>
136+
<Word>write</Word>
137+
138+
<!-- String functions -->
139+
<Word>byte</Word>
140+
<Word>char</Word>
141+
<Word>dump</Word>
142+
<Word>find</Word>
143+
<Word>format</Word>
144+
<Word>gmatch</Word>
145+
<Word>gsub</Word>
146+
<Word>len</Word>
147+
<Word>lower</Word>
148+
<Word>match</Word>
149+
<Word>rep</Word>
150+
<Word>reverse</Word>
151+
<Word>sub</Word>
152+
<Word>upper</Word>
153+
<Word>pack</Word>
154+
<Word>packsize</Word>
155+
<Word>unpack</Word>
156+
<Word>concat</Word>
157+
<Word>maxn</Word>
158+
<Word>insert</Word>
159+
<Word>move</Word>
160+
<Word>offset</Word>
161+
<Word>codepoint</Word>
162+
<Word>codes</Word>
163+
<Word>charpattern</Word>
164+
165+
<!-- OS / Time functions -->
166+
<Word>clock</Word>
167+
<Word>date</Word>
168+
<Word>difftime</Word>
169+
<Word>execute</Word>
170+
<Word>exit</Word>
171+
<Word>getenv</Word>
172+
<Word>remove</Word>
173+
<Word>rename</Word>
174+
<Word>setlocale</Word>
175+
<Word>time</Word>
176+
<Word>loadlib</Word>
177+
<Word>searchpath</Word>
178+
<Word>seeall</Word>
179+
<Word>preload</Word>
180+
<Word>cpath</Word>
181+
<Word>path</Word>
182+
<Word>searchers</Word>
183+
<Word>loaded</Word>
184+
185+
<!-- Math functions / constants -->
186+
<Word>abs</Word>
187+
<Word>acos</Word>
188+
<Word>asin</Word>
189+
<Word>atan</Word>
190+
<Word>atan2</Word>
191+
<Word>ceil</Word>
192+
<Word>cos</Word>
193+
<Word>cosh</Word>
194+
<Word>deg</Word>
195+
<Word>exp</Word>
196+
<Word>floor</Word>
197+
<Word>fmod</Word>
198+
<Word>ult</Word>
199+
<Word>log</Word>
200+
<Word>log10</Word>
201+
<Word>max</Word>
202+
<Word>min</Word>
203+
<Word>modf</Word>
204+
<Word>pi</Word>
205+
<Word>rad</Word>
206+
<Word>random</Word>
207+
<Word>randomseed</Word>
208+
<Word>sin</Word>
209+
<Word>sqrt</Word>
210+
<Word>tan</Word>
211+
<Word>sinh</Word>
212+
<Word>tanh</Word>
213+
<Word>pow</Word>
214+
<Word>frexp</Word>
215+
<Word>ldexp</Word>
216+
<Word>huge</Word>
217+
<Word>maxinteger</Word>
218+
<Word>mininteger</Word>
219+
</Keywords>
220+
221+
<Rule color="Punctuation">(\|)|(&lt;&lt;)|(&gt;&gt;)|(\/\/)|(==)|(~=)|(&lt;=)|(&gt;=)|(&lt;)|(&gt;)|(=)|(\()|(\))|(\{)|(\})|(\[)|(\])|(::)|(:)|(;)|(,)|(\.\.\.)|(\.\.)|(\.)|[+\-*%\^#&amp;~]</Rule>
222+
223+
<Rule color="ObjectName">(?&lt;=function\s)[A-Za-z0-9_]+(?=\.)</Rule>
224+
225+
<Rule color="Function">(?&lt;=\.)[A-Za-z0-9_]+(?=\()</Rule>
226+
<Rule color="Function">(?&lt;=function\s)[A-Za-z0-9_]+(?=\s*\()</Rule> <!-- Standalone function name -->
227+
228+
<Rule color="Constant">\b[A-Z_][A-Z0-9_]*\b</Rule>
229+
</RuleSet>
230+
</SyntaxDefinition>

FModel/ViewModels/CUE4ParseViewModel.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
using CUE4Parse.GameTypes.Borderlands4.Assets.Exports;
2525
using CUE4Parse.GameTypes.Borderlands4.Wwise;
2626
using CUE4Parse.GameTypes.DFHO.Assets.Objects;
27+
using CUE4Parse.GameTypes.HonorOfKings.FileProvider;
2728
using CUE4Parse.GameTypes.KRD.Assets.Exports;
2829
using CUE4Parse.GameTypes.RocoKingdomWorld.Assets.Objects;
2930
using CUE4Parse.GameTypes.SMG.UE4.Assets.Exports.Wwise;
@@ -195,6 +196,7 @@ public CUE4ParseViewModel()
195196
], SearchOption.AllDirectories, versionContainer, pathComparer),
196197
_ when versionContainer.Game is EGame.GAME_AshEchoes => new AEDefaultFileProvider(gameDirectory, SearchOption.AllDirectories, versionContainer, pathComparer),
197198
_ when versionContainer.Game is EGame.GAME_BlackStigma => new DefaultFileProvider(gameDirectory, SearchOption.AllDirectories, versionContainer, StringComparer.Ordinal),
199+
_ when versionContainer.Game is EGame.GAME_HonorofKingsWorld => new HoKWDefaultFileProvider(gameDirectory, SearchOption.AllDirectories, versionContainer, pathComparer),
198200
_ => new DefaultFileProvider(gameDirectory, SearchOption.AllDirectories, versionContainer, pathComparer)
199201
};
200202

@@ -718,7 +720,6 @@ public void Extract(CancellationToken cancellationToken, GameFile entry, bool ad
718720
case "verse":
719721
case "html":
720722
case "json5":
721-
case "json":
722723
case "uref":
723724
case "cube":
724725
case "usda":
@@ -773,6 +774,17 @@ public void Extract(CancellationToken cancellationToken, GameFile entry, bool ad
773774

774775
break;
775776
}
777+
case "json":
778+
{
779+
var data = Provider.SaveAsset(entry);
780+
using var stream = new MemoryStream(data) { Position = 0 };
781+
using var reader = new StreamReader(stream);
782+
783+
var parsedJson = JsonConvert.DeserializeObject(reader.ReadToEnd());
784+
TabControl.SelectedTab.SetDocumentText(JsonConvert.SerializeObject(parsedJson, Formatting.Indented), saveProperties, updateUi);
785+
786+
break;
787+
}
776788
case "locmeta":
777789
{
778790
var archive = entry.CreateReader();

0 commit comments

Comments
 (0)