193 lines
5.9 KiB
C#
193 lines
5.9 KiB
C#
|
//HiGuy: We need to wait to execute this!
|
||
|
if (!$TMTimer::Execute) {
|
||
|
$TMTimer::Execute = true;
|
||
|
schedule(1000, 0, exec, $Con::File);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
//Determine mod
|
||
|
function getMod() {
|
||
|
if (isFile("marble/server/scripts/speedmeter.cs.dso"))
|
||
|
return "Advanced";
|
||
|
if (isFile("marble/client/ui/Awards/AllSapphires.png"))
|
||
|
return "Emerald";
|
||
|
if (isFile("marble/quickFix.cs"))
|
||
|
return "Future";
|
||
|
if (isFile("marble/quickFix.cs.dso"))
|
||
|
return "Future";
|
||
|
if (isFile("marble/client/ui/fullVersion.png"))
|
||
|
return "Gold Demo";
|
||
|
if (isFile("marble/client/ui/STBox.gui.dso"))
|
||
|
return "Opal";
|
||
|
if (isFile("marble/client/ui/play_rc_d.png"))
|
||
|
return "Platinum";
|
||
|
if (isFile("platinum/client/ui/play_rc_d.png"))
|
||
|
return "Platinum";
|
||
|
if (isFile("marble/client/ui/BBLoadingGui.gui.dso"))
|
||
|
return "Reloaded";
|
||
|
if (isFile("marble/data/particles/debris.png"))
|
||
|
return "Revived";
|
||
|
if (isFile("marble/client/ui/loading/loadinggui_origin.png"))
|
||
|
return "Space";
|
||
|
return "Gold";
|
||
|
}
|
||
|
|
||
|
//HiGuy: Jeff said I had to. :(
|
||
|
function getGameName() {
|
||
|
if ($platform $= "macos")
|
||
|
return "MarbleBlast";
|
||
|
return "Marble Blast";
|
||
|
// return "Murble Blust";
|
||
|
}
|
||
|
|
||
|
echo("Initializing TimeModifier Timer scripts in" SPC getGameName() SPC getMod());
|
||
|
|
||
|
//HiGuy: Called when we init this script
|
||
|
function initTMTimer() {
|
||
|
//HiGuy: Clean up
|
||
|
if (isObject(PG_TMTimer))
|
||
|
PG_TMTimer.delete();
|
||
|
|
||
|
//HiGuy: Create the whole Gui (unnecessary portions left out)
|
||
|
new GuiControl(PG_TMTimer) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
horizSizing = "center";
|
||
|
//HiGuy: Center it!
|
||
|
position = mfloor((getWord(PlayGui.getExtent(), 0) - 237) / 2) SPC "62";
|
||
|
extent = "237 46";
|
||
|
visible = "0";
|
||
|
|
||
|
new GuiBitmapCtrl(TMMin_One) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "74 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMMinSec_Colon) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "86 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/colon_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMSec_Ten) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "98 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMSec_One) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "115 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMMinSec_Point) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "125 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/point_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMSec_Tenth) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "137 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMSec_Hundredth) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "155 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
new GuiBitmapCtrl(TMMin_Ten) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
position = "56 3";
|
||
|
extent = "30 38";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/numbers/0_green.png";
|
||
|
};
|
||
|
};
|
||
|
//HiGuy: Add it to the PlayGui
|
||
|
PlayGui.add(PG_TMTimer);
|
||
|
|
||
|
//HiGuy: Pretty ourselves up
|
||
|
if (getMod() $= "Platinum") {
|
||
|
new GuiBitmapCtrl(TMtransparency) {
|
||
|
profile = "GuiDefaultProfile";
|
||
|
horizSizing = "center";
|
||
|
position = "48 -7";
|
||
|
extent = "141 55";
|
||
|
bitmap = $Con::Root @ "/client/ui/game/transparency";
|
||
|
};
|
||
|
PG_TMTimer.add(TMtransparency);
|
||
|
|
||
|
//HiGuy: Send to back (it's strange, I know)
|
||
|
PG_TMTimer.bringToFront(TMtransparency);
|
||
|
}
|
||
|
|
||
|
//HiGuy: Updating scripts
|
||
|
activatePackage(TMTimer);
|
||
|
}
|
||
|
|
||
|
//HiGuy: OVERRIDE TIME
|
||
|
package TMTimer {
|
||
|
//HiGuy: General, all-around good functions to call from
|
||
|
|
||
|
function clientCmdGameStart() {
|
||
|
Parent::clientCmdGameStart();
|
||
|
PlayGui.updateControls();
|
||
|
}
|
||
|
function setGameState(%a, %b) {
|
||
|
Parent::setGameState(%a, %b);
|
||
|
PlayGui.updateControls();
|
||
|
}
|
||
|
function GameConnection::incBonusTime(%this, %a) {
|
||
|
Parent::incBonusTime(%this, %a);
|
||
|
PlayGui.updateControls();
|
||
|
}
|
||
|
|
||
|
//HiGuy: Update our things!
|
||
|
function PlayGui::updateControls(%this) {
|
||
|
Parent::updateControls(%this);
|
||
|
|
||
|
//HiGuy: Copied directly from PlayGui.cs, just changed to BonusTime
|
||
|
%bt = %this.bonusTime;
|
||
|
PG_TMTimer.setVisible(%bt);
|
||
|
|
||
|
if (%bt) {
|
||
|
%hundredth = mFloor((%bt % 1000) / 10);
|
||
|
%totalSeconds = mFloor(%bt / 1000);
|
||
|
%seconds = %totalSeconds % 60;
|
||
|
%minutes = (%totalSeconds - %seconds) / 60;
|
||
|
|
||
|
%secondsOne = %seconds % 10;
|
||
|
%secondsTen = (%seconds - %secondsOne) / 10;
|
||
|
%minutesOne = %minutes % 10;
|
||
|
%minutesTen = (%minutes - %minutesOne) / 10;
|
||
|
%hundredthOne = %hundredth % 10;
|
||
|
%hundredthTen = (%hundredth - %hundredthOne) / 10;
|
||
|
|
||
|
// Update the controls
|
||
|
TMMin_Ten.setTimeNumber(%minutesTen);
|
||
|
TMMin_One.setTimeNumber(%minutesOne);
|
||
|
TMSec_Ten.setTimeNumber(%secondsTen);
|
||
|
TMSec_One.setTimeNumber(%secondsOne);
|
||
|
TMSec_Tenth.setTimeNumber(%hundredthTen);
|
||
|
TMSec_Hundredth.setTimeNumber(%hundredthOne);
|
||
|
|
||
|
TMMinSec_Colon.setTimeNumber("colon");
|
||
|
TMMinSec_Point.setTimeNumber("point");
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
//HiGuy: I know MBP has this, but I don't think MBG does
|
||
|
function GuiBitmapCtrl::setTimeNumber(%this, %number) {
|
||
|
if (getMod() $= "Platinum")
|
||
|
%this.setBitmap($Con::Root @ "/client/ui/game/numbers/" @ %number @ $PlayTimerPrefix @ ".png");
|
||
|
else
|
||
|
%this.setBitmap($Con::Root @ "/client/ui/game/numbers/" @ %number @ ".png");
|
||
|
}
|
||
|
|
||
|
//HiGuy: START HER UP
|
||
|
initTMTimer();
|