mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
add MP achievements
This commit is contained in:
parent
87381ef8c3
commit
8767f37a9f
4 changed files with 121 additions and 3 deletions
|
|
@ -106,6 +106,7 @@ typedef PlayStatistics = {
|
||||||
var oobs:Int;
|
var oobs:Int;
|
||||||
var respawns:Int;
|
var respawns:Int;
|
||||||
var totalTime:Float;
|
var totalTime:Float;
|
||||||
|
var totalMPScore:Int;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Settings {
|
class Settings {
|
||||||
|
|
@ -194,6 +195,7 @@ class Settings {
|
||||||
oobs: 0,
|
oobs: 0,
|
||||||
respawns: 0,
|
respawns: 0,
|
||||||
totalTime: 0,
|
totalTime: 0,
|
||||||
|
totalMPScore: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
public static var levelStatistics:Map<String, PlayStatistics> = [];
|
public static var levelStatistics:Map<String, PlayStatistics> = [];
|
||||||
|
|
@ -437,6 +439,10 @@ class Settings {
|
||||||
optionsSettings.rewindTimescale = 1;
|
optionsSettings.rewindTimescale = 1;
|
||||||
if (json.stats != null) {
|
if (json.stats != null) {
|
||||||
playStatistics = json.stats;
|
playStatistics = json.stats;
|
||||||
|
#if js
|
||||||
|
if (playStatistics.totalMPScore == null)
|
||||||
|
playStatistics.totalMPScore = 0;
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
achievementProgression = json.achievementProgression;
|
achievementProgression = json.achievementProgression;
|
||||||
if (json.levelStatistics != null) {
|
if (json.levelStatistics != null) {
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,13 @@ class AchievementsGui extends GuiImage {
|
||||||
"<img src='locked'></img>Marble-fu Master",
|
"<img src='locked'></img>Marble-fu Master",
|
||||||
"<img src='locked'></img>Marble-fu Transcendent",
|
"<img src='locked'></img>Marble-fu Transcendent",
|
||||||
"<img src='locked'></img>Egg Seeker",
|
"<img src='locked'></img>Egg Seeker",
|
||||||
"<img src='locked'></img>Egg Basket"
|
"<img src='locked'></img>Egg Basket",
|
||||||
|
"<img src='locked'></img>First Place",
|
||||||
|
"<img src='locked'></img>Gem Collector",
|
||||||
|
"<img src='locked'></img>Veteran Battler",
|
||||||
|
"<img src='locked'></img>Blue Gem Hunt",
|
||||||
|
"<img src='locked'></img>Map Pack Dominator",
|
||||||
|
"<img src='locked'></img>Master of the Spires",
|
||||||
];
|
];
|
||||||
if (Settings.achievementProgression & 1 == 1)
|
if (Settings.achievementProgression & 1 == 1)
|
||||||
achNameDisplays[0] = "<img src='unlocked'></img>Timely Marble";
|
achNameDisplays[0] = "<img src='unlocked'></img>Timely Marble";
|
||||||
|
|
@ -92,6 +98,18 @@ class AchievementsGui extends GuiImage {
|
||||||
achNameDisplays[7] = "<img src='unlocked'></img>Egg Seeker";
|
achNameDisplays[7] = "<img src='unlocked'></img>Egg Seeker";
|
||||||
if (Settings.achievementProgression & 256 == 256)
|
if (Settings.achievementProgression & 256 == 256)
|
||||||
achNameDisplays[8] = "<img src='unlocked'></img>Egg Basket";
|
achNameDisplays[8] = "<img src='unlocked'></img>Egg Basket";
|
||||||
|
if (Settings.achievementProgression & 512 == 512)
|
||||||
|
achNameDisplays[9] = "<img src='unlocked'></img>First Place";
|
||||||
|
if (Settings.achievementProgression & 1024 == 1024)
|
||||||
|
achNameDisplays[10] = "<img src='unlocked'></img>Gem Collector";
|
||||||
|
if (Settings.achievementProgression & 2048 == 2048)
|
||||||
|
achNameDisplays[11] = "<img src='unlocked'></img>Veteran Battler";
|
||||||
|
if (Settings.achievementProgression & 4096 == 4096)
|
||||||
|
achNameDisplays[12] = "<img src='unlocked'></img>Blue Gem Hunt";
|
||||||
|
if (Settings.achievementProgression & 8192 == 8192)
|
||||||
|
achNameDisplays[13] = "<img src='unlocked'></img>Map Pack Dominator";
|
||||||
|
if (Settings.achievementProgression & 16384 == 16384)
|
||||||
|
achNameDisplays[14] = "<img src='unlocked'></img>Master of the Spires";
|
||||||
|
|
||||||
var achievementsList = new GuiMLTextListCtrl(arial14, achNameDisplays, imgLoader);
|
var achievementsList = new GuiMLTextListCtrl(arial14, achNameDisplays, imgLoader);
|
||||||
|
|
||||||
|
|
@ -149,14 +167,21 @@ class AchievementsGui extends GuiImage {
|
||||||
case 9: desc = "Get first place in a multiplayer match.";
|
case 9: desc = "Get first place in a multiplayer match.";
|
||||||
case 10: desc = "Get 75 points in a multiplayer match.";
|
case 10: desc = "Get 75 points in a multiplayer match.";
|
||||||
case 11: desc = "Collect 2,000 total points in multiplayer.";
|
case 11: desc = "Collect 2,000 total points in multiplayer.";
|
||||||
case 12: desc = "Complete all Bonus levels.";
|
case 12: desc = "Collect a blue gem in a Marble It Up! multiplayer match.";
|
||||||
case 13: desc = "Finish all Bonus levels under par time.";
|
case 13: desc = "Get 40 gems in any 3 of the Playground, Bowl, Concentric, Vortex Effect, Blast Club (Marble Fu Pack).";
|
||||||
|
case 14: desc = "Collect 50 gems in Spires (Agoraphobia pack).";
|
||||||
}
|
}
|
||||||
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg(desc));
|
MarbleGame.canvas.pushDialog(new MessageBoxOkDlg(desc));
|
||||||
};
|
};
|
||||||
bottomBar.addChild(nextButton);
|
bottomBar.addChild(nextButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function queueMPAchievement(mpAchFlag:Int) {
|
||||||
|
mpAchs |= mpAchFlag;
|
||||||
|
}
|
||||||
|
|
||||||
|
static var mpAchs:Int = 0;
|
||||||
|
|
||||||
public static function check() {
|
public static function check() {
|
||||||
// Now do the actual achievement check logic
|
// Now do the actual achievement check logic
|
||||||
var completions:Map<String, Array<{
|
var completions:Map<String, Array<{
|
||||||
|
|
@ -286,6 +311,56 @@ class AchievementsGui extends GuiImage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// First Place
|
||||||
|
if (Settings.achievementProgression & 512 != 512) {
|
||||||
|
if (mpAchs & 512 == 512) {
|
||||||
|
Settings.achievementProgression |= 512;
|
||||||
|
notifies |= 512;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gem Collector
|
||||||
|
if (Settings.achievementProgression & 1024 != 1024) {
|
||||||
|
if (mpAchs & 1024 == 1024) {
|
||||||
|
Settings.achievementProgression |= 1024;
|
||||||
|
notifies |= 1024;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Veteran Battler
|
||||||
|
if (Settings.achievementProgression & 2048 != 2048) {
|
||||||
|
if (mpAchs & 2048 == 2048) {
|
||||||
|
Settings.achievementProgression |= 2048;
|
||||||
|
notifies |= 2048;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blue Gem Hunt
|
||||||
|
if (Settings.achievementProgression & 4096 != 4096) {
|
||||||
|
if (mpAchs & 4096 == 4096) {
|
||||||
|
Settings.achievementProgression |= 4096;
|
||||||
|
notifies |= 4096;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Map Pack Dominator
|
||||||
|
if (Settings.achievementProgression & 8192 != 8192) {
|
||||||
|
if (mpAchs & 8192 == 8192) {
|
||||||
|
Settings.achievementProgression |= 8192;
|
||||||
|
notifies |= 8192;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Master of the Spires
|
||||||
|
if (Settings.achievementProgression & 16384 != 16384) {
|
||||||
|
if (mpAchs & 16384 == 16384) {
|
||||||
|
Settings.achievementProgression |= 16384;
|
||||||
|
notifies |= 16384;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mpAchs = 0;
|
||||||
|
|
||||||
var showdlgs = [];
|
var showdlgs = [];
|
||||||
for (i in 0...9) {
|
for (i in 0...9) {
|
||||||
if (notifies & (1 << i) > 0) {
|
if (notifies & (1 << i) > 0) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package gui;
|
package gui;
|
||||||
|
|
||||||
|
import net.Net;
|
||||||
import h3d.Matrix;
|
import h3d.Matrix;
|
||||||
import src.ProfilerUI;
|
import src.ProfilerUI;
|
||||||
import hxd.App;
|
import hxd.App;
|
||||||
|
|
@ -709,6 +710,33 @@ class PlayGui {
|
||||||
MarbleGame.instance.world.displayAlert('${p1.name} won with 1 point!');
|
MarbleGame.instance.world.displayAlert('${p1.name} won with 1 point!');
|
||||||
else
|
else
|
||||||
MarbleGame.instance.world.displayAlert('${p1.name} won with ${p1.score} points!');
|
MarbleGame.instance.world.displayAlert('${p1.name} won with ${p1.score} points!');
|
||||||
|
|
||||||
|
if (p1.id == Net.clientId) { // This us
|
||||||
|
AchievementsGui.queueMPAchievement(512);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var ourScore = playerList.filter(x -> x.id == Net.clientId);
|
||||||
|
if (ourScore.length != 0) {
|
||||||
|
var ourScoreReal = ourScore[0].score;
|
||||||
|
if (ourScoreReal >= 75) {
|
||||||
|
AchievementsGui.queueMPAchievement(1024);
|
||||||
|
}
|
||||||
|
var ourLevel = MarbleGame.instance.world.mission;
|
||||||
|
if (ourScoreReal >= 40) {
|
||||||
|
if (ourLevel.path.indexOf("playground.mis") != -1
|
||||||
|
|| ourLevel.path.indexOf("bowl.mis") != -1
|
||||||
|
|| ourLevel.path.indexOf("concentric.mis") != -1
|
||||||
|
|| ourLevel.path.indexOf("vortexeffect.mis") != -1
|
||||||
|
|| ourLevel.path.indexOf("blastclub.mis") != -1) {
|
||||||
|
AchievementsGui.queueMPAchievement(8192);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ourScoreReal >= 50 && ourLevel.path.indexOf("spires.mis") != -1) {
|
||||||
|
AchievementsGui.queueMPAchievement(16384);
|
||||||
|
}
|
||||||
|
if (Settings.playStatistics.totalMPScore >= 2000)
|
||||||
|
AchievementsGui.queueMPAchievement(2048);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -739,6 +767,13 @@ class PlayGui {
|
||||||
if (f.length != 0)
|
if (f.length != 0)
|
||||||
f[0].score += score;
|
f[0].score += score;
|
||||||
|
|
||||||
|
if (id == Net.clientId) {
|
||||||
|
Settings.playStatistics.totalMPScore += score;
|
||||||
|
if (score == 5 && MarbleGame.instance.world.mission.title == "Marble It Up!") {
|
||||||
|
AchievementsGui.queueMPAchievement(4096);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
redrawPlayerList();
|
redrawPlayerList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -367,6 +367,8 @@ class HuntMode extends NullMode {
|
||||||
packet.serialize(os);
|
packet.serialize(os);
|
||||||
Net.sendPacketToIngame(os);
|
Net.sendPacketToIngame(os);
|
||||||
|
|
||||||
|
Settings.playStatistics.totalMPScore += incr;
|
||||||
|
|
||||||
@:privateAccess level.playGui.incrementPlayerScore(packet.clientId, packet.scoreIncr);
|
@:privateAccess level.playGui.incrementPlayerScore(packet.clientId, packet.scoreIncr);
|
||||||
}
|
}
|
||||||
if (this.level.isMultiplayer && Net.isClient) {
|
if (this.level.isMultiplayer && Net.isClient) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue