mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
add support for marble attribute changing
This commit is contained in:
parent
53b7525920
commit
ce7ed5f679
3 changed files with 36 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
package src;
|
package src;
|
||||||
|
|
||||||
|
import mis.MisParser;
|
||||||
import gui.MarblePickerGui;
|
import gui.MarblePickerGui;
|
||||||
import collision.CollisionPool;
|
import collision.CollisionPool;
|
||||||
import net.NetPacket.MarbleNetFlags;
|
import net.NetPacket.MarbleNetFlags;
|
||||||
|
|
@ -564,6 +565,8 @@ class Marble extends GameObject {
|
||||||
this.helicopter.z = 1e8;
|
this.helicopter.z = 1e8;
|
||||||
this.helicopter.scale(0.3 / 0.2);
|
this.helicopter.scale(0.3 / 0.2);
|
||||||
|
|
||||||
|
loadMarbleAttributes();
|
||||||
|
|
||||||
if (this.controllable || this.connection != null) {
|
if (this.controllable || this.connection != null) {
|
||||||
var worker = new ResourceLoaderWorker(onFinish);
|
var worker = new ResourceLoaderWorker(onFinish);
|
||||||
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
||||||
|
|
@ -654,6 +657,36 @@ class Marble extends GameObject {
|
||||||
shadowVolume.material.removePass(shadowVolume.material.mainPass);
|
shadowVolume.material.removePass(shadowVolume.material.mainPass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(collisionWorld:CollisionWorld, timeState:TimeState) {
|
function findContacts(collisionWorld:CollisionWorld, timeState:TimeState) {
|
||||||
this.contacts = queuedContacts;
|
this.contacts = queuedContacts;
|
||||||
CollisionPool.clear();
|
CollisionPool.clear();
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ class Mission {
|
||||||
public var game:String;
|
public var game:String;
|
||||||
public var hasEgg:Bool;
|
public var hasEgg:Bool;
|
||||||
public var isCustom:Bool;
|
public var isCustom:Bool;
|
||||||
|
public var marbleAttributes:Map<String, String>;
|
||||||
|
|
||||||
var next:Mission;
|
var next:Mission;
|
||||||
|
|
||||||
|
|
@ -64,6 +65,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) {
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,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