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");
|
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
||||||
// else
|
// else
|
||||||
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
||||||
|
var gameModeFiles = this.gameMode.getPreloadFiles();
|
||||||
for (file in marblefiles) {
|
for (file in marblefiles) {
|
||||||
worker.loadFile(file);
|
worker.loadFile(file);
|
||||||
}
|
}
|
||||||
|
for (file in gameModeFiles) {
|
||||||
|
worker.loadFile(file);
|
||||||
|
}
|
||||||
worker.addTask(fwd -> {
|
worker.addTask(fwd -> {
|
||||||
var marble = new Marble();
|
var marble = new Marble();
|
||||||
marble.controllable = true;
|
marble.controllable = true;
|
||||||
|
|
|
||||||
|
|
@ -629,6 +629,39 @@ class PlayGui {
|
||||||
gemHUD.parent.render(scene2d, @:privateAccess gemHUD.parent.parent._flow);
|
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) {
|
public function formatGemCounter(collected:Int, total:Int) {
|
||||||
if (total == 0) {
|
if (total == 0) {
|
||||||
for (number in gemCountNumbers) {
|
for (number in gemCountNumbers) {
|
||||||
|
|
@ -661,6 +694,26 @@ class PlayGui {
|
||||||
gemCountNumbers[5].anim.currentFrame = totalOnes;
|
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
|
// 0: default
|
||||||
// 1: green
|
// 1: green
|
||||||
// 2: red
|
// 2: red
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@ interface GameMode {
|
||||||
|
|
||||||
public function onRestart():Void;
|
public function onRestart():Void;
|
||||||
public function onGemPickup(gem:Gem):Void;
|
public function onGemPickup(gem:Gem):Void;
|
||||||
|
|
||||||
|
public function getPreloadFiles():Array<String>;
|
||||||
}
|
}
|
||||||
|
|
||||||
class GameModeFactory {
|
class GameModeFactory {
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,8 @@ class HuntMode extends NullMode {
|
||||||
var gemBeams:Array<GemBeam> = [];
|
var gemBeams:Array<GemBeam> = [];
|
||||||
var gemToBeamMap:Map<Gem, GemBeam> = [];
|
var gemToBeamMap:Map<Gem, GemBeam> = [];
|
||||||
|
|
||||||
|
var points:Int = 0;
|
||||||
|
|
||||||
override function missionScan(mission:Mission) {
|
override function missionScan(mission:Mission) {
|
||||||
function scanMission(simGroup:MissionElementSimGroup) {
|
function scanMission(simGroup:MissionElementSimGroup) {
|
||||||
for (element in simGroup.elements) {
|
for (element in simGroup.elements) {
|
||||||
|
|
@ -162,6 +164,8 @@ class HuntMode extends NullMode {
|
||||||
|
|
||||||
override function onRestart() {
|
override function onRestart() {
|
||||||
setupGems();
|
setupGems();
|
||||||
|
points = 0;
|
||||||
|
@:privateAccess level.playGui.formatGemHuntCounter(points);
|
||||||
}
|
}
|
||||||
|
|
||||||
override function onGemPickup(gem:Gem) {
|
override function onGemPickup(gem:Gem) {
|
||||||
|
|
@ -170,6 +174,16 @@ class HuntMode extends NullMode {
|
||||||
var beam = gemToBeamMap.get(gem);
|
var beam = gemToBeamMap.get(gem);
|
||||||
beam.setHide(true);
|
beam.setHide(true);
|
||||||
refillGemGroups();
|
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() {
|
function setupGems() {
|
||||||
|
|
@ -186,6 +200,16 @@ class HuntMode extends NullMode {
|
||||||
gemOctree.insert(new GemOctreeElem(vec, gemSpawn));
|
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 = [];
|
activeGems = [];
|
||||||
refillGemGroups();
|
refillGemGroups();
|
||||||
}
|
}
|
||||||
|
|
@ -276,4 +300,16 @@ class HuntMode extends NullMode {
|
||||||
outSpawnPoint.load(pos);
|
outSpawnPoint.load(pos);
|
||||||
return results;
|
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);
|
this.level.displayAlert(string);
|
||||||
@:privateAccess this.level.playGui.formatGemCounter(this.level.gemCount, this.level.totalGems);
|
@: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, () -> {
|
super.init(level, () -> {
|
||||||
var worker = new ResourceLoaderWorker(onFinish);
|
var worker = new ResourceLoaderWorker(onFinish);
|
||||||
worker.loadFile('sound/gem_collect.wav');
|
worker.loadFile('sound/gem_collect.wav');
|
||||||
worker.loadFile('sound/gem_all.wav');
|
|
||||||
worker.run();
|
worker.run();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue