KevinBlast/marble/client/scripts/tttimer.cs

193 lines
5.9 KiB
C#
Raw Normal View History

2024-03-10 20:27:00 -04:00
//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();