fix gravity bug, fix spectator invisible btn bug, fix pause bug, fix prediction bug, fix competitive mode bug

This commit is contained in:
RandomityGuy 2024-07-07 22:41:24 +05:30
parent f9a58d15a9
commit 3fcf2c8799
9 changed files with 45 additions and 12 deletions

View file

@ -1861,7 +1861,7 @@ class Marble extends GameObject {
this.updateRollSound(timeState, contactTime / timeState.dt, this._slipAmount);
var megaMarbleDurationTicks = Net.connectedServerInfo.competitiveMode ? 156 : 312;
var megaMarbleDurationTicks = Net.isMP && Net.connectedServerInfo.competitiveMode ? 156 : 312;
if (this.megaMarbleUseTick > 0) {
if (Net.isHost) {
@ -2531,7 +2531,7 @@ class Marble extends GameObject {
}
inline function isMegaMarbleEnabled(timeState:TimeState) {
var megaMarbleTicks = Net.connectedServerInfo.competitiveMode ? 156 : 312;
var megaMarbleTicks = Net.isMP && Net.connectedServerInfo.competitiveMode ? 156 : 312;
if (this.level == null)
return false;
if (!this.level.isMultiplayer) {

View file

@ -208,7 +208,8 @@ class MarbleGame {
if (((Key.isPressed(Key.ESCAPE) #if js && paused #end) || Gamepad.isPressed(["start"]))
&& world.finishTime == null
&& world._ready) {
if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg) {
if (MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPPreGameDlg
|| (Net.isMP && paused && !(MarbleGame.canvas.children[MarbleGame.canvas.children.length - 1] is MPExitGameDlg))) {
return; // don't pause
}
paused = !paused;

View file

@ -787,9 +787,6 @@ class MarbleWorld extends Scheduler {
for (interior in this.interiors)
interior.reset();
this.oldOrientationQuat = new Quat();
this.newOrientationQuat = new Quat();
this.orientationChangeTime = -1e8;
this.setUp(this.marble, startquat.up, this.timeState, true);
this.deselectPowerUp(this.marble);
@ -2618,6 +2615,14 @@ class MarbleWorld extends Scheduler {
/** Get the current interpolated orientation quaternion. */
public function getOrientationQuat(time:Float) {
if (this.oldOrientationQuat.lengthSq() == 0.0) {
this.oldOrientationQuat = new Quat();
// this.oldOrientationQuat.init(this.marble.currentUp.toPoint());
}
if (this.newOrientationQuat.lengthSq() == 0.0) {
this.newOrientationQuat = new Quat();
// this.newOrientationQuat.initNormal(this.marble.currentUp.toPoint());
}
if (time < this.orientationChangeTime)
return this.oldOrientationQuat;
if (time > this.orientationChangeTime + 0.3)
@ -2651,7 +2656,7 @@ class MarbleWorld extends Scheduler {
var u = v1.normalized();
var v = v2.normalized();
if (u.dot(v) == -1) {
if (Math.abs(u.dot(v) + 1) < hxd.Math.EPSILON) {
var q = new Quat();
var o = orthogonal(u).normalized();
q.x = o.x;

View file

@ -82,6 +82,8 @@ class Marbleland {
mission.isClaMission = true;
mission.addedAt = missionData.addedAt;
mission.gameMode = missionData.gameMode;
if (mission.gameMode != null)
mission.gameMode = mission.gameMode.toLowerCase();
var game = missionData.modification;
if (isMultiplayer) {

View file

@ -267,7 +267,7 @@ class Mission {
alarmStart = 15;
return alarmStart;
}
alarmStart = 0;
var alarmStart = this.qualifyTime;
if (this.missionInfo.alarmstarttime != null)
alarmStart -= MisParser.parseNumber(this.missionInfo.alarmstarttime);
else {

View file

@ -268,8 +268,10 @@ class MPPreGameDlg extends GuiControl {
if (playerListArr.length > 1) {
spectateBtn.anim.visible = true;
spectateBtn.disabled = false;
} else {
spectateBtn.anim.visible = false;
spectateBtn.disabled = true;
}
var playerListCompiled = playerListArr.map(player -> player.spectate ? '[S] ${player.name}' : player.name);

View file

@ -190,10 +190,10 @@ class PlayGui {
for (i in 0...3) {
countdownNumbers.push(new GuiAnim(numberTiles));
}
}
for (i in 0...6) {
gemCountNumbers.push(new GuiAnim(numberTiles));
}
for (i in 0...6) {
gemCountNumbers.push(new GuiAnim(numberTiles));
}
var rsgo = [];

View file

@ -254,6 +254,7 @@ class MissionElementTrigger extends MissionElementBase {
var keepangular:Null<String>;
var keepcamera:Null<String>;
var camerayaw:Null<String>;
var g:Null<String>;
public function new() {
_type = MissionElementType.Trigger;

View file

@ -113,6 +113,10 @@ class HuntMode extends NullMode {
spawnRot.w *= -1;
var spawnMat = spawnRot.toMatrix();
var up = spawnMat.up();
if (MisParser.parseBoolean(randomSpawn.g))
up.load(up.multiply(-1));
spawnPos = spawnPos.add(up); // 1.5 -> 0.5
return {
position: spawnPos,
@ -139,6 +143,9 @@ class HuntMode extends NullMode {
spawnRot.w *= -1;
var spawnMat = spawnRot.toMatrix();
var up = spawnMat.up();
if (MisParser.parseBoolean(randomSpawn.g))
up.load(up.multiply(-1));
spawnPos = spawnPos.add(up); // 1.5 -> 0.5
return {
position: spawnPos,
@ -166,6 +173,9 @@ class HuntMode extends NullMode {
spawnRot.w *= -1;
var spawnMat = spawnRot.toMatrix();
var up = spawnMat.up();
if (MisParser.parseBoolean(closestSpawn.g))
up.load(up.multiply(-1));
spawnPos = spawnPos.add(up); // 1.5 -> 0.5
return {
@ -375,7 +385,14 @@ class HuntMode extends NullMode {
if (gemSpawn.gem != null) {
gemSpawn.gem.pickedUp = status;
gemSpawn.gem.setHide(status);
gemSpawn.gemBeam.setHide(status);
if (expiredGems.exists(gemSpawn.gem)) {
var blackBeam = gemToBlackBeamMap.get(gemSpawn.gem);
blackBeam.setHide(status);
gemSpawn.gemBeam.setHide(true);
} else {
gemSpawn.gemBeam.setHide(status);
}
if (status)
this.activeGems.push(gemSpawn.gem);
else
@ -387,10 +404,15 @@ class HuntMode extends NullMode {
public function setActiveSpawnSphere(gems:Array<Int>, expireds:Array<Bool>) {
hideExisting();
expiredGems = [];
for (i in 0...gems.length) {
var gem = gems[i];
spawnGem(gem, expireds[i]);
if (expireds[i]) {
expiredGems.set(gemSpawnPoints[gem].gem, true);
}
}
activeGemSpawnGroup = gems;
}
function getGemWeight(gem:Gem) {