mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-27 13:11:42 +00:00
add support for marble attribute changing
This commit is contained in:
parent
1e18d0f844
commit
7a7756ca3a
3 changed files with 36 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
package src;
|
package src;
|
||||||
|
|
||||||
|
import mis.MisParser;
|
||||||
import triggers.Trigger;
|
import triggers.Trigger;
|
||||||
import net.Net;
|
import net.Net;
|
||||||
import gui.MarbleSelectGui;
|
import gui.MarbleSelectGui;
|
||||||
|
|
@ -580,6 +581,8 @@ class Marble extends GameObject {
|
||||||
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
||||||
worker.addTask(fwd -> level.addDtsObject(this.megaHelicopter, fwd));
|
worker.addTask(fwd -> level.addDtsObject(this.megaHelicopter, fwd));
|
||||||
worker.run();
|
worker.run();
|
||||||
|
|
||||||
|
loadMarbleAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildShadowVolume() {
|
function buildShadowVolume() {
|
||||||
|
|
@ -661,6 +664,36 @@ class Marble extends GameObject {
|
||||||
shadowVolume.setRotationQuat(q);
|
shadowVolume.setRotationQuat(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadMarbleAttributes() {
|
||||||
|
var attribs = this.level.mission.marbleAttributes;
|
||||||
|
if (attribs.exists("maxrollvelocity"))
|
||||||
|
this._maxRollVelocity = MisParser.parseNumber(attribs.get("maxrollvelocity"));
|
||||||
|
if (attribs.exists("angularacceleration"))
|
||||||
|
this._angularAcceleration = MisParser.parseNumber(attribs.get("angularacceleration"));
|
||||||
|
if (attribs.exists("jumpimpulse"))
|
||||||
|
this._jumpImpulse = MisParser.parseNumber(attribs.get("jumpimpulse"));
|
||||||
|
if (attribs.exists("kineticfriction"))
|
||||||
|
this._kineticFriction = MisParser.parseNumber(attribs.get("kineticfriction"));
|
||||||
|
if (attribs.exists("staticfriction"))
|
||||||
|
this._staticFriction = MisParser.parseNumber(attribs.get("staticfriction"));
|
||||||
|
if (attribs.exists("brakingacceleration"))
|
||||||
|
this._brakingAcceleration = MisParser.parseNumber(attribs.get("brakingacceleration"));
|
||||||
|
if (attribs.exists("gravity"))
|
||||||
|
this._gravity = MisParser.parseNumber(attribs.get("gravity"));
|
||||||
|
if (attribs.exists("airaccel"))
|
||||||
|
this._airAccel = MisParser.parseNumber(attribs.get("airaccel"));
|
||||||
|
if (attribs.exists("maxdotslide"))
|
||||||
|
this._maxDotSlide = MisParser.parseNumber(attribs.get("maxdotslide"));
|
||||||
|
if (attribs.exists("minbouncevel"))
|
||||||
|
this._minBounceVel = MisParser.parseNumber(attribs.get("minbouncevel"));
|
||||||
|
if (attribs.exists("minbouncespeed"))
|
||||||
|
this._minBounceSpeed = MisParser.parseNumber(attribs.get("minbouncespeed"));
|
||||||
|
if (attribs.exists("mintrailvel"))
|
||||||
|
this._minTrailVel = MisParser.parseNumber(attribs.get("mintrailvel"));
|
||||||
|
if (attribs.exists("bouncekineticfriction"))
|
||||||
|
this._bounceKineticFriction = MisParser.parseNumber(attribs.get("bouncekineticfriction"));
|
||||||
|
}
|
||||||
|
|
||||||
function findContacts(collisiomWorld:CollisionWorld, timeState:TimeState) {
|
function findContacts(collisiomWorld:CollisionWorld, timeState:TimeState) {
|
||||||
this.contacts = queuedContacts;
|
this.contacts = queuedContacts;
|
||||||
CollisionPool.clear();
|
CollisionPool.clear();
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ class Mission {
|
||||||
public var isCustom:Bool;
|
public var isCustom:Bool;
|
||||||
public var gameMode:String;
|
public var gameMode:String;
|
||||||
public var addedAt:Int64;
|
public var addedAt:Int64;
|
||||||
|
public var marbleAttributes:Map<String, String>;
|
||||||
|
|
||||||
var next:Mission;
|
var next:Mission;
|
||||||
|
|
||||||
|
|
@ -66,6 +67,7 @@ class Mission {
|
||||||
var misParser = new MisParser(misText);
|
var misParser = new MisParser(misText);
|
||||||
var contents = misParser.parse();
|
var contents = misParser.parse();
|
||||||
root = contents.root;
|
root = contents.root;
|
||||||
|
marbleAttributes = contents.marbleAttributes;
|
||||||
|
|
||||||
function scanMission(simGroup:MissionElementSimGroup) {
|
function scanMission(simGroup:MissionElementSimGroup) {
|
||||||
for (element in simGroup.elements) {
|
for (element in simGroup.elements) {
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ class MisParser {
|
||||||
startText = outsideText;
|
startText = outsideText;
|
||||||
|
|
||||||
while (marbleAttributesRegEx.match(startText)) {
|
while (marbleAttributesRegEx.match(startText)) {
|
||||||
marbleAttributes.set(marbleAttributesRegEx.matched(1), this.resolveExpression(marbleAttributesRegEx.matched(2)));
|
marbleAttributes.set(marbleAttributesRegEx.matched(1).toLowerCase(), this.resolveExpression(marbleAttributesRegEx.matched(2)));
|
||||||
startText = marbleAttributesRegEx.matchedRight();
|
startText = marbleAttributesRegEx.matchedRight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue