mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
more gem hunt
This commit is contained in:
parent
d155a8b709
commit
65c7026b59
6 changed files with 99 additions and 1 deletions
|
|
@ -410,9 +410,13 @@ class MarbleWorld extends Scheduler {
|
|||
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
||||
// else
|
||||
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
||||
var gameModeFiles = this.gameMode.getPreloadFiles();
|
||||
for (file in marblefiles) {
|
||||
worker.loadFile(file);
|
||||
}
|
||||
for (file in gameModeFiles) {
|
||||
worker.loadFile(file);
|
||||
}
|
||||
worker.addTask(fwd -> {
|
||||
var marble = new Marble();
|
||||
marble.controllable = true;
|
||||
|
|
|
|||
|
|
@ -629,6 +629,39 @@ class PlayGui {
|
|||
gemHUD.parent.render(scene2d, @:privateAccess gemHUD.parent.parent._flow);
|
||||
}
|
||||
|
||||
public function resizeGemHuntCounter(total:Int) {
|
||||
if (total >= 100) {
|
||||
// 3 digits
|
||||
gemCountNumbers[0].anim.visible = true;
|
||||
gemCountNumbers[1].anim.visible = true;
|
||||
gemCountNumbers[2].anim.visible = true;
|
||||
|
||||
gemCountNumbers[0].position.x = 20;
|
||||
gemCountNumbers[1].position.x = 38;
|
||||
gemCountNumbers[2].position.x = 56;
|
||||
} else if (total >= 10) {
|
||||
// 2 digits
|
||||
gemCountNumbers[0].anim.visible = false;
|
||||
gemCountNumbers[1].anim.visible = true;
|
||||
gemCountNumbers[2].anim.visible = true;
|
||||
|
||||
gemCountNumbers[0].position.x = 20;
|
||||
gemCountNumbers[1].position.x = 38;
|
||||
gemCountNumbers[2].position.x = 56;
|
||||
} else {
|
||||
// 1 digit
|
||||
gemCountNumbers[0].anim.visible = false;
|
||||
gemCountNumbers[1].anim.visible = false;
|
||||
gemCountNumbers[2].anim.visible = true;
|
||||
|
||||
gemCountNumbers[0].position.x = 20;
|
||||
gemCountNumbers[1].position.x = 38;
|
||||
gemCountNumbers[2].position.x = 56;
|
||||
}
|
||||
gemHUD.position.x = 74;
|
||||
gemHUD.parent.render(scene2d, @:privateAccess gemHUD.parent.parent._flow);
|
||||
}
|
||||
|
||||
public function formatGemCounter(collected:Int, total:Int) {
|
||||
if (total == 0) {
|
||||
for (number in gemCountNumbers) {
|
||||
|
|
@ -661,6 +694,26 @@ class PlayGui {
|
|||
gemCountNumbers[5].anim.currentFrame = totalOnes;
|
||||
}
|
||||
|
||||
public function formatGemHuntCounter(collected:Int) {
|
||||
gemCountNumbers[0].anim.visible = true;
|
||||
gemCountNumbers[1].anim.visible = true;
|
||||
gemCountNumbers[2].anim.visible = true;
|
||||
gemCountNumbers[3].anim.visible = false;
|
||||
gemCountNumbers[4].anim.visible = false;
|
||||
gemCountNumbers[5].anim.visible = false;
|
||||
gemHUD.bmp.visible = true;
|
||||
|
||||
var collectedHundredths = Math.floor(collected / 100);
|
||||
var collectedTenths = Math.floor(collected / 10) % 10;
|
||||
var collectedOnes = collected % 10;
|
||||
|
||||
gemCountNumbers[0].anim.currentFrame = collectedHundredths;
|
||||
gemCountNumbers[1].anim.currentFrame = collectedTenths;
|
||||
gemCountNumbers[2].anim.currentFrame = collectedOnes;
|
||||
|
||||
resizeGemHuntCounter(collected);
|
||||
}
|
||||
|
||||
// 0: default
|
||||
// 1: green
|
||||
// 2: red
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ interface GameMode {
|
|||
|
||||
public function onRestart():Void;
|
||||
public function onGemPickup(gem:Gem):Void;
|
||||
|
||||
public function getPreloadFiles():Array<String>;
|
||||
}
|
||||
|
||||
class GameModeFactory {
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@ class HuntMode extends NullMode {
|
|||
var gemBeams:Array<GemBeam> = [];
|
||||
var gemToBeamMap:Map<Gem, GemBeam> = [];
|
||||
|
||||
var points:Int = 0;
|
||||
|
||||
override function missionScan(mission:Mission) {
|
||||
function scanMission(simGroup:MissionElementSimGroup) {
|
||||
for (element in simGroup.elements) {
|
||||
|
|
@ -162,6 +164,8 @@ class HuntMode extends NullMode {
|
|||
|
||||
override function onRestart() {
|
||||
setupGems();
|
||||
points = 0;
|
||||
@:privateAccess level.playGui.formatGemHuntCounter(points);
|
||||
}
|
||||
|
||||
override function onGemPickup(gem:Gem) {
|
||||
|
|
@ -170,6 +174,16 @@ class HuntMode extends NullMode {
|
|||
var beam = gemToBeamMap.get(gem);
|
||||
beam.setHide(true);
|
||||
refillGemGroups();
|
||||
|
||||
switch (gem.gemColor) {
|
||||
case "red.gem":
|
||||
points += 1;
|
||||
case "yellow.gem":
|
||||
points += 2;
|
||||
case "blue.gem":
|
||||
points += 5;
|
||||
}
|
||||
@:privateAccess level.playGui.formatGemHuntCounter(points);
|
||||
}
|
||||
|
||||
function setupGems() {
|
||||
|
|
@ -186,6 +200,16 @@ class HuntMode extends NullMode {
|
|||
gemOctree.insert(new GemOctreeElem(vec, gemSpawn));
|
||||
}
|
||||
|
||||
if (activeGemSpawnGroup != null) {
|
||||
for (gemSpawn in activeGemSpawnGroup) {
|
||||
if (gemSpawn.gem != null) {
|
||||
gemSpawn.gem.pickedUp = true;
|
||||
gemSpawn.gem.setHide(true);
|
||||
gemSpawn.gemBeam.setHide(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
activeGems = [];
|
||||
refillGemGroups();
|
||||
}
|
||||
|
|
@ -276,4 +300,16 @@ class HuntMode extends NullMode {
|
|||
outSpawnPoint.load(pos);
|
||||
return results;
|
||||
}
|
||||
|
||||
override function getPreloadFiles():Array<String> {
|
||||
return [
|
||||
'data/shapes/items/yellow.gem.png',
|
||||
"data/skies/gemCubemapUp2.png",
|
||||
'data/shapes/items/blue.gem.png',
|
||||
"data/skies/gemCubemapUp4.png",
|
||||
'data/shapes/items/red.gem.png',
|
||||
"data/skies/gemCubemapUp.png",
|
||||
'sound/gem_collect.wav'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,4 +79,8 @@ class NullMode implements GameMode {
|
|||
this.level.displayAlert(string);
|
||||
@:privateAccess this.level.playGui.formatGemCounter(this.level.gemCount, this.level.totalGems);
|
||||
}
|
||||
|
||||
public function getPreloadFiles() {
|
||||
return ['data/sound/gem_all.wav'];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ class Gem extends DtsObject {
|
|||
super.init(level, () -> {
|
||||
var worker = new ResourceLoaderWorker(onFinish);
|
||||
worker.loadFile('sound/gem_collect.wav');
|
||||
worker.loadFile('sound/gem_all.wav');
|
||||
worker.run();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue