diff --git a/data/shapes/gemlights/gemlight.dts b/data/shapes/gemlights/gemlight.dts index 38164848..26cc660f 100644 Binary files a/data/shapes/gemlights/gemlight.dts and b/data/shapes/gemlights/gemlight.dts differ diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 69d411db..f4c2257b 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -416,7 +416,7 @@ class DtsObject extends GameObject { dtsshader.normalizeNormals = false; // These arent normalized if (this.identifier != null && StringTools.startsWith(this.identifier, "GemBeam")) { dtsshader.usePremultipliedAlpha = true; - dtsshader.opacityMult = 0.5; // Hardcoded + dtsshader.opacityMult = 3.0; // Hardcoded } material.mainPass.removeShader(material.textureShader); material.mainPass.addShader(dtsshader); diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 6ecfe672..e968e5db 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -792,7 +792,8 @@ class MarbleWorld extends Scheduler { this.setUp(this.marble, startquat.up, this.timeState, true); this.deselectPowerUp(this.marble); - AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); + if (!this.isMultiplayer) + AudioManager.playSound(ResourceLoader.getResource('data/sound/spawn.wav', ResourceLoader.getAudio, this.soundResources)); Console.log("State Start"); this.clearSchedule(); @@ -844,6 +845,10 @@ class MarbleWorld extends Scheduler { this.setUp(marble, respawnUp, this.timeState, true); + var store = marble.heldPowerup; + marble.heldPowerup = null; + haxe.Timer.delay(() -> marble.heldPowerup = store, 500); // This bs + if (marble == this.marble) this.playGui.setCenterText('none'); if (!this.isMultiplayer) @@ -2836,7 +2841,7 @@ class MarbleWorld extends Scheduler { offset.x = -offset.x; } var mpos = this.currentCheckpoint.obj.getAbsPos().getPosition().add(offset); - this.marble.setPosition(mpos.x, mpos.y, mpos.z); + this.marble.setMarblePosition(mpos.x, mpos.y, mpos.z); marble.velocity.load(new Vector(0, 0, 0)); marble.omega.load(new Vector(0, 0, 0)); Console.log('Respawn:'); diff --git a/src/Radar.hx b/src/Radar.hx index 7f801612..0fead6c0 100644 --- a/src/Radar.hx +++ b/src/Radar.hx @@ -53,6 +53,9 @@ class Radar { radarTileRedGem, radarTileYellowGem, radarTileBlueGem, radarTileGreenGem, radarTileOrangeGem, radarTilePinkGem, radarTilePurpleGem, radarTileTurquoiseGem, radarTileBlackGem, radarTilePlatinumGem, radarTileEndPad ]; + for (tile in radarTiles) { + tile.scaleToSize(tile.width * Settings.uiScale, tile.height * Settings.uiScale); + } } public function init() { diff --git a/src/gui/MPServerDlg.hx b/src/gui/MPServerDlg.hx index 88363e2b..8cb4ce4b 100644 --- a/src/gui/MPServerDlg.hx +++ b/src/gui/MPServerDlg.hx @@ -259,8 +259,8 @@ class MPServerDlg extends GuiImage { playerPlus.position = new Vector(359, 9 + 29 * 5); playerPlus.extent = new Vector(31, 31); playerPlus.pressedAction = (sender) -> { - Settings.serverSettings.maxPlayers = Std.int(Math.min(8, Settings.serverSettings.maxPlayers + 1)); - maxPlayers.text.text = "Max Players: " + Settings.serverSettings.maxPlayers; + curServerMaxPlayers = Std.int(Math.min(8, curServerMaxPlayers + 1)); + maxPlayers.text.text = "Max Players: " + curServerMaxPlayers; }; serverSettingsContainer.addChild(playerPlus); diff --git a/src/gui/PlayGui.hx b/src/gui/PlayGui.hx index f5eec555..710046a2 100644 --- a/src/gui/PlayGui.hx +++ b/src/gui/PlayGui.hx @@ -632,19 +632,23 @@ class PlayGui { this.playGuiCtrl.addChild(playerListContainer); var imgLoader = (s:String) -> { - switch (s) { + var t = switch (s) { case "high": - return ResourceLoader.getResource("data/ui/mp/play/connection-high.png", ResourceLoader.getImage, this.imageResources).toTile(); + ResourceLoader.getResource("data/ui/mp/play/connection-high.png", ResourceLoader.getImage, this.imageResources).toTile(); case "medium": - return ResourceLoader.getResource("data/ui/mp/play/connection-medium.png", ResourceLoader.getImage, this.imageResources).toTile(); + ResourceLoader.getResource("data/ui/mp/play/connection-medium.png", ResourceLoader.getImage, this.imageResources).toTile(); case "low": - return ResourceLoader.getResource("data/ui/mp/play/connection-low.png", ResourceLoader.getImage, this.imageResources).toTile(); + ResourceLoader.getResource("data/ui/mp/play/connection-low.png", ResourceLoader.getImage, this.imageResources).toTile(); case "matanny": - return ResourceLoader.getResource("data/ui/mp/play/connection-matanny.png", ResourceLoader.getImage, this.imageResources).toTile(); + ResourceLoader.getResource("data/ui/mp/play/connection-matanny.png", ResourceLoader.getImage, this.imageResources).toTile(); case "unknown": - return ResourceLoader.getResource("data/ui/mp/play/connection-unknown.png", ResourceLoader.getImage, this.imageResources).toTile(); - } - return null; + ResourceLoader.getResource("data/ui/mp/play/connection-unknown.png", ResourceLoader.getImage, this.imageResources).toTile(); + default: + null; + }; + if (t != null) + t.scaleToSize(t.width * (Settings.uiScale), t.height * (Settings.uiScale)); + return t; } playerListCtrl = new GuiMLTextListCtrl(bfont, [], imgLoader, { diff --git a/src/mis/MisParser.hx b/src/mis/MisParser.hx index c8dfaaab..d3414449 100644 --- a/src/mis/MisParser.hx +++ b/src/mis/MisParser.hx @@ -99,11 +99,11 @@ class MisParser { else if (!lineMatch || (blockMatch && lineMatch && blockCommentRegEx.matchedPos().pos < lineCommentRegEx.matchedPos().pos)) { this.text = this.text.substring(0, blockCommentRegEx.matchedPos().pos) + this.text.substring(blockCommentRegEx.matchedPos().pos + blockCommentRegEx.matchedPos().len); - currentIndex += blockCommentRegEx.matchedPos().pos; + currentIndex = blockCommentRegEx.matchedPos().pos + blockCommentRegEx.matchedPos().len; } else { this.text = this.text.substring(0, lineCommentRegEx.matchedPos().pos) + this.text.substring(lineCommentRegEx.matchedPos().pos + lineCommentRegEx.matchedPos().len); - currentIndex += lineCommentRegEx.matchedPos().pos; + currentIndex = lineCommentRegEx.matchedPos().pos + lineCommentRegEx.matchedPos().len; } } @@ -294,13 +294,30 @@ class MisParser { function readPath(name:String) { var sg:MissionElementSimGroup = cast this.readSimGroup(name); - var obj = new MissionElementPath(); - obj._type = MissionElementType.Path; - obj._name = name; - obj.markers = sg.elements.map(x -> cast x); - obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); + var allMarkers = true; + // Verify if they are all markers + for (e in sg.elements) { + if (e._type != MissionElementType.Marker) { + allMarkers = false; + break; + } + } + if (allMarkers) { + var obj = new MissionElementPath(); + obj._type = MissionElementType.Path; + obj._name = name; + obj.markers = sg.elements.map(x -> cast x); + obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); - return obj; + return obj; + } else { + var obj = new MissionElementPath(); + obj._type = MissionElementType.Path; + obj._name = name; + obj.markers = sg.elements.filter(x -> x._type == MissionElementType.Marker).map(x -> cast x); + obj.markers.sort((a, b) -> cast MisParser.parseNumber(a.seqnum) - MisParser.parseNumber(b.seqnum)); + return obj; + } } /** Resolves a TorqueScript rvalue expression. Currently only supports the concatenation @ operator. */ diff --git a/src/net/NetCommands.hx b/src/net/NetCommands.hx index e396b41d..1a7abde8 100644 --- a/src/net/NetCommands.hx +++ b/src/net/NetCommands.hx @@ -18,6 +18,8 @@ import src.Console; import src.Marbleland; import src.Settings; import src.Util; +import src.AudioManager; +import src.ResourceLoader; @:build(net.RPCMacro.build()) class NetCommands { @@ -248,6 +250,7 @@ class NetCommands { MarbleGame.instance.touchInput.setControlsEnabled(true); } MarbleGame.instance.world.marble.camera.stopOverview(); + AudioManager.playSound(ResourceLoader.getAudio('data/sound/spawn.wav').resource); } if (Net.clientSpectate || Net.hostSpectate) {