Skip to content

Commit a6f285b

Browse files
committed
fixing some update issues
1 parent c1d7183 commit a6f285b

File tree

1 file changed

+64
-12
lines changed

1 file changed

+64
-12
lines changed

source/util/UpdateSubState.hx

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,21 @@ class UpdateSubState extends FlxSubState
114114
httpGet(url, function(html)
115115
{
116116
var bestName:String = null;
117-
var bestVer:Int = Globals.APP_VERSION;
118-
var re = ~/href="(STLGameLauncher-v(\d+)\.exe)"/ig;
117+
var bestVer:Array<Int> = versionToArray(Globals.APP_VERSION_STR);
118+
var re = ~/href="(STLGameLauncher-Setup-v([\d_]+)\.exe)"/ig;
119119
while (re.match(html))
120120
{
121121
final name = re.matched(1);
122-
final ver = Std.parseInt(re.matched(2));
123-
if (ver != null && ver > bestVer)
122+
final verStr = re.matched(2);
123+
final verArr = versionToArray(verStr);
124+
if (compareVersions(verArr, bestVer) > 0)
124125
{
125-
bestVer = ver;
126+
bestVer = verArr;
126127
bestName = name;
127128
}
128129
}
129130
if (bestName != null)
130-
onResult(bestName, bestVer);
131+
onResult(bestName, arrayToVersion(bestVer));
131132
else
132133
onResult(null, -1);
133134
}, onError);
@@ -151,15 +152,16 @@ class UpdateSubState extends FlxSubState
151152
httpGet(url, function(html)
152153
{
153154
var bestName:String = null;
154-
var bestVer:Int = Globals.APP_VERSION;
155-
var re = ~/href="(STLGameLauncher-v(\d+)\.exe)"/ig;
155+
var bestVer:Array<Int> = versionToArray(Globals.APP_VERSION_STR);
156+
var re = ~/href="(STLGameLauncher-Setup-v([\d_]+)\.exe)"/ig;
156157
while (re.match(html))
157158
{
158159
final name = re.matched(1);
159-
final ver = Std.parseInt(re.matched(2));
160-
if (ver != null && ver > bestVer)
160+
final verStr = re.matched(2);
161+
final verArr = versionToArray(verStr);
162+
if (compareVersions(verArr, bestVer) > 0)
161163
{
162-
bestVer = ver;
164+
bestVer = verArr;
163165
bestName = name;
164166
}
165167
}
@@ -168,14 +170,50 @@ class UpdateSubState extends FlxSubState
168170
onDone(false);
169171
return;
170172
}
171-
appendStatic('[UPDATE] New APP installer: ' + bestName + ' (server ver ' + bestVer + ')');
173+
appendStatic('[UPDATE] New APP installer: ' + bestName + ' (server ver ' + arrayToVersion(bestVer) + ')');
172174
final tmp = tempPath(bestName);
173175
downloadFile(url + bestName, tmp, function()
174176
{
175177
appendStatic('[UPDATE] Running installer: ' + tmp);
176178
runInstallerAndExit(tmp);
177179
onDone(true);
178180
}, onError);
181+
// --- Semantic version helpers ---
182+
static function versionToArray(ver:Dynamic):Array<Int>
183+
{
184+
if (ver == null) return [0];
185+
var s = Std.string(ver).replace("_", ".");
186+
var parts = s.split(/[._]/);
187+
var arr = [];
188+
for (p in parts)
189+
{
190+
var n = Std.parseInt(p);
191+
arr.push((n == null) ? 0 : n);
192+
}
193+
return arr;
194+
}
195+
196+
static function compareVersions(a:Array<Int>, b:Array<Int>):Int
197+
{
198+
var len = Math.max(a.length, b.length);
199+
for (i in 0...len)
200+
{
201+
var ai = (i < a.length) ? a[i] : 0;
202+
var bi = (i < b.length) ? b[i] : 0;
203+
if (ai > bi) return 1;
204+
if (ai < bi) return -1;
205+
}
206+
return 0;
207+
}
208+
209+
static function arrayToVersion(arr:Array<Int>):Int
210+
{
211+
// Return a comparable integer for legacy code (e.g., 1.1.0 => 10100)
212+
var v = 0;
213+
for (i in 0...arr.length)
214+
v = v * 100 + arr[i];
215+
return v;
216+
}
179217
}, onError);
180218
}
181219
catch (e:Dynamic)
@@ -320,8 +358,22 @@ class UpdateSubState extends FlxSubState
320358
var i = 0;
321359
var total = toDelete.length + toDownload.length;
322360
var self = this;
361+
var lastDraw = Sys.time();
362+
function pumpEvents() {
363+
#if !flash
364+
try {
365+
FlxG.update();
366+
FlxG.draw();
367+
} catch (_:Dynamic) {}
368+
#end
369+
}
323370
function next()
324371
{
372+
// Periodically pump events to keep UI responsive
373+
if (Sys.time() - lastDraw > 0.2) {
374+
pumpEvents();
375+
lastDraw = Sys.time();
376+
}
325377
if (i < toDelete.length)
326378
{
327379
var file = toDelete[i++];

0 commit comments

Comments
 (0)