more gem hunt

This commit is contained in:
RandomityGuy 2023-07-02 01:48:50 +05:30
parent d155a8b709
commit 65c7026b59
6 changed files with 99 additions and 1 deletions

View file

@ -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;

View file

@ -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

View file

@ -15,6 +15,8 @@ interface GameMode {
public function onRestart():Void;
public function onGemPickup(gem:Gem):Void;
public function getPreloadFiles():Array<String>;
}
class GameModeFactory {

View file

@ -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'
];
}
}

View file

@ -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'];
}
}

View file

@ -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();
});
}