mirror of
https://github.com/mostlikely4r/construction-mod.git
synced 2026-01-19 19:24:44 +00:00
1930 lines
62 KiB
C#
1930 lines
62 KiB
C#
//--------------------------------------------------------------------------
|
|
function GameConnection::sensorPing(%this, %ping)
|
|
{
|
|
sensorHud.ping = %ping;
|
|
sensorHud.update();
|
|
}
|
|
|
|
function GameConnection::sensorJammed(%this, %jam)
|
|
{
|
|
sensorHud.jam = %jam;
|
|
sensorHud.update();
|
|
}
|
|
|
|
function SensorHud::update(%this)
|
|
{
|
|
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);
|
|
|
|
sensorHud.jam = false;
|
|
sensorHud.ping = false;
|
|
sensorHud.update();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
$vehicleReticle[AssaultVehicle, 1, bitmap] = "gui/hud_ret_tankchaingun";
|
|
$vehicleReticle[AssaultVehicle, 1, frame] = true;
|
|
$vehicleReticle[AssaultVehicle, 2, bitmap] = "gui/hud_ret_tankmortar";
|
|
$vehicleReticle[AssaultVehicle, 2, frame] = true;
|
|
|
|
$vehicleReticle[BomberFlyer, 1, bitmap] = "gui/hud_ret_shrike";
|
|
$vehicleReticle[BomberFlyer, 1, frame] = false;
|
|
$vehicleReticle[BomberFlyer, 2, bitmap] = "";
|
|
$vehicleReticle[BomberFlyer, 2, frame] = false;
|
|
$vehicleReticle[BomberFlyer, 3, bitmap] = "gui/hud_ret_targlaser";
|
|
$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);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// z0dd - ZOD, 9/13/02. Serverside reticles, sever tells client what file to use.
|
|
function GameConnection::setWeaponsHudActive(%client, %name, %clearActive)
|
|
{
|
|
if(%clearActive)
|
|
{
|
|
commandToClient(%client, 'setWeaponsHudActive', -1);
|
|
}
|
|
else
|
|
{
|
|
for(%i = 0; %i < $WeaponsHudCount; %i++)
|
|
{
|
|
if($WeaponsHudData[%i, itemDataName] $= %name)
|
|
{
|
|
// TODO - remove this once a proper fix has been done
|
|
if (%client.constructionClient == true && %client.constructionClientVersion == 1)
|
|
commandToClient(%client, 'setWeaponsHudActive2', %i, $WeaponsHudData[%i, reticle], $WeaponsHudData[%i, visible]);
|
|
else
|
|
commandToClient(%client, 'setWeaponsHudActive', %i, $WeaponsHudData[%i, reticle], $WeaponsHudData[%i, visible]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// z0dd- ZOD, 9/13/02. Serverside reticles, sever tells client what file to use.
|
|
function clientCmdSetWeaponsHudActive(%slot, %ret, %vis)
|
|
{
|
|
// z0dd - ZOD, 9/30/02. Changed for lazy scripter backward compatibility.
|
|
weaponsHud.setActiveWeapon(%slot);
|
|
switch$($WeaponNames[%slot])
|
|
{
|
|
case "Blaster":
|
|
reticleHud.setBitmap("gui/ret_blaster");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Plasma":
|
|
reticleHud.setBitmap("gui/ret_plasma");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Chaingun":
|
|
reticleHud.setBitmap("gui/ret_chaingun");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Disc":
|
|
reticleHud.setBitmap("gui/ret_disc");
|
|
reticleFrameHud.setVisible(true);
|
|
case "GrenadeLauncher":
|
|
reticleHud.setBitmap("gui/ret_grenade");
|
|
reticleFrameHud.setVisible(true);
|
|
case "SniperRifle":
|
|
reticleHud.setBitmap("gui/hud_ret_sniper");
|
|
reticleFrameHud.setVisible(false);
|
|
case "ELFGun":
|
|
reticleHud.setBitmap("gui/ret_elf");
|
|
reticleFrameHud.setVisible(true);
|
|
case "Mortar":
|
|
reticleHud.setBitmap("gui/ret_mortor");
|
|
reticleFrameHud.setVisible(true);
|
|
case "MissileLauncher":
|
|
reticleHud.setBitmap("gui/ret_missile");
|
|
reticleFrameHud.setVisible(true);
|
|
case "ShockLance":
|
|
reticleHud.setBitmap("gui/hud_ret_shocklance");
|
|
reticleFrameHud.setVisible(false);
|
|
case "TargetingLaser":
|
|
reticleHud.setBitmap("gui/hud_ret_targlaser");
|
|
reticleFrameHud.setVisible(false);
|
|
case "TR2Disc":
|
|
reticleHud.setBitmap("gui/ret_disc");
|
|
reticleFrameHud.setVisible(true);
|
|
case "TR2GrenadeLauncher":
|
|
reticleHud.setBitmap("gui/ret_grenade");
|
|
reticleFrameHud.setVisible(true);
|
|
case "TR2Chaingun":
|
|
reticleHud.setBitmap("gui/ret_chaingun");
|
|
reticleFrameHud.setVisible(true);
|
|
case "TR2Mortar":
|
|
reticleHud.setBitmap("gui/ret_mortor");
|
|
reticleFrameHud.setVisible(true);
|
|
case "TR2Shocklance":
|
|
reticleHud.setBitmap("gui/hud_ret_shocklance");
|
|
reticleFrameHud.setVisible(false);
|
|
case "TR2GoldTargetingLaser":
|
|
reticleHud.setBitmap("gui/hud_ret_targlaser");
|
|
reticleFrameHud.setVisible(false);
|
|
case "TR2SilverTargetingLaser":
|
|
reticleHud.setBitmap("gui/hud_ret_targlaser");
|
|
reticleFrameHud.setVisible(false);
|
|
default:
|
|
reticleHud.setBitmap(%ret);
|
|
reticleFrameHud.setVisible(%vis);
|
|
}
|
|
}
|
|
|
|
function clientCmdSetRepairReticle()
|
|
{
|
|
reticleHud.setBitmap("gui/ret_chaingun");
|
|
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();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// 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";
|
|
$BackpackHudData[1, itemDataName] = "CloakingPack";
|
|
$BackpackHudData[1, bitmapName] = "gui/hud_new_packcloak";
|
|
$BackpackHudData[2, itemDataName] = "EnergyPack";
|
|
$BackpackHudData[2, bitmapName] = "gui/hud_new_packenergy";
|
|
$BackpackHudData[3, itemDataName] = "RepairPack";
|
|
$BackpackHudData[3, bitmapName] = "gui/hud_new_packrepair";
|
|
$BackpackHudData[4, itemDataName] = "SatchelCharge";
|
|
$BackpackHudData[4, bitmapName] = "gui/hud_new_packsatchel";
|
|
$BackpackHudData[5, itemDataName] = "ShieldPack";
|
|
$BackpackHudData[5, bitmapName] = "gui/hud_new_packshield";
|
|
$BackpackHudData[6, itemDataName] = "InventoryDeployable";
|
|
$BackpackHudData[6, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[7, itemDataName] = "MotionSensorDeployable";
|
|
$BackpackHudData[7, bitmapName] = "gui/hud_new_packmotionsens";
|
|
$BackpackHudData[8, itemDataName] = "PulseSensorDeployable";
|
|
$BackpackHudData[8, bitmapName] = "gui/hud_new_packradar";
|
|
$BackpackHudData[9, itemDataName] = "TurretOutdoorDeployable";
|
|
$BackpackHudData[9, bitmapName] = "gui/hud_new_packturretout";
|
|
$BackpackHudData[10, itemDataName] = "TurretIndoorDeployable";
|
|
$BackpackHudData[10, bitmapName] = "gui/hud_new_packturretin";
|
|
$BackpackHudData[11, itemDataName] = "SensorJammerPack";
|
|
$BackpackHudData[11, bitmapName] = "gui/hud_new_packsensjam";
|
|
$BackpackHudData[12, itemDataName] = "AABarrelPack";
|
|
$BackpackHudData[12, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[13, itemDataName] = "FusionBarrelPack";
|
|
$BackpackHudData[13, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[14, itemDataName] = "MissileBarrelPack";
|
|
$BackpackHudData[14, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[15, itemDataName] = "PlasmaBarrelPack";
|
|
$BackpackHudData[15, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[16, itemDataName] = "ELFBarrelPack";
|
|
$BackpackHudData[16, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[17, itemDataName] = "MortarBarrelPack";
|
|
$BackpackHudData[17, bitmapName] = "gui/hud_new_packturret";
|
|
$BackpackHudData[18, itemDataName] = "SatchelUnarmed";
|
|
$BackpackHudData[18, bitmapName] = "gui/hud_satchel_unarmed";
|
|
|
|
// TR2
|
|
$BackpackHudData[19, itemDataName] = "TR2EnergyPack";
|
|
$BackpackHudData[19, bitmapName] = "gui/hud_new_packenergy";
|
|
|
|
$BackpackHudData[20, itemDataName] = "LargeInventoryDeployable";
|
|
$BackpackHudData[20, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[21, itemDataName] = "GeneratorDeployable";
|
|
$BackpackHudData[21, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[22, itemDataName] = "SolarPanelDeployable";
|
|
$BackpackHudData[22, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[23, itemDataName] = "SwitchDeployable";
|
|
$BackpackHudData[23, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[24, itemDataName] = "MediumSensorDeployable";
|
|
$BackpackHudData[24, bitmapName] = "gui/hud_new_packradar";
|
|
$BackpackHudData[25, itemDataName] = "LargeSensorDeployable";
|
|
$BackpackHudData[25, bitmapName] = "gui/hud_new_packradar";
|
|
$BackpackHudData[26, itemDataName] = "WallDeployable";
|
|
$BackpackHudData[26, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[27, itemDataName] = "spineDeployable";
|
|
$BackpackHudData[27, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[28, itemDataName] = "mspineDeployable";
|
|
$BackpackHudData[28, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[29, itemDataName] = "FloorDeployable";
|
|
$BackpackHudData[29, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[30, itemDataName] = "JumpadDeployable";
|
|
$BackpackHudData[30, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[31, itemDataName] = "EscapePodDeployable";
|
|
$BackpackHudData[31, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[32, itemDataName] = "wWallDeployable";
|
|
$BackpackHudData[32, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[33, itemDataName] = "EnergizerDeployable";
|
|
$BackpackHudData[33, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[34, itemDataName] = "spineDeployable";
|
|
$BackpackHudData[34, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[35, itemDataName] = "TreeDeployable";
|
|
$BackpackHudData[35, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[36, itemDataName] = "CrateDeployable";
|
|
$BackpackHudData[36, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[37, itemDataName] = "DecorationDeployable";
|
|
$BackpackHudData[37, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[38, itemDataName] = "LogoProjectorDeployable";
|
|
$BackpackHudData[38, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[39, itemDataName] = "LightDeployable";
|
|
$BackpackHudData[39, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[40, itemDataName] = "TripwireDeployable";
|
|
$BackpackHudData[40, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[41, itemDataName] = "ForceFieldDeployable";
|
|
$BackpackHudData[41, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[42, itemDataName] = "GravityFieldDeployable";
|
|
$BackpackHudData[42, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[43, itemDataName] = "TelePadPack";
|
|
$BackpackHudData[43, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[44, itemDataName] = "DiscTurretDeployable";
|
|
$BackpackHudData[44, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[45, itemDataName] = "TurretLaserDeployable";
|
|
$BackpackHudData[45, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[46, itemDataName] = "TurretMissileRackDeployable";
|
|
$BackpackHudData[46, bitmapName] = "gui/hud_new_packinventory";
|
|
$BackpackHudData[47, itemDataName] = "TurretBasePack";
|
|
$BackpackHudData[47, bitmapName] = "gui/hud_new_packinventory";
|
|
|
|
$BackpackHudCount = 48;
|
|
|
|
function GameConnection::clearBackpackIcon(%client)
|
|
{
|
|
commandToClient(%client, 'setBackpackHudItem', 0, 0);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
// Pack Icons Activate / Deactivate
|
|
function clientCmdSetSatchelArmed()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_satchel_armed" );
|
|
}
|
|
|
|
function clientCmdsetCloakIconOn()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packcloak_armed" );
|
|
}
|
|
|
|
function clientCmdsetCloakIconOff()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packcloak" );
|
|
}
|
|
|
|
function clientCmdsetRepairPackIconOn()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packrepair_armed" );
|
|
}
|
|
|
|
function clientCmdsetRepairPackIconOff()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packrepair" );
|
|
}
|
|
|
|
function clientCmdsetShieldIconOn()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packshield_armed" );
|
|
}
|
|
|
|
function clientCmdsetShieldIconOff()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packshield" );
|
|
}
|
|
|
|
function clientCmdsetSenJamIconOn()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packsensjam_armed" );
|
|
}
|
|
|
|
function clientCmdsetSenJamIconOff()
|
|
{
|
|
backpackIcon.setBitmap( "gui/hud_new_packsensjam" );
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
$InventoryHudData[0, bitmapName] = "gui/hud_handgren";
|
|
$InventoryHudData[0, itemDataName] = Grenade;
|
|
$InventoryHudData[0, ammoDataName] = Grenade;
|
|
$InventoryHudData[0, slot] = 0;
|
|
$InventoryHudData[1, bitmapName] = "gui/hud_mine";
|
|
$InventoryHudData[1, itemDataName] = Mine;
|
|
$InventoryHudData[1, ammoDataName] = Mine;
|
|
$InventoryHudData[1, slot] = 1;
|
|
$InventoryHudData[2, bitmapName] = "gui/hud_medpack";
|
|
$InventoryHudData[2, itemDataName] = RepairKit;
|
|
$InventoryHudData[2, ammoDataName] = RepairKit;
|
|
$InventoryHudData[2, slot] = 3;
|
|
$InventoryHudData[3, bitmapName] = "gui/hud_whiteout_gren";
|
|
$InventoryHudData[3, itemDataName] = FlashGrenade;
|
|
$InventoryHudData[3, ammoDataName] = FlashGrenade;
|
|
$InventoryHudData[3, slot] = 0;
|
|
$InventoryHudData[4, bitmapName] = "gui/hud_concuss_gren";
|
|
$InventoryHudData[4, itemDataName] = ConcussionGrenade;
|
|
$InventoryHudData[4, ammoDataName] = ConcussionGrenade;
|
|
$InventoryHudData[4, slot] = 0;
|
|
$InventoryHudData[5, bitmapName] = "gui/hud_handgren";
|
|
$InventoryHudData[5, itemDataName] = FlareGrenade;
|
|
$InventoryHudData[5, ammoDataName] = FlareGrenade;
|
|
$InventoryHudData[5, slot] = 0;
|
|
$InventoryHudData[6, bitmapName] = "gui/hud_handgren";
|
|
$InventoryHudData[6, itemDataName] = CameraGrenade;
|
|
$InventoryHudData[6, ammoDataName] = CameraGrenade;
|
|
$InventoryHudData[6, slot] = 0;
|
|
$InventoryHudData[7, bitmapName] = "gui/hud_beacon";
|
|
$InventoryHudData[7, itemDataName] = Beacon;
|
|
$InventoryHudData[7, ammoDataName] = Beacon;
|
|
$InventoryHudData[7, slot] = 2;
|
|
|
|
// TR2
|
|
$InventoryHudData[8, bitmapName] = "gui/hud_handgren";
|
|
$InventoryHudData[8, itemDataName] = TR2Grenade;
|
|
$InventoryHudData[8, ammoDataName] = TR2Grenade;
|
|
$InventoryHudData[8, slot] = 0;
|
|
|
|
$InventoryHudCount = 9;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// 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 );
|
|
backpackText.setValue( "" );
|
|
backpackText.setVisible(false);
|
|
backpackFrame.pack = 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);
|
|
%text = voicePackCheck(%client,%text);
|
|
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);
|
|
%text = voicePackCheck(%client,%text);
|
|
chatMessageAll(%client, '\c4%1: %2', %client.name, %text);
|
|
}
|
|
|
|
function voicePackCheck(%client,%text) {
|
|
if ($DisableVoicePack) {
|
|
if (strStr(%text,"~w") != -1) {
|
|
if (!%client.isJailed) {
|
|
jailPlayer(%client,0,15);
|
|
messageClient(%client,'msgClient','\c2You were put in jail for using an annoying voice pack.');
|
|
messageAllExcept(%client,-1,'msgClient','\c2%1 was put in jail for using an annoying voice pack.',%client.name);
|
|
}
|
|
%text = "Shazbot!";
|
|
}
|
|
}
|
|
return %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( pickTeamMap ) )
|
|
pickTeamMap.pop();
|
|
if ( isObject( halftimeMap ) )
|
|
halftimeMap.delete();
|
|
|
|
//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":
|
|
////////////////////////
|
|
// pickTeam Keys
|
|
//////////////////////
|
|
if( !isObject( pickTeamMap ) )
|
|
new ActionMap( pickTeamMap );
|
|
pickTeamMap.copyBind( moveMap, toggleMessageHud );
|
|
pickTeamMap.push();
|
|
|
|
case "SiegeHalftime":
|
|
new ActionMap( halftimeMap );
|
|
halftimeMap.bindCmd( keyboard, escape, "", "escapeFromGame();" );
|
|
halftimeMap.copyBind( moveMap, toggleMessageHud );
|
|
halftimeMap.copyBind( moveMap, teamMessageHud );
|
|
halftimeMap.copyBind( moveMap, activateChatMenuHud );
|
|
halftimeMap.copyBind( moveMap, resizeChatHud );
|
|
halftimeMap.copyBind( moveMap, pageMessageHudUp );
|
|
halftimeMap.copyBind( moveMap, pageMessageHudDown );
|
|
halftimeMap.copyBind( moveMap, voiceCapture );
|
|
halftimeMap.push();
|
|
|
|
//case 'Standard':
|
|
default:
|
|
moveMap.push();
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function ClientCmdDisplayHuds()
|
|
{
|
|
if ( $LaunchMode $= "InteriorView" )
|
|
return;
|
|
|
|
// only update action maps if playGui is current content
|
|
%content = Canvas.getContent();
|
|
%PlayGuiActive = isObject(%content) && ( %content.getName() $= "PlayGui" );
|
|
if ( %PlayGuiActive )
|
|
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);
|
|
controlObjectText.setVisible(false);
|
|
siegeHalftimeHud.setVisible(false);
|
|
clientCmdToggleDashHud(false);
|
|
%hideCursor = true;
|
|
|
|
switch$ ($HudMode)
|
|
{
|
|
case "Pilot":
|
|
clientCmdShowVehicleGauges($HudModeType, $HudModeNode);
|
|
clientCmdToggleDashHud(true);
|
|
objectiveHud.setVisible(true);
|
|
dashBoardHud.setposition(0, 0);
|
|
retCenterHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
clockHud.setVisible(true);
|
|
|
|
case "Passenger":
|
|
clientCmdShowVehicleGauges($HudModeType, $HudModeNode);
|
|
clientCmdToggleDashHud(true);
|
|
objectiveHud.setVisible(true);
|
|
dashBoardHud.setPosition(0, 0);
|
|
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);
|
|
clockHud.setVisible(true);
|
|
|
|
case "Object":
|
|
ammoHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
controlObjectText.setVisible(true);
|
|
clockHud.setVisible(true);
|
|
|
|
setControlObjectReticle($HudModeType);
|
|
|
|
case "Observer":
|
|
objectiveHud.setVisible(true);
|
|
HudClusterBack.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
clockHud.setVisible(true);
|
|
|
|
case "SiegeHalftime":
|
|
closeHud( "", "", 'scoreScreen' );
|
|
closeHud( "", "", 'inventoryScreen' );
|
|
closeHud( "", "", 'vehicleHud' );
|
|
objectiveHud.setVisible(true);
|
|
outerChatHud.setVisible(true);
|
|
siegeHalftimeHud.setVisible(true);
|
|
%hideCursor = false;
|
|
|
|
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(true);
|
|
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);
|
|
clockHud.setVisible(true);
|
|
|
|
if(voteHud.voting)
|
|
mainVoteHud.setVisible(1);
|
|
else
|
|
mainVoteHud.setVisible(0);
|
|
|
|
}
|
|
|
|
if ( PlayGui.hideCursor != %hideCursor )
|
|
{
|
|
PlayGui.hideCursor = %hideCursor;
|
|
if ( %PlayGuiActive )
|
|
Canvas.updateCursorState();
|
|
}
|
|
}
|
|
|
|
function dashboardHud::onResize(%this, %width, %height)
|
|
{
|
|
%currentWidth = getWord(dashboardHud.getPosition(), 0);
|
|
%currentHeight = getWord(dashboardHud.getPosition(), 1);
|
|
|
|
%screenWidth = getWord(getResolution(), 0);
|
|
%screenHeight = getWord(getResolution(), 1);
|
|
|
|
switch$ ($HudMode)
|
|
{
|
|
case "Pilot":
|
|
if(%screenHeight <= 480)
|
|
{
|
|
if($HudModeNode == 0)
|
|
{ %xVal = 0; %yVal = 339; }
|
|
else
|
|
{ %xVal = 0; %yVal = 320; }
|
|
}
|
|
else if(%screenHeight <= 600)
|
|
{
|
|
if($HudModeNode == 0)
|
|
{ %xVal = 80; %yVal = 455; }
|
|
else
|
|
{ %xVal = 80; %yVal = 440; }
|
|
}
|
|
else
|
|
{
|
|
%xVal = (%screenWidth - 640) / 2;
|
|
%yVal = (%screenheight - 480) + 360;
|
|
}
|
|
|
|
case "Passenger":
|
|
%xVal = (%screenWidth - 640) / 2;
|
|
%yVal = (%screenheight - 480) + 360;
|
|
}
|
|
|
|
if(%currentWidth != %xVal || %currentHeight != %yVal)
|
|
dashBoardHud.setPosition(%xVal, %yVal);
|
|
}
|
|
|
|
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);
|
|
clockHud.setVisible(%val);
|
|
|
|
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;
|
|
|
|
if(isObject(%guiCtrl))
|
|
{
|
|
//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 )
|
|
{
|
|
if (%client.packIndex > 0)
|
|
%oldPack = %client.favorites[getField(%client.packIndex,0)];
|
|
if (%client.depIndex > 0)
|
|
%oldDep = %client.favorites[getField(%client.depIndex,0)];
|
|
|
|
%client.curFavList = %text;
|
|
%validList = checkInventory( %client, %text );
|
|
%client.favorites[0] = getField( %text, 1 );
|
|
%armor = getArmorDatablock( %client, $NameToInv[getField( %validList,1 )] );
|
|
%weaponCount = 0;
|
|
%packCount = 0;
|
|
%depCount = 0;
|
|
%grenadeCount = 0;
|
|
%mineCount = 0;
|
|
%count = 1;
|
|
%client.weaponIndex = "";
|
|
%client.packIndex = "";
|
|
%client.depIndex = "";
|
|
%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 dep:
|
|
if(%depCount < 1) {
|
|
%client.depIndex = %count;
|
|
%depCount++;
|
|
%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;
|
|
|
|
if (%client.packIndex > 0 && %client.depIndex > 0) {
|
|
%pack = %client.favorites[getField(%client.packIndex,0)];
|
|
%dep = %client.favorites[getField(%client.depIndex,0)];
|
|
if ((%pack !$= "Empty" && %pack !$= "Invalid") && (%dep !$= "Empty" && %dep !$= "Invalid")) {
|
|
if (%pack $= %oldPack)
|
|
%clearPack = true;
|
|
else if (%dep $= %oldDep)
|
|
%clearDep = true;
|
|
if (%clearPack)
|
|
%client.favorites[%client.packIndex] = "EMPTY";
|
|
else if (%clearDep || (!%clearPack && !%clearDep))
|
|
%client.favorites[%client.depIndex] = "EMPTY";
|
|
}
|
|
}
|
|
|
|
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");
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
function HudNetDisplay::getPrefs(%this)
|
|
{
|
|
for(%i = 0; %i < 6; %i++)
|
|
%this.renderField[%i] = ($pref::Net::graphFields >> %i) & 1;
|
|
}
|
|
|
|
function NetBarHud::infoUpdate(%this, %ping, %packetLoss, %sendPackets, %sendBytes, %receivePackets, %receiveBytes)
|
|
{
|
|
NetBarHudPingText.setText(mFormatFloat(%ping, "%4.0f") @ "ms");
|
|
NetBarHudPacketLossText.setText(mFormatFloat(%packetLoss, "%3.0f") @ "%");
|
|
|
|
NetBarHudSendBar.value = %sendPackets / $pref::Net::PacketRateToServer;
|
|
NetBarHudReceiveBar.value = %receivePackets / $pref::Net::PacketRateToClient;
|
|
}
|