mirror of
https://github.com/Ragora/TribesReplay.git
synced 2026-01-19 17:44:45 +00:00
- (bug fix) Fixed an authentication hole that allowed arbitrary IP connections to a LAN server. The policy now is: LAN servers will disallow any connections from IP addresses that do not match the Class B network address of the server (or match one of them, in a multihomed server). So if your server's address is 12.13.14.15, clients from 12.13.*.* will be considered, but clients from 12.12.*.* will be immediately rejected. In addition, a LAN server will only allow 4 unique Class C ids at any one time. This should be sufficiently lenient for even the largest LAN parties, but should eliminate the auth hole. - (bug fix) Fixed a server crash on mission change when the last human player leaves the game in mid cycle. - (bug fix) Fixed a bug that could reset your Shape Detail setting to max - (bug fix) Client join message name correction - (bug fix) All known in-game Chat HUD bugs are fixed (partial lines from paging up/down and resize issues, etc.). - (bug fix) Infinite missile lock-on sound bug is fixed. Dead. Finito. No more. Pushing up the daisies. - (bug fix) Stitched up a hole associated with one of the base shapes. Small fry compared to the memory leaks. - (bug fix) Found a particle crash issue and plugged it up good. - (bug fix) Fixed a shield impact internal compile error that was crunching frame rate. - (bug fix) Turns out we tweaked it so inventory stations were counting as turrets for turret placement purposes. D'oh. Fixed. - (bug fix) A rare crash that occurred with the Radeon VE card has been resolved. - (bug fix) Fixed a crash that could occur when a flare grenade was released when inside a force field. - (bug fix) Deployable turrets (spider and spike) and Deployable inv stations now do damage in their explosion when they are destroyed. - (optimization) The following missions were refined in order to optimize framerate: Alcatraz Caldera Flashpoint Gauntlet IceBound Insalubria Overreach Respite Sirocco - (optimization) Adjusted the LOD of the logo projectors found in CnH missions. - (optimization) Changed object shield shapes from the form-fitting forcefields into a less poly-intensive dome effect. Also gave shields a lower memory profile. - (optimization) Changed the way the clouds' planes are clipped. Sky's the limit, right? - (optimization) Missile sound script calls moved from script into code for faster processing. - (memory leak) Fixed a large memory leak. This plus the other leaks mentioned here should finally put the nail in the coffin on the "degrading server performance" issue. - (memory leak) Fixed a memory leak associated with the pretty lightning effects on maps like Casern Cavite.memory leaks: - (memory leak) Fixed a memory leak in our fancy text list control and the gui text list. - (memory leak) Fixed a memory leak involving memory use and resource allocation. - (improvement) Targeting laser prediction should be better now. - (improvement) You can specify a server's IP address manually at the join screen - (improvement) You can now specify "-password <pw>" on the command line to join a server that requires a password. - (improvement) Heavy armors are tougher against snipers. You now require four headshots or five body shots to kill a Juggernaut with a laser rifle. - (improvement) Footspeed of all armors increased slightly, as well as a minor boost to jetpack performance. Some improvements made to air resistance for mediums and heavy armors (very subtle). - (improvement) The jetpack effect was reverted back to the old effect (by popular demand). - (improvement) A Chat HUD message has been added that is displayed whenever you try to deploy a mine, but your team's maximum number of mines has already been deployed. Previously, the mine would just blow up and not explain why it detonated. Now, it still blows up, but tells you why it happened. - (improvement) Polished up the health meter on the HUD so when you're still alive, it displays a visible sliver of positive health. - (improvement) Made framerate and gameplay changes to Caldera. The attackers' base has been moved farther from the defenders, and the switch has been put in one of the upper chambers, while the stations are located separately from the generators. The changes should fix a serious defensive advantage. - (improvement) After you buy a vehicle, you now fade into the driver's seat if your armor and pack make you an eligible pilot/driver. - (improvement) Added a "rogue" mine message so that if you are killed by a mine laid by someone who has left the building, the death message is more accurate. - (improvement) Increased speed of belly turret projectiles so that it is more effective in general (especially for air defense). - (improvement) Modified name tags of vehicles when you place your reticle over them. Names are now more consistent and descriptive. - (improvement) Missile and AA turrets now have a longer maximum range (you'll still need to deploy sensors to get this added range, but they can fire farther if you do). They also react more quickly to available targets. - (community) The "compose email", "forum post", and "news submission" windows are now resizable and movable.
1759 lines
58 KiB
C#
1759 lines
58 KiB
C#
// function createObserverMoveMap()
|
|
// {
|
|
// if ( isObject( flyingCameraMove ) )
|
|
// flyingCameraMove.delete();
|
|
//
|
|
// new ActionMap( flyingCameraMove );
|
|
// flyingCameraMove.bind( keyboard, s, moveleft );
|
|
// flyingCameraMove.bind( keyboard, f, moveright );
|
|
// flyingCameraMove.bind( keyboard, e, moveforward );
|
|
// flyingCameraMove.bind( keyboard, d, movebackward );
|
|
// flyingCameraMove.bind( keyboard, t, moveup );
|
|
// flyingCameraMove.bind( keyboard, b, movedown );
|
|
//
|
|
// // allow hud activation
|
|
// flyingCameraMove.copyBind( moveMap, toggleScoreScreen );
|
|
// flyingCameraMove.copyBind( moveMap, toggleCommanderMap );
|
|
// flyingCameraMove.copyBind( moveMap, TeamMessageHud );
|
|
// flyingCameraMove.copyBind( moveMap, toggleMessageHud );
|
|
// flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
|
|
// flyingCameraMove.copyBind( moveMap, voteYes );
|
|
// flyingCameraMove.copyBind( moveMap, voteNo );
|
|
// flyingCameraMove.copyBind( moveMap, activateChatMenuHud );
|
|
//
|
|
// // Bind the command assignment/response keys as well:
|
|
// flyingCameraMove.copyBind( moveMap, toggleTaskListDlg );
|
|
// flyingCameraMove.copyBind( moveMap, fnAcceptTask );
|
|
// flyingCameraMove.copyBind( moveMap, fnDeclineTask );
|
|
// flyingCameraMove.copyBind( moveMap, fnTaskCompleted );
|
|
// flyingCameraMove.copyBind( moveMap, fnResetTaskList );
|
|
//
|
|
// // misc
|
|
// flyingCameraMove.copyBind( moveMap, voiceCapture );
|
|
//
|
|
// // inventory binds
|
|
// flyingCameraMove.copyBind( moveMap, toggleInventoryHud );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite1 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite2 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite3 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite4 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite5 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite6 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite7 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite8 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite9 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite10 );
|
|
//
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite11 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite12 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite13 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite14 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite15 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite16 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite17 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite18 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite19 );
|
|
// flyingCameraMove.copyBind( moveMap, selectFavorite20 );
|
|
//
|
|
// flyingCameraMove.copyBind( moveMap, quickPackEnergyPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackRepairPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackShieldPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackCloakPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackJammerPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackAmmoPack );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackSatchelCharge );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackDeployableStation );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackIndoorTurret );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackOutdoorTurret );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackMotionSensor );
|
|
// flyingCameraMove.copyBind( moveMap, quickPackPulse );
|
|
//
|
|
// //preserve the fire, jump, and jet buttons
|
|
// flyingCameraMove.copyBind( moveMap, mouseFire );
|
|
// flyingCameraMove.copyBind( moveMap, mouseJet );
|
|
// flyingCameraMove.copyBind( moveMap, jump );
|
|
// flyingCameraMove.copyBind( moveMap, yaw );
|
|
// flyingCameraMove.copyBind( moveMap, pitch );
|
|
//
|
|
// flyingCameraMove.bindCmd( keyboard, escape, "", "escapeFromGame();" );
|
|
// }
|
|
// createObserverMoveMap();
|
|
|
|
//--------------------------------------------------------------------------
|
|
function GameConnection::sensorPing(%this, %ping)
|
|
{
|
|
sensorHud.ping = %ping;
|
|
sensorHud.update();
|
|
}
|
|
|
|
function GameConnection::sensorJammed(%this, %jam)
|
|
{
|
|
sensorHud.jam = %jam;
|
|
sensorHud.update();
|
|
}
|
|
|
|
function SensorHud::update(%this)
|
|
{
|
|
// dont change anything if lag is up
|
|
if(lagHudIndicator.isVisible())
|
|
{
|
|
%this.setVisible(false);
|
|
sensorHudBack.setVisible(false);
|
|
return;
|
|
}
|
|
|
|
if(!%this.ping && !%this.jam)
|
|
{
|
|
%this.setVisible(false);
|
|
sensorHudBack.setVisible(true);
|
|
return;
|
|
}
|
|
|
|
%this.setVisible(true);
|
|
sensorHudBack.setVisible(false);
|
|
|
|
if(%this.jam)
|
|
%this.color = %this.jamColor;
|
|
else
|
|
%this.color = %this.pingColor;
|
|
}
|
|
|
|
// - anything which should be reset on new server/mission
|
|
function clientCmdResetHud()
|
|
{
|
|
deploySensor.setVisible(false);
|
|
controlObjectText.setVisible(false);
|
|
lagHudIndicator.setVisible(false);
|
|
|
|
sensorHud.jam = false;
|
|
sensorHud.ping = false;
|
|
sensorHud.update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
function GameConnection::syncHudClock(%client, %time)
|
|
{
|
|
commandToClient(%client, 'syncHudClock', %time);
|
|
}
|
|
|
|
function clientCmdSyncHudClock(%time)
|
|
{
|
|
clockHud.setTime(%time);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
$vehicleReticle[AssaultVehicle, 1, bitmap] = "gui/hud_ret_tankchaingun.png";
|
|
$vehicleReticle[AssaultVehicle, 1, frame] = true;
|
|
$vehicleReticle[AssaultVehicle, 2, bitmap] = "gui/hud_ret_tankmortar.png";
|
|
$vehicleReticle[AssaultVehicle, 2, frame] = true;
|
|
|
|
$vehicleReticle[BomberFlyer, 1, bitmap] = "gui/hud_ret_shrike.png";
|
|
$vehicleReticle[BomberFlyer, 1, frame] = false;
|
|
$vehicleReticle[BomberFlyer, 2, bitmap] = "";
|
|
$vehicleReticle[BomberFlyer, 2, frame] = false;
|
|
$vehicleReticle[BomberFlyer, 3, bitmap] = "gui/hud_ret_targlaser.png";
|
|
$vehicleReticle[BomberFlyer, 3, frame] = false;
|
|
|
|
function GameConnection::setVWeaponsHudActive(%client, %slot)
|
|
{
|
|
%veh = %client.player.getObjectMount();
|
|
%vehType = %veh.getDatablock().getName();
|
|
commandToClient(%client, 'setVWeaponsHudActive', %slot, %vehType);
|
|
}
|
|
|
|
function clientCmdSetVWeaponsHudActive(%num, %vType)
|
|
{
|
|
//vWeaponsBox.setActiveWeapon(%num);
|
|
if(%num > $numVWeapons)
|
|
%num = $numVWeapons;
|
|
|
|
for(%i = 1; %i <= $numVWeapons; %i++)
|
|
{
|
|
%oldHilite = "vWeap" @ %i @ "Hilite";
|
|
%oldHilite.setVisible(false);
|
|
}
|
|
%newHilite = "vWeap" @ %num @ "Hilite";
|
|
%newHilite.setVisible(true);
|
|
|
|
// set the bitmap and frame for the reticle
|
|
reticleHud.setBitmap($vehicleReticle[%vType, %num, bitmap]);
|
|
reticleFrameHud.setVisible($vehicleReticle[%vType, %num, frame]);
|
|
}
|
|
|
|
function GameConnection::setVWeaponsHudClearAll(%client)
|
|
{
|
|
commandToClient(%client, 'setVWeaponsHudClearAll');
|
|
}
|
|
|
|
function clientCmdSetVWeaponsHudClearAll()
|
|
{
|
|
//vWeaponsBox.clearAll();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudBitmap(%client, %slot, %name, %bitmap)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudBitmap',%slot,%name,%bitmap);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudBitmap(%slot, %name, %bitmap)
|
|
{
|
|
$WeaponNames[%slot] = %name;
|
|
weaponsHud.setWeaponBitmap(%slot,%bitmap);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudItem(%client, %name, %ammoAmount, %addItem)
|
|
{
|
|
//error("GC:SWHI name="@%name@",ammoAmount="@%ammoAmount@",addItem="@%addItem);
|
|
// for(%i = 0; %i < $WeaponsHudCount; %i++)
|
|
// if($WeaponsHudData[%i, itemDataName] $= %name)
|
|
// {
|
|
// if($WeaponsHudData[%i, ammoDataName] !$= "") {
|
|
// %ammoInv = %client.player.inv[$WeaponsHudData[%i, ammoDataName]];
|
|
// //error(" ----- player has " @ %ammoInv SPC $WeaponsHudData[%i, ammoDataName]);
|
|
// //error("SWHI:Setting weapon "@%name@" ("@%i@") ammo to " @ %ammoInv);
|
|
// commandToClient(%client, 'setWeaponsHudItem',%i,%ammoInv, %addItem);
|
|
// }
|
|
// else {
|
|
// //error("SWHI:Setting weapon "@%name@" ("@%i@") ammo to infinite");
|
|
// commandToClient(%client, 'setWeaponsHudItem',%i,-1, %addItem);
|
|
// }
|
|
// break;
|
|
// }
|
|
|
|
|
|
// My try...
|
|
for(%i = 0; %i < $WeaponsHudCount; %i++)
|
|
if($WeaponsHudData[%i, itemDataName] $= %name)
|
|
{
|
|
if($WeaponsHudData[%i, ammoDataName] !$= "") {
|
|
%ammoInv = %client.player.inv[$WeaponsHudData[%i, ammoDataName]];
|
|
//error(" ----- player has " @ %ammoInv SPC $WeaponsHudData[%i, ammoDataName]);
|
|
//error("SWHI:Setting weapon "@%name@" ("@%i@") ammo to " @ %ammoInv);
|
|
commandToClient(%client, 'setWeaponsHudItem',%i,%ammoInv, %addItem);
|
|
}
|
|
else {
|
|
//error("SWHI:Setting weapon "@%name@" ("@%i@") ammo to infinite");
|
|
commandToClient(%client, 'setWeaponsHudItem',%i,-1, %addItem);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudItem(%slot, %ammoAmount, %addItem)
|
|
{
|
|
if(%addItem) {
|
|
//error("adding weapon to hud in slot " @ %slot @ " with ammo " @ %ammoAmount);
|
|
weaponsHud.addWeapon(%slot, %ammoAmount);
|
|
}
|
|
else {
|
|
//error("removing weapon from hud");
|
|
weaponsHud.removeWeapon(%slot);
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudAmmo(%client, %name, %ammoAmount)
|
|
{
|
|
for(%i = 0; %i < $WeaponsHudCount; %i++)
|
|
if($WeaponsHudData[%i, ammoDataName] $= %name)
|
|
{
|
|
//error("SWHA:Setting ammo "@%name@" for weapon "@%i@" to " @ %ammoAmount);
|
|
commandToClient(%client, 'setWeaponsHudAmmo',%i, %ammoAmount);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudAmmo(%slot, %ammoAmount)
|
|
{
|
|
weaponsHud.setAmmo(%slot, %ammoAmount);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudActive(%client, %name, %clearActive)
|
|
{
|
|
if(%clearActive) {
|
|
//error("clearing active weapon");
|
|
commandToClient(%client, 'setWeaponsHudActive', -1);
|
|
}
|
|
else
|
|
for(%i = 0; %i < $WeaponsHudCount; %i++)
|
|
if($WeaponsHudData[%i, itemDataName] $= %name)
|
|
{
|
|
//error("Setting weapon "@%name@" ("@%i@") active");
|
|
commandToClient(%client, 'setWeaponsHudActive',%i);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudActive(%slot)
|
|
{
|
|
weaponsHud.setActiveWeapon(%slot);
|
|
switch$($WeaponNames[%slot])
|
|
{
|
|
case "Blaster":
|
|
reticleHud.setBitmap("gui/ret_blaster.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Plasma":
|
|
reticleHud.setBitmap("gui/ret_plasma.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Chaingun":
|
|
reticleHud.setBitmap("gui/ret_chaingun.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Disc":
|
|
reticleHud.setBitmap("gui/ret_disc.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "GrenadeLauncher":
|
|
reticleHud.setBitmap("gui/ret_grenade.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "SniperRifle":
|
|
reticleHud.setBitmap("gui/hud_ret_sniper.png");
|
|
reticleFrameHud.setVisible(false);
|
|
case "ELFGun":
|
|
reticleHud.setBitmap("gui/ret_elf.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Mortar":
|
|
reticleHud.setBitmap("gui/ret_mortor.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "MissileLauncher":
|
|
reticleHud.setBitmap("gui/ret_missile.png");
|
|
reticleFrameHud.setVisible(true);
|
|
case "ShockLance":
|
|
reticleHud.setBitmap("gui/hud_ret_shocklance.png");
|
|
reticleFrameHud.setVisible(false);
|
|
case "TargetingLaser":
|
|
reticleHud.setBitmap("gui/hud_ret_targlaser.png");
|
|
reticleFrameHud.setVisible(false);
|
|
}
|
|
}
|
|
|
|
function clientCmdSetRepairReticle()
|
|
{
|
|
reticleHud.setBitmap("gui/ret_chaingun.png");
|
|
reticleFrameHud.setVisible(true);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudBackGroundBmp(%client, %name)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudBackGroundBmp',%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudBackGroundBmp(%name)
|
|
{
|
|
weaponsHud.setBackGroundBitmap(%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudHighLightBmp(%client, %name)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudHighLightBmp',%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudHighLightBmp(%name)
|
|
{
|
|
weaponsHud.setHighLightBitmap(%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudInfiniteAmmoBmp(%client, %name)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudInfiniteAmmoBmp',%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudInfiniteAmmoBmp(%name)
|
|
{
|
|
weaponsHud.setInfiniteAmmoBitmap(%name);
|
|
}
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setWeaponsHudClearAll(%client)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudClearAll');
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetWeaponsHudClearAll()
|
|
{
|
|
weaponsHud.clearAll();
|
|
}
|
|
|
|
function GameConnection::clearBackpackIcon(%client)
|
|
{
|
|
commandToClient(%client, 'setBackpackHudItem', 0, 0);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Ammo Hud
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setAmmoHudCount(%client, %amount)
|
|
{
|
|
commandToClient(%client, 'setAmmoHudCount', %amount);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetAmmoHudCount(%amount)
|
|
{
|
|
if(%amount == -1)
|
|
ammoHud.setValue("");
|
|
else
|
|
ammoHud.setValue(%amount);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Backpack Hud
|
|
//----------------------------------------------------------------------------
|
|
|
|
$BackpackHudData[0, itemDataName] = "AmmoPack";
|
|
$BackpackHudData[0, bitmapName] = "gui/hud_new_packammo.png";
|
|
$BackpackHudData[1, itemDataName] = "CloakingPack";
|
|
$BackpackHudData[1, bitmapName] = "gui/hud_new_packcloak.png";
|
|
$BackpackHudData[2, itemDataName] = "EnergyPack";
|
|
$BackpackHudData[2, bitmapName] = "gui/hud_new_packenergy.png";
|
|
$BackpackHudData[3, itemDataName] = "RepairPack";
|
|
$BackpackHudData[3, bitmapName] = "gui/hud_new_packrepair.png";
|
|
$BackpackHudData[4, itemDataName] = "SatchelCharge";
|
|
$BackpackHudData[4, bitmapName] = "gui/hud_new_packsatchel.png";
|
|
$BackpackHudData[5, itemDataName] = "ShieldPack";
|
|
$BackpackHudData[5, bitmapName] = "gui/hud_new_packshield.png";
|
|
$BackpackHudData[6, itemDataName] = "InventoryDeployable";
|
|
$BackpackHudData[6, bitmapName] = "gui/hud_new_packinventory.png";
|
|
$BackpackHudData[7, itemDataName] = "MotionSensorDeployable";
|
|
$BackpackHudData[7, bitmapName] = "gui/hud_new_packmotionsens.png";
|
|
$BackpackHudData[8, itemDataName] = "PulseSensorDeployable";
|
|
$BackpackHudData[8, bitmapName] = "gui/hud_new_packradar.png";
|
|
$BackpackHudData[9, itemDataName] = "TurretOutdoorDeployable";
|
|
$BackpackHudData[9, bitmapName] = "gui/hud_new_packturretout.png";
|
|
$BackpackHudData[10, itemDataName] = "TurretIndoorDeployable";
|
|
$BackpackHudData[10, bitmapName] = "gui/hud_new_packturretin.png";
|
|
$BackpackHudData[11, itemDataName] = "SensorJammerPack";
|
|
$BackpackHudData[11, bitmapName] = "gui/hud_new_packsensjam.png";
|
|
$BackpackHudData[12, itemDataName] = "AABarrelPack";
|
|
$BackpackHudData[12, bitmapName] = "gui/hud_new_packturret.png";
|
|
$BackpackHudData[13, itemDataName] = "FusionBarrelPack";
|
|
$BackpackHudData[13, bitmapName] = "gui/hud_new_packturret.png";
|
|
$BackpackHudData[14, itemDataName] = "MissileBarrelPack";
|
|
$BackpackHudData[14, bitmapName] = "gui/hud_new_packturret.png";
|
|
$BackpackHudData[15, itemDataName] = "PlasmaBarrelPack";
|
|
$BackpackHudData[15, bitmapName] = "gui/hud_new_packturret.png";
|
|
$BackpackHudData[16, itemDataName] = "ELFBarrelPack";
|
|
$BackpackHudData[16, bitmapName] = "gui/hud_new_packturret.png";
|
|
$BackpackHudData[17, itemDataName] = "MortarBarrelPack";
|
|
$BackpackHudData[17, bitmapName] = "gui/hud_new_packturret.png";
|
|
|
|
$BackpackHudCount = 18;
|
|
|
|
function GameConnection::setBackpackHudItem(%client, %name, %addItem)
|
|
{
|
|
for(%i = 0; %i < $BackpackHudCount; %i++)
|
|
if($BackpackHudData[%i, itemDataName] $= %name)
|
|
commandToClient(%client, 'setBackpackHudItem', %i, %addItem);
|
|
}
|
|
|
|
function clientCmdSetBackpackHudItem(%num, %addItem)
|
|
{
|
|
if(%addItem)
|
|
{
|
|
backpackIcon.setBitmap($BackpackHudData[%num, bitmapName]);
|
|
backpackFrame.setVisible(true);
|
|
backpackIcon.setVisible(true);
|
|
backpackFrame.pack = true;
|
|
}
|
|
else
|
|
{
|
|
backpackIcon.setBitmap("");
|
|
backpackFrame.setVisible(false);
|
|
backpackText.setValue("");
|
|
backpackText.setVisible(false);
|
|
backpackFrame.pack = false;
|
|
}
|
|
}
|
|
|
|
function GameConnection::updateSensorPackText(%client, %num)
|
|
{
|
|
commandToClient(%client, 'updatePackText', %num);
|
|
}
|
|
|
|
function clientCmdUpdatePackText(%num)
|
|
{
|
|
backpackText.setValue(%num);
|
|
if(%num == 0)
|
|
backpackText.setVisible(false);
|
|
else
|
|
backpackText.setVisible(true);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
$InventoryHudData[0, bitmapName] = "gui/hud_handgren.png";
|
|
$InventoryHudData[0, itemDataName] = Grenade;
|
|
$InventoryHudData[0, ammoDataName] = Grenade;
|
|
$InventoryHudData[0, slot] = 0;
|
|
$InventoryHudData[1, bitmapName] = "gui/hud_mine.png";
|
|
$InventoryHudData[1, itemDataName] = Mine;
|
|
$InventoryHudData[1, ammoDataName] = Mine;
|
|
$InventoryHudData[1, slot] = 1;
|
|
$InventoryHudData[2, bitmapName] = "gui/hud_medpack.png";
|
|
$InventoryHudData[2, itemDataName] = RepairKit;
|
|
$InventoryHudData[2, ammoDataName] = RepairKit;
|
|
$InventoryHudData[2, slot] = 3;
|
|
$InventoryHudData[3, bitmapName] = "gui/hud_handgren.png";
|
|
$InventoryHudData[3, itemDataName] = FlashGrenade;
|
|
$InventoryHudData[3, ammoDataName] = FlashGrenade;
|
|
$InventoryHudData[3, slot] = 0;
|
|
$InventoryHudData[4, bitmapName] = "gui/hud_handgren.png";
|
|
$InventoryHudData[4, itemDataName] = ConcussionGrenade;
|
|
$InventoryHudData[4, ammoDataName] = ConcussionGrenade;
|
|
$InventoryHudData[4, slot] = 0;
|
|
$InventoryHudData[5, bitmapName] = "gui/hud_handgren.png";
|
|
$InventoryHudData[5, itemDataName] = FlareGrenade;
|
|
$InventoryHudData[5, ammoDataName] = FlareGrenade;
|
|
$InventoryHudData[5, slot] = 0;
|
|
$InventoryHudData[6, bitmapName] = "gui/hud_handgren.png";
|
|
$InventoryHudData[6, itemDataName] = CameraGrenade;
|
|
$InventoryHudData[6, ammoDataName] = CameraGrenade;
|
|
$InventoryHudData[6, slot] = 0;
|
|
$InventoryHudData[7, bitmapName] = "gui/hud_beacon.png";
|
|
$InventoryHudData[7, itemDataName] = Beacon;
|
|
$InventoryHudData[7, ammoDataName] = Beacon;
|
|
$InventoryHudData[7, slot] = 2;
|
|
|
|
$InventoryHudCount = 8;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Inventory Hud
|
|
//----------------------------------------------------------------------------
|
|
//------------------------------------------------------------------------- ---
|
|
function GameConnection::setInventoryHudBitmap(%client, %slot, %name, %bitmap)
|
|
{
|
|
commandToClient(%client, 'setInventoryHudBitmap',%slot,%name,%bitmap);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetInventoryHudBitmap(%slot, %name, %bitmap)
|
|
{
|
|
inventoryHud.setInventoryBitmap(%slot,%bitmap);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setInventoryHudItem(%client, %name, %amount, %addItem)
|
|
{
|
|
for(%i = 0; %i < $InventoryHudCount; %i++)
|
|
if($InventoryHudData[%i, itemDataName] $= %name)
|
|
{
|
|
if($InventoryHudData[%i, ammoDataName] !$= "")
|
|
commandToClient(%client, 'setInventoryHudItem',$InventoryHudData[%i, slot],%amount, %addItem);
|
|
else
|
|
commandToClient(%client, 'setInventoryHudItem',$InventoryHudData[%i, slot],-1, %addItem);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetInventoryHudItem(%slot, %amount, %addItem)
|
|
{
|
|
if(%addItem)
|
|
inventoryHud.addInventory(%slot, %amount);
|
|
else
|
|
inventoryHud.removeInventory(%slot);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setInventoryHudAmount(%client, %name, %amount)
|
|
{
|
|
for(%i = 0; %i < $InventoryHudCount; %i++)
|
|
if($InventoryHudData[%i, ammoDataName] $= %name)
|
|
{
|
|
commandToClient(%client, 'setInventoryHudAmount',$InventoryHudData[%i, slot], %amount);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetInventoryHudAmount(%slot, %amount)
|
|
{
|
|
inventoryHud.setAmount(%slot, %amount);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setInventoryHudBackGroundBmp(%client, %name)
|
|
{
|
|
commandToClient(%client, 'setInventoryHudBackGroundBmp',%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetInventoryHudBackGroundBmp(%name)
|
|
{
|
|
inventoryHud.setBackGroundBitmap(%name);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function GameConnection::setInventoryHudClearAll(%client)
|
|
{
|
|
commandToClient(%client, 'setInventoryHudClearAll');
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
function clientCmdSetInventoryHudClearAll()
|
|
{
|
|
inventoryHud.clearAll();
|
|
backpackIcon.setBitmap("");
|
|
backpackFrame.setVisible(false);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// MessageHud
|
|
function MessageHud::open(%this)
|
|
{
|
|
%offset = 6;
|
|
|
|
if(%this.isVisible())
|
|
return;
|
|
|
|
if(%this.isTeamMsg)
|
|
%text = "TEAM:";
|
|
else
|
|
%text = "GLOBAL:";
|
|
|
|
MessageHud_Text.setValue(%text);
|
|
|
|
%windowPos = "8 " @ ( getWord( outerChatHud.position, 1 ) + getWord( outerChatHud.extent, 1 ) + 1 );
|
|
%windowExt = getWord( OuterChatHud.extent, 0 ) @ " " @ getWord( MessageHud_Frame.extent, 1 );
|
|
|
|
if( MainVoteHud.isVisible() )
|
|
{
|
|
%votePos = firstWord( MainVoteHud.position ) @ " " @ ( getWord( OuterChatHud.extent, 1 ) + getWord( messageHud_Frame.extent, 1 ) + 10 );
|
|
MainVoteHud.position = %votePos;
|
|
}
|
|
|
|
if( voiceCommHud.isVisible() )
|
|
{
|
|
%vCommPos = firstWord( voiceCommHud.position ) SPC ( getWord( OuterChatHud.extent, 1 ) + getWord( messageHud_Frame.extent, 1 ) + 18 );
|
|
voiceCommHud.position = %vCommPos;
|
|
}
|
|
|
|
%textExtent = getWord(MessageHud_Text.extent, 0);
|
|
%ctrlExtent = getWord(MessageHud_Frame.extent, 0);
|
|
|
|
Canvas.pushDialog(%this);
|
|
|
|
messageHud_Frame.position = %windowPos;
|
|
messageHud_Frame.extent = %windowExt;
|
|
MessageHud_Edit.position = setWord(MessageHud_Edit.position, 0, %textExtent + %offset);
|
|
MessageHud_Edit.extent = setWord(MessageHud_Edit.extent, 0, %ctrlExtent - %textExtent - (2 * %offset));
|
|
|
|
%this.setVisible(true);
|
|
deactivateKeyboard();
|
|
MessageHud_Edit.makeFirstResponder(true);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MessageHud::close(%this)
|
|
{
|
|
if(!%this.isVisible())
|
|
return;
|
|
|
|
// readjust vote hud if open
|
|
if( MainVoteHud.isVisible() )
|
|
{
|
|
%tempY = getWord(outerChatHud.position, 1) + getWord(outerChatHud.extent, 1) + 2;
|
|
%mainVoteX = firstWord(mainVoteHud.position);
|
|
%voteHudPos = %mainVoteX SPC %tempY;
|
|
mainVoteHud.position = %voteHudPos;
|
|
}
|
|
// put voice comm hud back where it was (if it moved)
|
|
%vTempY = getWord(outerChatHud.position, 1) + getWord(outerChatHud.extent, 1) + 12;
|
|
%mainCommX = firstWord(voiceCommHud.position);
|
|
%commHudPos = %mainCommX SPC %vTempY;
|
|
voiceCommHud.position = %commHudPos;
|
|
|
|
Canvas.popDialog(%this);
|
|
%this.setVisible(false);
|
|
if ( $enableDirectInput )
|
|
activateKeyboard();
|
|
MessageHud_Edit.setValue("");
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MessageHud::toggleState(%this)
|
|
{
|
|
if(%this.isVisible())
|
|
%this.close();
|
|
else
|
|
%this.open();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MessageHud_Edit::onEscape(%this)
|
|
{
|
|
MessageHud.close();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MessageHud_Edit::eval(%this)
|
|
{
|
|
%text = trim(%this.getValue());
|
|
if(%text !$= "")
|
|
{
|
|
if(MessageHud.isTeamMsg)
|
|
commandToServer('teamMessageSent', %text);
|
|
else
|
|
commandToServer('messageSent', %text);
|
|
}
|
|
|
|
MessageHud.close();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// main chat hud
|
|
function MainChatHud::onWake( %this )
|
|
{
|
|
// set the chat hud to the users pref
|
|
%this.setChatHudLength( $Pref::ChatHudLength );
|
|
}
|
|
|
|
// chat hud sizes
|
|
$outerChatLenY[1] = 72;
|
|
$outerChatLenY[2] = 140;
|
|
$outerChatLenY[3] = 200;
|
|
|
|
// size for scroll
|
|
$chatScrollLenY[1] = 64;
|
|
$chatScrollLenY[2] = 128;
|
|
$chatScrollLenY[3] = 192;
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MainChatHud::setChatHudLength( %this, %length )
|
|
{
|
|
%outerChatLenX = firstWord(outerChatHud.extent);
|
|
%chatScrollLenX = firstWord(chatScrollHud.extent);
|
|
%OCHextent = %outerChatLenX SPC $outerChatLenY[%length];
|
|
%CSHextent = %chatScrollLenX SPC $chatScrollLenY[%length];
|
|
|
|
outerChatHud.extent = %OCHextent;
|
|
chatScrollHud.extent = %CSHextent;
|
|
|
|
%totalLines = HudMessageVector.getNumLines();
|
|
%posLines = %length * 4;
|
|
%linesOver = ( %totalLines - %posLines ) * 14;
|
|
ChatPageDown.position = ( firstWord( outerChatHud.extent ) - 20 ) @ " " @ ( $chatScrollLenY[%length] - 6 );
|
|
|
|
if( ( %linesOver > 0 ) && !%sizeIncrease )
|
|
{
|
|
%linesOver = %totalLines - %posLines;
|
|
%posAdjust = %linesOver * ChatHud.profile.fontSize + 3;
|
|
|
|
%newPos = "0" @ " " @ ( -1 * %posAdjust );
|
|
ChatHud.position = %newPos;
|
|
}
|
|
else if( %sizeIncrease && ( %linesOver > 0 ) )
|
|
{
|
|
%curPos = getWord( ChatHud.position, 1 );
|
|
%newY = %curPos + ( 4 * 14 );
|
|
%newPos = "0 " @ %newY;
|
|
ChatHud.position = %newPos;
|
|
}
|
|
else if( %linesOver <= 0 )
|
|
{
|
|
ChatHud.position = "0 0";
|
|
}
|
|
|
|
// adjust votehud and voicecommhud to be just beneath chathud
|
|
%tempY = getWord(outerChatHud.position, 1) + getWord(outerChatHud.extent, 1) + 2;
|
|
%vTempY = %tempY + 10;
|
|
%mainVoteX = firstWord(mainVoteHud.position);
|
|
%vCommX = firstWord(voiceCommHud.position);
|
|
%voteHudPos = %mainVoteX SPC %tempY;
|
|
%vCommPos = %vCommX SPC %vTempY;
|
|
mainVoteHud.position = %voteHudPos;
|
|
voiceCommHud.position = %vCommPos;
|
|
ChatHud.resize(firstWord(ChatHud.position), getWord(ChatHud.position, 1), firstWord(ChatHud.extent), getWord(ChatHud.extent, 1));
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function MainChatHud::nextChatHudLen( %this )
|
|
{
|
|
$pref::chatHudLength++;
|
|
if($pref::chatHudLength == 4)
|
|
{
|
|
$pref::chatHudLength = 1;
|
|
%sizeIncrease = false;
|
|
ChatPageDown.position = ( firstWord( outerChatHud.extent ) - 20 ) @ " 50";
|
|
}
|
|
else
|
|
%sizeIncrease = true;
|
|
|
|
%outerChatLenX = firstWord(outerChatHud.extent);
|
|
%chatScrollLenX = firstWord(chatScrollHud.extent);
|
|
%OCHextent = %outerChatLenX SPC $outerChatLenY[$pref::chatHudLength];
|
|
%CSHextent = %chatScrollLenX SPC $chatScrollLenY[$pref::chatHudLength];
|
|
|
|
outerChatHud.extent = %OCHextent;
|
|
chatScrollHud.extent = %CSHextent;
|
|
|
|
%totalLines = HudMessageVector.getNumLines();
|
|
%posLines = $pref::chatHudLength * 4;
|
|
%linesOver = %totalLines - %posLines;
|
|
ChatPageDown.position = ( firstWord( outerChatHud.extent ) - 20 ) @ " " @ ( $chatScrollLenY[$pref::chatHudLength] - 6 );
|
|
|
|
if( ( %linesOver > 0 ) && !%sizeIncrease )
|
|
{
|
|
%linesOver = %totalLines - %posLines;
|
|
%posAdjust = %linesOver * $ShellFontSize;
|
|
|
|
%newPos = "0" @ " " @ ( -1 * %posAdjust );
|
|
ChatHud.position = %newPos;
|
|
}
|
|
else if( %sizeIncrease && ( %linesOver > 0 ) )
|
|
{
|
|
%curPos = getWord( ChatHud.position, 1 );
|
|
%newY = %curPos + ( 4 * $ShellFontSize );
|
|
%newPos = "0 " @ %newY;
|
|
ChatHud.position = %newPos;
|
|
}
|
|
else if( %linesOver <= 0 )
|
|
{
|
|
ChatHud.position = "0 0";
|
|
}
|
|
|
|
// adjust votehud to be just beneath chathud
|
|
%tempY = getWord(outerChatHud.position, 1) + getWord(outerChatHud.extent, 1) + 2;
|
|
%vTempY = %tempY + 10;
|
|
%mainVoteX = firstWord(mainVoteHud.position);
|
|
%vCommX = firstWord(voiceCommHud.position);
|
|
%voteHudPos = %mainVoteX SPC %tempY;
|
|
%vCommPos = %vCommX SPC %vTempY;
|
|
mainVoteHud.position = %voteHudPos;
|
|
voiceCommHud.position = %vCommPos;
|
|
ChatHud.resize(firstWord(ChatHud.position), getWord(ChatHud.position, 1), firstWord(ChatHud.extent), getWord(ChatHud.extent, 1));
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// MessageHud key handlers
|
|
function ToggleMessageHud(%make)
|
|
{
|
|
if(%make)
|
|
{
|
|
MessageHud.isTeamMsg = false;
|
|
MessageHud.toggleState();
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function TeamMessageHud(%make)
|
|
{
|
|
if(%make)
|
|
{
|
|
MessageHud.isTeamMsg = true;
|
|
MessageHud.toggleState();
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// MessageHud message handlers
|
|
function serverCmdTeamMessageSent(%client, %text)
|
|
{
|
|
if(strlen(%text) >= $Host::MaxMessageLen)
|
|
%text = getSubStr(%text, 0, $Host::MaxMessageLen);
|
|
chatMessageTeam(%client, %client.team, '\c3%1: %2', %client.name, %text);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function serverCmdMessageSent(%client, %text)
|
|
{
|
|
if(strlen(%text) >= $Host::MaxMessageLen)
|
|
%text = getSubStr(%text, 0, $Host::MaxMessageLen);
|
|
chatMessageAll(%client, '\c4%1: %2', %client.name, %text);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
function toggleHuds(%tag)
|
|
{
|
|
if($Hud[%tag] && $Hud[%tag].pushed)
|
|
hideHud(%tag);
|
|
else
|
|
showHud(%tag);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
//modes are standard, pilot, passenger, object, observer
|
|
$HudMode = "Observer";
|
|
$HudModeType = "HoverBike";
|
|
$HudModeNode = 0;
|
|
function ClientCmdSetHudMode(%mode, %type, %node)
|
|
{
|
|
$HudMode = detag(%mode);
|
|
$HudModeType = detag(%type);
|
|
$HudModeNode = %node;
|
|
|
|
clientCmdDisplayHuds();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
$ControlObjectReticle[AABarrelLarge, bitmap] = "ret_chaingun";
|
|
$ControlObjectReticle[AABarrelLarge, frame] = true;
|
|
$ControlObjectReticle[ELFBarrelLarge, bitmap] = "ret_elf";
|
|
$ControlObjectReticle[ELFBarrelLarge, frame] = true;
|
|
$ControlObjectReticle[DeployableIndoorBarrel, bitmap] = "ret_blaster";
|
|
$ControlObjectReticle[DeployableIndoorBarrel, frame] = true;
|
|
$ControlObjectReticle[MissileBarrelLarge, bitmap] = "ret_missile";
|
|
$ControlObjectReticle[MissileBarrelLarge, frame] = true;
|
|
$ControlObjectReticle[MortarBarrelLarge, bitmap] = "ret_mortor"; // mortor? hahaha
|
|
$ControlObjectReticle[MortarBarrelLarge, frame] = true;
|
|
$ControlObjectReticle[DeployableOutdoorBarrel, bitmap] = "ret_blaster";
|
|
$ControlObjectReticle[DeployableOutdoorBarrel, frame] = true;
|
|
$ControlObjectReticle[PlasmaBarrelLarge, bitmap] = "ret_plasma";
|
|
$ControlObjectReticle[PlasmaBarrelLarge, frame] = true;
|
|
$ControlObjectReticle[SentryTurretBarrel, bitmap] = "ret_blaster";
|
|
$ControlObjectReticle[SentryTurretBarrel, frame] = true;
|
|
|
|
function setControlObjectReticle(%type)
|
|
{
|
|
if($ControlObjectReticle[%type, bitmap] !$= "")
|
|
{
|
|
reticleHud.setBitmap("gui/" @ $ControlObjectReticle[%type, bitmap]);
|
|
reticleFrameHud.setVisible($ControlObjectReticle[%type, frame]);
|
|
|
|
retCenterHud.setVisible(true);
|
|
}
|
|
else
|
|
retCenterHud.setVisible(false);
|
|
}
|
|
|
|
function updateActionMaps()
|
|
{
|
|
//pop the action maps...
|
|
if (isObject(moveMap))
|
|
moveMap.pop();
|
|
if (isObject(passengerKeys))
|
|
passengerKeys.pop();
|
|
if ( isObject( observerBlockMap ) )
|
|
observerBlockMap.pop();
|
|
if ( isObject( observerMap ) )
|
|
observerMap.pop();
|
|
//if (isObject(flyingCameraMove))
|
|
// flyingCameraMove.pop();
|
|
if (isObject(ControlActionMap))
|
|
ControlActionMap.pop();
|
|
|
|
// push the proper map
|
|
switch$ ($HudMode)
|
|
{
|
|
case "Pilot":
|
|
passengerKeys.push();
|
|
|
|
case "Passenger":
|
|
moveMap.push();
|
|
|
|
case "Object":
|
|
moveMap.push();
|
|
ControlActionMap.push();
|
|
|
|
case "Observer":
|
|
moveMap.push();
|
|
if ( isObject( observerBlockMap ) )
|
|
observerBlockMap.delete();
|
|
// Create an action map just to block unwanted parts of the move map:
|
|
new ActionMap( observerBlockMap );
|
|
observerBlockMap.blockBind( moveMap, jump );
|
|
observerBlockMap.blockBind( moveMap, mouseFire );
|
|
observerBlockMap.blockBind( moveMap, mouseJet );
|
|
observerBlockMap.blockBind( moveMap, toggleZoom );
|
|
observerBlockMap.blockBind( moveMap, setZoomFOV );
|
|
observerBlockMap.push();
|
|
observerMap.push();
|
|
// Make sure that "Spawn" is bound:
|
|
if ( observerMap.getBinding( mouseFire ) $= "" )
|
|
observerMap.copyBind( moveMap, mouseFire );
|
|
|
|
case "PickTeam":
|
|
// no mapping
|
|
|
|
//case 'Standard':
|
|
default:
|
|
moveMap.push();
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function ClientCmdDisplayHuds()
|
|
{
|
|
if ( $LaunchMode $= "InteriorView" )
|
|
return;
|
|
|
|
// only update action maps if playGui is current content
|
|
%content = Canvas.getContent();
|
|
if(isObject(%content) && (%content.getName() $= "PlayGui"))
|
|
updateActionMaps();
|
|
|
|
ammoHud.setVisible(false);
|
|
objectiveHud.setVisible(false);
|
|
inventoryHud.setVisible(false);
|
|
backpackFrame.setVisible(false);
|
|
weaponsHud.setVisible(false);
|
|
retCenterHud.setVisible(false);
|
|
HudClusterBack.setVisible(false);
|
|
outerChatHud.setVisible(false);
|
|
clockHud.setVisible(false);
|
|
lagHudIndicator.setVisible(false);
|
|
controlObjectText.setVisible(false);
|
|
clientCmdToggleDashHud(false);
|
|
|
|
switch$ ($HudMode)
|
|
{
|
|
case "Pilot":
|
|
clientCmdShowVehicleGauges($HudModeType, $HudModeNode);
|
|
clientCmdToggleDashHud(true);
|
|
retCenterHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
|
|
case "Passenger":
|
|
clientCmdShowVehicleGauges($HudModeType, $HudModeNode);
|
|
clientCmdToggleDashHud(true);
|
|
ammoHud.setVisible(true);
|
|
objectiveHud.setVisible(true);
|
|
inventoryHud.setVisible(true);
|
|
weaponsHud.setVisible(true);
|
|
if(backpackFrame.pack)
|
|
backpackFrame.setVisible(true);
|
|
retCenterHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
clientCmdSetWeaponsHudActive(0);
|
|
|
|
case "Object":
|
|
ammoHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
controlObjectText.setVisible(true);
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
|
|
setControlObjectReticle($HudModeType);
|
|
|
|
case "Observer":
|
|
objectiveHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
|
|
case "PickTeam":
|
|
ammoHud.setVisible(false);
|
|
objectiveHud.setVisible(false);
|
|
inventoryHud.setVisible(false);
|
|
backpackFrame.setVisible(false);
|
|
weaponsHud.setVisible(false);
|
|
retCenterHud.setVisible(false);
|
|
HudClusterBack.setVisible(false);
|
|
outerChatHud.setVisible(false);
|
|
controlObjectText.setVisible(false);
|
|
clockHud.setVisible(false);
|
|
|
|
//case 'Standard':
|
|
default:
|
|
ammoHud.setVisible(true);
|
|
objectiveHud.setVisible(true);
|
|
inventoryHud.setVisible(true);
|
|
weaponsHud.setVisible(true);
|
|
if(backpackFrame.pack)
|
|
backpackFrame.setVisible(true);
|
|
retCenterHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
|
|
if(voteHud.voting)
|
|
mainVoteHud.setVisible(1);
|
|
else
|
|
mainVoteHud.setVisible(0);
|
|
|
|
}
|
|
}
|
|
|
|
function clientcmdTogglePlayHuds(%val)
|
|
{
|
|
ammoHud.setVisible(%val);
|
|
objectiveHud.setVisible(%val);
|
|
inventoryHud.setVisible(%val);
|
|
if(backpackFrame.pack)
|
|
backpackFrame.setVisible(%val);
|
|
weaponsHud.setVisible(%val);
|
|
retCenterHud.setVisible(%val);
|
|
HudClusterBack.setVisible(%val);
|
|
outerChatHud.setVisible(%val);
|
|
|
|
if (%val)
|
|
{
|
|
if (!$showLagIcon)
|
|
clockHud.setVisible(true);
|
|
else
|
|
lagHudIndicator.setVisible(true);
|
|
}
|
|
else
|
|
{
|
|
clockHud.setVisible(false);
|
|
lagHudIndicator.setVisible(false);
|
|
}
|
|
|
|
if(%val)
|
|
{
|
|
if(voteHud.voting)
|
|
mainVoteHud.setVisible(1);
|
|
}
|
|
else
|
|
mainVoteHud.setVisible(0);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function toggleCursorHuds(%tag)
|
|
{
|
|
if($Hud[%tag] !$= "" && $Hud[%tag].pushed)
|
|
{
|
|
hideHud(%tag);
|
|
clientCmdTogglePlayHuds(true);
|
|
}
|
|
else
|
|
{
|
|
showHud(%tag);
|
|
clientCmdTogglePlayHuds(false);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function showHud(%tag)
|
|
{
|
|
commandToServer('ShowHud', %tag);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function serverCmdShowHud(%client, %tag)
|
|
{
|
|
%tagName = getWord(%tag, 1);
|
|
%tag = getWord(%tag, 0);
|
|
messageClient(%client, 'OpenHud', "", %tag);
|
|
switch$ (%tag)
|
|
{
|
|
case 'inventoryScreen':
|
|
%client.numFavsCount = 0;
|
|
inventoryScreen::updateHud(1,%client,%tag);
|
|
case 'vehicleHud':
|
|
vehicleHud::updateHud(1,%client,%tag);
|
|
case 'scoreScreen':
|
|
updateScoreHudThread(%client, %tag);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function updateScoreHudThread(%client, %tag)
|
|
{
|
|
Game.updateScoreHud(%client, %tag);
|
|
cancel(%client.scoreHudThread);
|
|
%client.scoreHudThread = schedule(3000, %client, "updateScoreHudThread", %client, %tag);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function hideHud(%tag)
|
|
{
|
|
commandToServer('HideHud', %tag);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function serverCmdHideHud(%client, %tag)
|
|
{
|
|
%tag = getWord(%tag, 0);
|
|
messageClient(%client, 'CloseHud', "", %tag);
|
|
switch$ (%tag)
|
|
{
|
|
case 'scoreScreen':
|
|
cancel(%client.scoreHudThread);
|
|
%client.scoreHudThread = "";
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
addMessageCallback('OpenHud', openHud);
|
|
addMessageCallback('CloseHud', closeHud);
|
|
addMessageCallback('ClearHud', clearHud);
|
|
addMessageCallback('SetLineHud', setLineHud);
|
|
addMessageCallback('RemoveLineHud', removeLineHud);
|
|
|
|
//------------------------------------------------------------------------------
|
|
function openHud(%msgType, %msgString, %tag)
|
|
{
|
|
// Vehicle hud can only be pushed on the PlayGui:
|
|
if ( %tag $= 'vehicleHud' && Canvas.getContent() != PlayGui.getId() )
|
|
return;
|
|
|
|
%tagName = getWord(%tag, 1);
|
|
%tag = getWord(%tag, 0);
|
|
if($Hud[%tag] $= "")
|
|
{
|
|
%tagName.loadHud(%tag);
|
|
%tagName.setupHud(%tag);
|
|
}
|
|
Canvas.pushDialog($Hud[%tag]);
|
|
$Hud[%tag].pushed = 1;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function closeHud(%msgType, %msgString, %tag)
|
|
{
|
|
%tag = getWord(%tag, 0);
|
|
if($Hud[%tag].pushed)
|
|
{
|
|
$Hud[%tag].setVisible(false);
|
|
Canvas.popDialog($Hud[%tag]);
|
|
$Hud[%tag].pushed = 0;
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function clearHud(%msgType, %msgString, %tag, %a0)
|
|
{
|
|
%tag = getWord(%tag, 0);
|
|
%startingLine = detag(%a0);
|
|
|
|
while ($Hud[%tag].data[%startingLine, 0] !$= "")
|
|
{
|
|
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
|
|
{
|
|
//remove and delete the hud line
|
|
%obj = $Hud[%tag].data[%startingLine, %i];
|
|
$Hud[%tag].childGui.remove(%obj);
|
|
$Hud[%tag].data[%startingLine, %i] = "";
|
|
%obj.delete();
|
|
}
|
|
|
|
%startingLine++;
|
|
}
|
|
|
|
//don't forget to adjust the size accordingly...
|
|
if (%tag $= 'scoreScreen')
|
|
{
|
|
%height = 0;
|
|
%guiCtrl = $Hud[%tag].childGui;
|
|
|
|
//set the new extent to be the position + extent of the last element...
|
|
%height = 0;
|
|
if (%guiCtrl.getCount() > 0)
|
|
{
|
|
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
|
|
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
|
|
}
|
|
|
|
//now reset the extent
|
|
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function removeLineHud(%msgType, %msgString, %hudName, %lineNumber, %a0, %a1, %a2, %a3)
|
|
{
|
|
%tag = getWord(%hudName, 0);
|
|
%lineNum = detag(%lineNumber);
|
|
if($Hud[%tag].data[%lineNum,0] !$= "")
|
|
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
|
|
{
|
|
$Hud[%tag].childGui.remove($Hud[%tag].data[%lineNum, %i]);
|
|
$Hud[%tag].data[%lineNum, %i] = "";
|
|
}
|
|
|
|
//don't forget to adjust the size accordingly...
|
|
if (%tag $= 'scoreScreen')
|
|
{
|
|
%height = 0;
|
|
%guiCtrl = $Hud[%tag].childGui;
|
|
|
|
//set the new extent to be the position + extent of the last element...
|
|
%height = 0;
|
|
if (%guiCtrl.getCount() > 0)
|
|
{
|
|
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
|
|
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
|
|
}
|
|
|
|
//now reset the extent
|
|
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function setLineHud(%msgType, %msgString, %hudName, %lineNumber, %a0, %a1, %a2, %a3, %a4)
|
|
{
|
|
%tag = getWord(%hudName, 0);
|
|
%lineNum = detag(%lineNumber);
|
|
|
|
if(!isObject($Hud[%tag].data[%lineNum, 0]))
|
|
{
|
|
$Hud[%tag].numCol = addLine(%tag, %lineNum, %a0, %a1, %a2, %a3);
|
|
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
|
|
$Hud[%tag].childGui.add($Hud[%tag].data[%lineNum, %i]);
|
|
}
|
|
|
|
for(%i = 0; %i < $Hud[%tag].numCol; %i++)
|
|
$Hud[%tag].data[%lineNum, %i].hudSetValue(detag(%a[%i]),detag(%a4));
|
|
|
|
//don't forget to adjust the size accordingly...
|
|
if (%tag $= 'scoreScreen')
|
|
{
|
|
%height = 0;
|
|
%guiCtrl = $Hud[%tag].childGui;
|
|
|
|
//set the new extent to be the position + extent of the last element...
|
|
%height = 0;
|
|
if (%guiCtrl.getCount() > 0)
|
|
{
|
|
%lastCtrl = %guiCtrl.getObject(%guiCtrl.getCount() - 1);
|
|
%height = getWord(%lastCtrl.position, 1) + getWord(%lastCtrl.extent, 1);
|
|
}
|
|
|
|
//now reset the extent
|
|
%guiCtrl.resize(getWord(%guiCtrl.position, 0), getWord(%guiCtrl.position, 1), getWord(%guiCtrl.extent, 0), %height);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function GuiButtonCtrl::hudSetValue(%obj, %text)
|
|
{
|
|
%obj.setValue(%text);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function GuiTextCtrl::hudSetValue(%obj, %text)
|
|
{
|
|
%obj.setValue(%text);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function GuiMLTextCtrl::hudSetValue(%obj, %text)
|
|
{
|
|
%obj.setValue(%text);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function GuiPopUpMenuCtrl::hudSetValue(%obj, %text, %textOverFlow)
|
|
{
|
|
if(%textOverFlow !$= "")
|
|
%text = %text @ %textOverFlow;
|
|
%obj.clear();
|
|
%value = getField(%text,0);
|
|
%startVal = 1;
|
|
if(%value $= "noSelect")
|
|
{
|
|
%obj.replaceText(false);
|
|
%value = getField(%text,1);
|
|
%startVal = 2;
|
|
}
|
|
else
|
|
%obj.replaceText(true);
|
|
|
|
%obj.setValue(%value);
|
|
if(getFieldCount(%text) > 1)
|
|
{
|
|
%obj.setActive(true);
|
|
for(%i = %startVal; %i < getFieldCount(%text); %i++)
|
|
%obj.add(getField(%text, %i), %i);
|
|
}
|
|
else
|
|
%obj.setActive(false);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function ShellTabButton::hudSetValue( %obj, %text )
|
|
{
|
|
%obj.setText( %text );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function addLine(%tag, %lineNum, %a0, %a1, %a2, %a3)
|
|
{
|
|
%colNum = 0;
|
|
if(isObject($Hud[%tag]))
|
|
%colNum = $Hud[%tag].addLine(%tag, %lineNum, detag(%a2), detag(%a3));
|
|
return %colNum;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function INV_Menu::onSelect( %obj, %index, %text )
|
|
{
|
|
%favList = $Hud['inventoryScreen'].data[0, 1].type TAB $Hud['inventoryScreen'].data[0, 1].getValue();
|
|
for ( %i = 1; %i < $Hud['inventoryScreen'].count; %i++ )
|
|
%favList = %favList TAB $Hud['inventoryScreen'].data[%i, 1].type TAB $Hud['inventoryScreen'].data[%i, 1].getValue();
|
|
commandToServer( 'setClientFav', %favList );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function INV_ListMenu::onSelect( %obj, %id, %text, %force )
|
|
{
|
|
// Deselect the current tab ( because it was on the OLD list ):
|
|
if ( InventoryScreen.selId !$= "" )
|
|
{
|
|
$Hud['inventoryScreen'].staticData[0, InventoryScreen.selId].setValue( false );
|
|
InventoryScreen.selId = "";
|
|
}
|
|
|
|
$pref::FavCurrentList = %id;
|
|
%favListStart = %id * 10;
|
|
|
|
// Select the currently selected favorite if it is now visible:
|
|
%tab = $pref::FavCurrentSelect - ( $pref::FavCurrentList * 10 ) + 1;
|
|
if ( %tab > 0 && %tab < 11 )
|
|
{
|
|
InventoryScreen.selId = %tab;
|
|
$Hud['inventoryScreen'].staticData[0, %tab].setValue( true );
|
|
}
|
|
|
|
%obj.clear();
|
|
%obj.setValue( %text );
|
|
%count = 10;
|
|
%list = 0;
|
|
for ( %index = 0; $pref::FavNames[%index] !$= ""; %index++ )
|
|
{
|
|
if ( %index >= %count - 1 )
|
|
{
|
|
if ( %count != %favListStart + 10 )
|
|
%obj.add( "Favorites " @ %index - 8 @ " - " @ %index + 1, %list );
|
|
|
|
%count += 10;
|
|
%list++;
|
|
}
|
|
}
|
|
|
|
for ( %i = 0; %i < 10; %i++ )
|
|
{
|
|
$Hud['inventoryScreen'].staticData[0, %i + 1].command = "InventoryScreen.onTabSelect(" @ %favListStart + %i @ ");";
|
|
$Hud['inventoryScreen'].staticData[0, %i + 1].setText( strupr( $pref::FavNames[%favListStart + %i] ) );
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function serverCmdSetClientFav(%client, %text)
|
|
{
|
|
if ( getWord( getField( %text, 0 ), 0 ) $= armor )
|
|
{
|
|
%client.curFavList = %text;
|
|
%validList = checkInventory( %client, %text );
|
|
%client.favorites[0] = getField( %text, 1 );
|
|
%armor = getArmorDatablock( %client, $NameToInv[getField( %validList,1 )] );
|
|
%weaponCount = 0;
|
|
%packCount = 0;
|
|
%grenadeCount = 0;
|
|
%mineCount = 0;
|
|
%count = 1;
|
|
%client.weaponIndex = "";
|
|
%client.packIndex = "";
|
|
%client.grenadeIndex = "";
|
|
%client.mineIndex = "";
|
|
|
|
for(%i = 3; %i < getFieldCount(%validList); %i = %i + 2)
|
|
{
|
|
%setItem = false;
|
|
switch$ (getField(%validList,%i-1))
|
|
{
|
|
case weapon:
|
|
if(%weaponCount < %armor.maxWeapons)
|
|
{
|
|
if(!%weaponCount)
|
|
%client.weaponIndex = %count;
|
|
else
|
|
%client.weaponIndex = %client.weaponIndex TAB %count;
|
|
%weaponCount++;
|
|
%setItem = true;
|
|
}
|
|
case pack:
|
|
if(%packCount < 1)
|
|
{
|
|
%client.packIndex = %count;
|
|
%packCount++;
|
|
%setItem = true;
|
|
}
|
|
case grenade:
|
|
if(%grenadeCount < %armor.maxGrenades)
|
|
{
|
|
if(!%grenadeCount)
|
|
%client.grenadeIndex = %count;
|
|
else
|
|
%client.grenadeIndex = %client.grenadeIndex TAB %count;
|
|
%grenadeCount++;
|
|
%setItem = true;
|
|
}
|
|
case mine:
|
|
if(%mineCount < %armor.maxMines)
|
|
{
|
|
if(!%mineCount)
|
|
%client.mineIndex = %count;
|
|
else
|
|
%client.mineIndex = %client.mineIndex TAB %count;
|
|
%mineCount++;
|
|
%setItem = true;
|
|
}
|
|
}
|
|
if(%setItem)
|
|
{
|
|
%client.favorites[%count] = getField(%validList, %i);
|
|
%count++;
|
|
}
|
|
}
|
|
%client.numFavs = %count;
|
|
%client.numFavsCount = 0;
|
|
inventoryScreen::updateHud(1, %client, 'inventoryScreen');
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function getCenterPos(%tag)
|
|
{
|
|
%TerExtDivX = getWord(PlayGui.extent, 0) / 2;
|
|
%TerExtDivY = getWord(PlayGui.extent, 1) / 2;
|
|
|
|
%HudExtDivX = getWord($Hud[%tag].extent,0) / 2;
|
|
%HudExtDivY = getWord($Hud[%tag].extent,1) / 2;
|
|
|
|
%pos = %TerExtDivX - %HudExtDivX @ " " @ %TerExtDivY - %HudExtDivY;
|
|
return %pos;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function hideZoomHud()
|
|
{
|
|
ZoomHud.setVisible(false);
|
|
ZoomHud.hideThread = 0;
|
|
}
|
|
|
|
function calcZoomFOV()
|
|
{
|
|
if($pref::player::currentFOV == $pref::player::defaultFov / 2)
|
|
$pref::player::currentFOV = $pref::player::defaultFov / 5;
|
|
else
|
|
$pref::player::currentFOV = $pref::player::currentFOV / 2;
|
|
|
|
if($pref::player::currentFOV < 4)
|
|
$pref::player::currentFOV = $pref::player::defaultFov / 2;
|
|
|
|
if(!$ZoomOn)
|
|
{
|
|
%pos = getZoomCenter($pref::player::defaultFov / $pref::player::currentFOV);
|
|
%extent = getZoomExtent($pref::player::defaultFov / $pref::player::currentFOV);
|
|
ZoomHud.resize(getWord(%pos, 0), getWord(%pos, 1), getWord(%extent, 0), getWord(%extent, 1));
|
|
if(ZoomHud.hideThread != 0)
|
|
cancel(ZoomHud.hideThread);
|
|
ZoomHud.hideThread = schedule(5000, 0, hideZoomHud);
|
|
ZoomHud.setVisible(true);
|
|
}
|
|
else
|
|
setFov( $pref::player::currentFOV );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function getZoomCenter(%power)
|
|
{
|
|
%power += (%power/4);
|
|
%TerExtDivX = mFloor(getWord(PlayGui.extent, 0) / 2);
|
|
%TerExtDivY = mFloor(getWord(PlayGui.extent, 1) / 2);
|
|
|
|
%HudExtDivX = mFloor((getWord(PlayGui.extent, 0) / %power)/2);
|
|
%HudExtDivY = mFloor((getWord(PlayGui.extent, 1) / %power)/2);
|
|
|
|
%pos = %TerExtDivX - %HudExtDivX @ " " @ %TerExtDivY - %HudExtDivY;
|
|
return %pos;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function getZoomExtent(%power)
|
|
{
|
|
%power += (%power/4);
|
|
%HudExtDivX = mFloor(getWord(PlayGui.extent, 0) / %power);
|
|
%HudExtDivY = mFloor(getWord(PlayGui.extent, 1) / %power);
|
|
|
|
%val = %HudExtDivX @ " " @ %HudExtDivY;
|
|
|
|
return %val;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function hideAllHuds()
|
|
{
|
|
objectiveHud.setVisible( false );
|
|
outerChatHud.setVisible( false );
|
|
energyHud.setVisible( false );
|
|
damageHud.setVisible( false );
|
|
sensorHudBack.setVisible( false );
|
|
controlObjectText.setVisible( false );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function restoreAllHuds()
|
|
{
|
|
objectiveHud.setVisible( true );
|
|
outerChatHud.setVisible( true );
|
|
energyHud.setVisible( true );
|
|
damageHud.setVisible( true );
|
|
sensorHudBack.setVisible( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
//------------------------------------------------------------------------------
|
|
// voting hud stuff
|
|
/////////////////////////////////////////////////
|
|
addMessageCallback('clearVoteHud', clearVoteHud);
|
|
addMessageCallback('addYesVote', addYesVote);
|
|
addMessageCallback('addNoVote', addNoVote);
|
|
addMessageCallback('openVoteHud', openVoteHud);
|
|
addMessageCallback('closeVoteHud', closeVoteHud);
|
|
addMessageCallback('VoteStarted', initVote);
|
|
|
|
//------------------------------------------------------------------------------
|
|
function initVote(%msgType, %msgString)
|
|
{
|
|
if(!$BottomPrintActive)
|
|
{
|
|
%yBind = strUpr(getField(moveMap.getBinding(voteYes), 1));
|
|
%nBind = strUpr(getField(moveMap.getBinding(voteNo), 1));
|
|
|
|
%message = detag(%msgString) @ "\nPress " @ %yBind @ " to vote YES or " @ %nBind @ " to vote NO.";
|
|
clientCmdBottomPrint(%message, 10, 2);
|
|
}
|
|
}
|
|
|
|
function openVoteHud(%msgType, %msgString, %numClients, %passPercent)
|
|
{
|
|
alxPlay(VoteInitiatedSound, 0, 0, 0);
|
|
voteHud.voting = true;
|
|
|
|
voteHud.totalVotes = 0;
|
|
voteHud.size = %numClients;
|
|
voteHud.quorum = (%numClients / 2);
|
|
|
|
if(voteHud.quorum < 1)
|
|
voteHud.quorum = 1;
|
|
|
|
voteHud.pass = voteHud.quorum * %passPercent;
|
|
|
|
voteHud.setPassValue(%passPercent);
|
|
passHash.position = firstWord( mainVoteHud.extent) * %passPercent + 1 @ " -1";
|
|
|
|
if( MessageHud.isVisible() )
|
|
{
|
|
%votePos = firstWord( MainVoteHud.position ) @ " " @ ( getWord( OuterChatHud.extent, 1 ) + getWord( messageHud_Frame.extent, 1 ) + 12 );
|
|
MainVoteHud.position = %votePos;
|
|
}
|
|
else
|
|
{
|
|
%tempY = getWord(outerChatHud.position, 1) + getWord(outerChatHud.extent, 1) + 2;
|
|
%mainVoteX = firstWord(mainVoteHud.position);
|
|
%voteHudPos = %mainVoteX SPC %tempY;
|
|
mainVoteHud.position = %voteHudPos;
|
|
}
|
|
|
|
voteHud.setVisible(true);
|
|
mainVoteHud.setVisible(true);
|
|
}
|
|
|
|
function stripBind(%string)
|
|
{
|
|
return getSubstr(%string, 9, 90);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CloseVoteHud(%msgType, %msgString)
|
|
{
|
|
voteHud.setVisible(false);
|
|
mainVoteHud.setVisible(false);
|
|
voteHud.yesCount = 0;
|
|
voteHud.noCount = 0;
|
|
voteHud.voting = false;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function addYesVote(%msgType, %msgString)
|
|
{
|
|
voteHud.yesCount++;
|
|
voteHud.totalVotes++;
|
|
|
|
if(voteHud.isVisible())
|
|
{
|
|
voteHud.setYesValue(voteHud.yesCount / voteHud.size);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function addNoVote(%msgType, %msgString)
|
|
{
|
|
voteHud.noCount++;
|
|
voteHud.totalVotes++;
|
|
|
|
if(voteHud.isVisible())
|
|
voteHud.setNoValue(voteHud.noCount / voteHud.size);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function clearVoteHud(%msgType, %msgString)
|
|
{
|
|
voteHud.setYesValue(0.0);
|
|
voteHud.setNoValue(0.0);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function cleanUpHuds()
|
|
{
|
|
if($Hud['inventoryScreen'] !$= "")
|
|
{
|
|
for(%lineNum = 0; $Hud['inventoryScreen'].data[%lineNum, 0] !$= ""; %lineNum++)
|
|
for(%i = 0; %i < $Hud['inventoryScreen'].numCol; %i++)
|
|
{
|
|
$Hud['inventoryScreen'].childGui.remove($Hud['inventoryScreen'].data[%lineNum, %i]);
|
|
$Hud['inventoryScreen'].data[%lineNum, %i] = "";
|
|
}
|
|
}
|
|
}
|
|
|
|
function displayObserverHud(%client, %targetClient, %potentialClient)
|
|
{
|
|
if (%targetClient > 0)
|
|
bottomPrint(%client, "\nYou are now observing: " @ getTaggedString(%targetClient.name), 0, 3);
|
|
else if (%potentialClient > 0)
|
|
bottomPrint(%client, "\nObserver Fly Mode\n" @ getTaggedString(%potentialClient.name), 0, 3);
|
|
else
|
|
bottomPrint(%client, "\nObserver Fly Mode", 0, 3);
|
|
}
|
|
|
|
function hudFirstPersonToggled()
|
|
{
|
|
ammoHud.setVisible($firstPerson);
|
|
}
|
|
|
|
$testCount = 0;
|
|
|
|
function testChatHud()
|
|
{
|
|
$testCount++;
|
|
messageAll( '', "This is test number " @ $testCount );
|
|
$tester = schedule( 50, 0, "testChatHud");
|
|
} |