mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
add mbu models
This commit is contained in:
parent
e39420e8b1
commit
8980869082
9 changed files with 193 additions and 4 deletions
|
|
@ -1,5 +1,8 @@
|
|||
package src;
|
||||
|
||||
import shapes.MegaMarble;
|
||||
import shapes.Blast;
|
||||
import shapes.Glass;
|
||||
import gui.OOBInsultGui;
|
||||
import shapes.Checkpoint;
|
||||
import triggers.CheckpointTrigger;
|
||||
|
|
@ -297,6 +300,8 @@ class MarbleWorld extends Scheduler {
|
|||
worker.loadFile(file);
|
||||
}
|
||||
|
||||
this.scene.camera.zFar = Math.max(2000, Std.parseFloat(this.skyElement.visibledistance));
|
||||
|
||||
this.sky = new Sky();
|
||||
|
||||
sky.dmlPath = ResourceLoader.getProperFilepath(skyElement.materiallist);
|
||||
|
|
@ -666,6 +671,8 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new Magnet();
|
||||
else if (dataBlockLowerCase == "antigravityitem")
|
||||
shape = new AntiGravity(cast element);
|
||||
else if (dataBlockLowerCase == "norespawnantigravityitem")
|
||||
shape = new AntiGravity(cast element, true);
|
||||
else if (dataBlockLowerCase == "landmine")
|
||||
shape = new LandMine();
|
||||
else if (dataBlockLowerCase == "nuke")
|
||||
|
|
@ -676,6 +683,10 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new SuperSpeed(cast element);
|
||||
else if (dataBlockLowerCase == "timetravelitem" || dataBlockLowerCase == "timepenaltyitem")
|
||||
shape = new TimeTravel(cast element);
|
||||
else if (dataBlockLowerCase == "blast")
|
||||
shape = new Blast(cast element);
|
||||
else if (dataBlockLowerCase == "megamarble")
|
||||
shape = new MegaMarble(cast element);
|
||||
else if (dataBlockLowerCase == "tornado")
|
||||
shape = new Tornado();
|
||||
else if (dataBlockLowerCase == "trapdoor")
|
||||
|
|
@ -684,6 +695,17 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new Oilslick();
|
||||
else if (dataBlockLowerCase == "arrow" || StringTools.startsWith(dataBlockLowerCase, "sign"))
|
||||
shape = new Sign(cast element);
|
||||
else if ([
|
||||
"glass_3shape",
|
||||
"glass_6shape",
|
||||
"glass_9shape",
|
||||
"glass_12shape",
|
||||
"glass_15shape",
|
||||
"glass_18shape"
|
||||
].contains(dataBlockLowerCase))
|
||||
shape = new Glass(cast element);
|
||||
else if (["clear", "cloudy", "dusk", "wintry"].contains(dataBlockLowerCase))
|
||||
shape = new shapes.Sky(dataBlockLowerCase);
|
||||
else {
|
||||
onFinish();
|
||||
return;
|
||||
|
|
@ -762,6 +784,8 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new Magnet();
|
||||
else if (dataBlockLowerCase == "antigravityitem")
|
||||
shape = new AntiGravity(cast element);
|
||||
else if (dataBlockLowerCase == "norespawnantigravityitem")
|
||||
shape = new AntiGravity(cast element, true);
|
||||
else if (dataBlockLowerCase == "landmine")
|
||||
shape = new LandMine();
|
||||
else if (dataBlockLowerCase == "nuke")
|
||||
|
|
@ -772,6 +796,10 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new SuperSpeed(cast element);
|
||||
else if (dataBlockLowerCase == "timetravelitem" || dataBlockLowerCase == "timepenaltyitem")
|
||||
shape = new TimeTravel(cast element);
|
||||
else if (dataBlockLowerCase == "blastitem")
|
||||
shape = new Blast(cast element);
|
||||
else if (dataBlockLowerCase == "megamarbleitem")
|
||||
shape = new MegaMarble(cast element);
|
||||
else if (dataBlockLowerCase == "tornado")
|
||||
shape = new Tornado();
|
||||
else if (dataBlockLowerCase == "trapdoor")
|
||||
|
|
@ -780,6 +808,17 @@ class MarbleWorld extends Scheduler {
|
|||
shape = new Oilslick();
|
||||
else if (dataBlockLowerCase == "arrow" || StringTools.startsWith(dataBlockLowerCase, "sign"))
|
||||
shape = new Sign(cast element);
|
||||
else if ([
|
||||
"glass_3shape",
|
||||
"glass_6shape",
|
||||
"glass_9shape",
|
||||
"glass_12shape",
|
||||
"glass_15shape",
|
||||
"glass_18shape"
|
||||
].contains(dataBlockLowerCase))
|
||||
shape = new Glass(cast element);
|
||||
else if (["clear", "cloudy", "dusk", "wintry"].contains(dataBlockLowerCase))
|
||||
shape = new shapes.Sky(dataBlockLowerCase);
|
||||
else {
|
||||
onFinish();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ class MissionList {
|
|||
|
||||
var goldMissions:Map<String, Array<Mission>> = [];
|
||||
var platinumMissions:Map<String, Array<Mission>> = [];
|
||||
var ultraMissions:Map<String, Array<Mission>> = [];
|
||||
|
||||
goldMissions.set("beginner", parseDifficulty("gold", "missions_mbg", "beginner"));
|
||||
goldMissions.set("intermediate", parseDifficulty("gold", "missions_mbg", "intermediate"));
|
||||
|
|
@ -67,6 +68,10 @@ class MissionList {
|
|||
platinumMissions.set("advanced", parseDifficulty("platinum", "missions_mbp", "advanced"));
|
||||
platinumMissions.set("expert", parseDifficulty("platinum", "missions_mbp", "expert"));
|
||||
|
||||
ultraMissions.set("beginner", parseDifficulty("ultra", "missions_mbu", "beginner"));
|
||||
ultraMissions.set("intermediate", parseDifficulty("ultra", "missions_mbu", "intermediate"));
|
||||
ultraMissions.set("advanced", parseDifficulty("ultra", "missions_mbu", "advanced"));
|
||||
|
||||
customMissions = parseDifficulty("custom", "missions", "custom");
|
||||
|
||||
@:privateAccess goldMissions["beginner"][goldMissions["beginner"].length - 1].next = goldMissions["intermediate"][0];
|
||||
|
|
@ -76,9 +81,13 @@ class MissionList {
|
|||
@:privateAccess platinumMissions["intermediate"][platinumMissions["intermediate"].length - 1].next = platinumMissions["advanced"][0];
|
||||
@:privateAccess platinumMissions["advanced"][platinumMissions["advanced"].length - 1].next = platinumMissions["expert"][0];
|
||||
@:privateAccess platinumMissions["expert"][platinumMissions["expert"].length - 1].next = platinumMissions["beginner"][0];
|
||||
@:privateAccess ultraMissions["beginner"][ultraMissions["beginner"].length - 1].next = ultraMissions["intermediate"][0];
|
||||
@:privateAccess ultraMissions["intermediate"][ultraMissions["intermediate"].length - 1].next = ultraMissions["advanced"][0];
|
||||
@:privateAccess ultraMissions["advanced"][ultraMissions["advanced"].length - 1].next = ultraMissions["beginner"][0];
|
||||
|
||||
missionList.set("gold", goldMissions);
|
||||
missionList.set("platinum", platinumMissions);
|
||||
missionList.set("ultra", ultraMissions);
|
||||
|
||||
// parseCLAList();
|
||||
|
||||
|
|
|
|||
|
|
@ -158,6 +158,14 @@ class ResourceLoader {
|
|||
toloadfiles.push(file);
|
||||
}
|
||||
}
|
||||
filestats = fileSystem.dir("missions_mbu");
|
||||
for (file in filestats) {
|
||||
if (file.isDirectory) {
|
||||
toloaddirs.push(file);
|
||||
} else {
|
||||
toloadfiles.push(file);
|
||||
}
|
||||
}
|
||||
while (toloaddirs.length > 0) {
|
||||
var nextdir = toloaddirs.pop();
|
||||
for (file in fileSystem.dir(nextdir.path.substring(2))) {
|
||||
|
|
|
|||
|
|
@ -412,7 +412,11 @@ class PlayMissionGui extends GuiImage {
|
|||
pmDifficultyUltraAdvanced.ratio = -1 / 16;
|
||||
pmDifficultyUltraAdvanced.setExtent(new Vector(120, 31));
|
||||
pmDifficultyUltraAdvanced.txtCtrl.text.text = " Advanced";
|
||||
pmDifficultyUltraAdvanced.disabled = true;
|
||||
pmDifficultyUltraAdvanced.pressedAction = (e) -> {
|
||||
currentList = MissionList.missionList["ultra"]["advanced"];
|
||||
currentCategory = "advanced";
|
||||
setCategoryFunc("ultra", "advanced");
|
||||
}
|
||||
pmDifficultyCtrl.addChild(pmDifficultyUltraAdvanced);
|
||||
|
||||
var pmDifficultyUltraBeginner = new GuiButtonText(loadButtonImages("data/ui/play/difficulty_highlight-120"), markerFelt24);
|
||||
|
|
@ -420,7 +424,11 @@ class PlayMissionGui extends GuiImage {
|
|||
pmDifficultyUltraBeginner.ratio = -1 / 16;
|
||||
pmDifficultyUltraBeginner.setExtent(new Vector(120, 31));
|
||||
pmDifficultyUltraBeginner.txtCtrl.text.text = " Beginner";
|
||||
pmDifficultyUltraBeginner.disabled = true;
|
||||
pmDifficultyUltraBeginner.pressedAction = (e) -> {
|
||||
currentList = MissionList.missionList["ultra"]["beginner"];
|
||||
currentCategory = "beginner";
|
||||
setCategoryFunc("ultra", "beginner");
|
||||
}
|
||||
pmDifficultyCtrl.addChild(pmDifficultyUltraBeginner);
|
||||
|
||||
var pmDifficultyUltraIntermediate = new GuiButtonText(loadButtonImages("data/ui/play/difficulty_highlight-120"), markerFelt24);
|
||||
|
|
@ -428,7 +436,11 @@ class PlayMissionGui extends GuiImage {
|
|||
pmDifficultyUltraIntermediate.ratio = -1 / 16;
|
||||
pmDifficultyUltraIntermediate.setExtent(new Vector(120, 31));
|
||||
pmDifficultyUltraIntermediate.txtCtrl.text.text = " Intermediate";
|
||||
pmDifficultyUltraIntermediate.disabled = true;
|
||||
pmDifficultyUltraIntermediate.pressedAction = (e) -> {
|
||||
currentList = MissionList.missionList["ultra"]["intermediate"];
|
||||
currentCategory = "intermediate";
|
||||
setCategoryFunc("ultra", "intermediate");
|
||||
}
|
||||
pmDifficultyCtrl.addChild(pmDifficultyUltraIntermediate);
|
||||
|
||||
var pmDifficultyGoldAdvanced = new GuiButtonText(loadButtonImages("data/ui/play/difficulty_highlight-120"), markerFelt24);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import src.DtsObject;
|
|||
import src.MarbleWorld;
|
||||
|
||||
class AntiGravity extends PowerUp {
|
||||
public function new(element:MissionElementItem) {
|
||||
public function new(element:MissionElementItem, norespawn:Bool = false) {
|
||||
super(element);
|
||||
this.dtsPath = "data/shapes/items/antigravity.dts";
|
||||
this.isCollideable = false;
|
||||
|
|
@ -16,6 +16,8 @@ class AntiGravity extends PowerUp {
|
|||
this.identifier = "AntiGravity";
|
||||
this.pickUpName = "Gravity Defier";
|
||||
this.autoUse = true;
|
||||
if (norespawn)
|
||||
this.cooldownDuration = Math.NEGATIVE_INFINITY;
|
||||
}
|
||||
|
||||
public function pickUp():Bool {
|
||||
|
|
|
|||
37
src/shapes/Blast.hx
Normal file
37
src/shapes/Blast.hx
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package shapes;
|
||||
|
||||
import src.MarbleWorld;
|
||||
import src.ResourceLoader;
|
||||
import src.TimeState;
|
||||
import mis.MissionElement.MissionElementItem;
|
||||
|
||||
class Blast extends PowerUp {
|
||||
public function new(element:MissionElementItem) {
|
||||
super(element);
|
||||
this.dtsPath = "data/shapes/items/blast.dts";
|
||||
this.isCollideable = false;
|
||||
this.isTSStatic = false;
|
||||
this.showSequences = true;
|
||||
this.identifier = "Blast";
|
||||
this.pickUpName = "Blast PowerUp";
|
||||
this.autoUse = true;
|
||||
}
|
||||
|
||||
public override function init(level:MarbleWorld, onFinish:Void->Void) {
|
||||
super.init(level, () -> {
|
||||
ResourceLoader.load("sound/publastvoice.wav").entry.load(() -> {
|
||||
this.pickupSound = ResourceLoader.getResource("data/sound/publastvoice.wav", ResourceLoader.getAudio, this.soundResources);
|
||||
onFinish();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public function pickUp():Bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function use(timeState:TimeState) {
|
||||
var marble = this.level.marble;
|
||||
this.level.deselectPowerUp();
|
||||
}
|
||||
}
|
||||
31
src/shapes/Glass.hx
Normal file
31
src/shapes/Glass.hx
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
package shapes;
|
||||
|
||||
import mis.MissionElement.MissionElementStaticShape;
|
||||
import src.DtsObject;
|
||||
|
||||
class Glass extends DtsObject {
|
||||
public function new(element:MissionElementStaticShape) {
|
||||
super();
|
||||
|
||||
var datablockLowercase = element.datablock.toLowerCase();
|
||||
switch (datablockLowercase) {
|
||||
case "glass_3shape":
|
||||
this.dtsPath = "data/shapes/glass/3x3.dts";
|
||||
case "glass_6shape":
|
||||
this.dtsPath = "data/shapes/glass/6x3.dts";
|
||||
case "glass_9shape":
|
||||
this.dtsPath = "data/shapes/glass/9x3.dts";
|
||||
case "glass_12shape":
|
||||
this.dtsPath = "data/shapes/glass/12x3.dts";
|
||||
case "glass_15shape":
|
||||
this.dtsPath = "data/shapes/glass/15x3.dts";
|
||||
case "glass_18shape":
|
||||
this.dtsPath = "data/shapes/glass/18x3.dts";
|
||||
}
|
||||
|
||||
this.isCollideable = true;
|
||||
this.useInstancing = true;
|
||||
|
||||
this.identifier = datablockLowercase;
|
||||
}
|
||||
}
|
||||
35
src/shapes/MegaMarble.hx
Normal file
35
src/shapes/MegaMarble.hx
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
package shapes;
|
||||
|
||||
import src.MarbleWorld;
|
||||
import src.ResourceLoader;
|
||||
import src.TimeState;
|
||||
import mis.MissionElement.MissionElementItem;
|
||||
|
||||
class MegaMarble extends PowerUp {
|
||||
public function new(element:MissionElementItem) {
|
||||
super(element);
|
||||
this.dtsPath = "data/shapes/items/megamarble.dts";
|
||||
this.isCollideable = false;
|
||||
this.isTSStatic = false;
|
||||
this.showSequences = true;
|
||||
this.identifier = "MegaMarble";
|
||||
this.pickUpName = "Mega Marble PowerUp";
|
||||
}
|
||||
|
||||
public override function init(level:MarbleWorld, onFinish:Void->Void) {
|
||||
super.init(level, () -> {
|
||||
ResourceLoader.load("sound/pumegamarblevoice.wav").entry.load(() -> {
|
||||
this.pickupSound = ResourceLoader.getResource("data/sound/pumegamarblevoice.wav", ResourceLoader.getAudio, this.soundResources);
|
||||
onFinish();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public function pickUp():Bool {
|
||||
return this.level.pickUpPowerUp(this);
|
||||
}
|
||||
|
||||
public function use(timeState:TimeState) {
|
||||
this.level.deselectPowerUp();
|
||||
}
|
||||
}
|
||||
16
src/shapes/Sky.hx
Normal file
16
src/shapes/Sky.hx
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
package shapes;
|
||||
|
||||
import src.DtsObject;
|
||||
|
||||
class Sky extends DtsObject {
|
||||
public function new(type:String) {
|
||||
super();
|
||||
|
||||
this.dtsPath = 'data/shapes/skies/${type}/${type}.dts';
|
||||
|
||||
this.isCollideable = false;
|
||||
this.useInstancing = true;
|
||||
|
||||
this.identifier = type + "Sky";
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue