mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
fix gravity bug, fix spectator invisible btn bug, fix pause bug, fix prediction bug, fix competitive mode bug
This commit is contained in:
parent
f9a58d15a9
commit
3fcf2c8799
9 changed files with 45 additions and 12 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 = [];
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue