//------------------------------------------------------------------------------ // PDA.cs // PDA code for T2BoL // Copyright (c) 2012 Robert MacGregor //============================================================================== // 0-100 $BOL::PDA::Page::Main = 0; $BOL::PDA::Page::Applications = 1; $BOL::PDA::Page::Close = 2; // Not even necessarily a page but it's used to signal the client wants to close $BOL::PDA::Page::Stats = 3; $BOL::PDA::Page::Save = 4; $BOL::PDA::Page::FactionManagement = 5; $BOL::PDA::Page::Radio = 6; $BOL::PDA::Page::Voice = 7; $BOL::PDA::Function::Increment = 1; $BOL::PDA::Function::Decrement = 2; $BOL::PDA::Page::EMail = 8; $BOL::PDA::Page::Inbox = 9; $BOL::PDA::Page::Outbox = 10; $BOL::PDA::Page::Compose = 11; $BOL::PDA::Page::Wiki = 12; // 101-201 $BOL::PDA::Page::Interact = 101; $BOL::PDA::Page::Interacted = 102; $BOL::PDA::Page::Hack = 103; $BOL::PDA::Page::Information = 104; function RPGGame::updateScoreHud(%game, %client, %tag) { if (%client.PDAPage == $BOL::PDA::Page::Main || %client.PDAPage == $BOL::PDA::Page::Interact) Game.processGameLink(%client, %client.PDAPage); } function RPGGame::processGameLink(%game, %client, %arg1, %arg2, %arg3, %arg4, %arg5) { %index = 0; if (%arg1 != $BOL::PDA::Page::Close) %client.PDAPage = %arg1; messageClient( %client, 'ClearHud', "", 'scoreScreen', 0 ); switch(%arg1) { //------------------------------------------------------------------------------ // PDA Applications //------------------------------------------------------------------------------ case $BOL::PDA::Page::Applications: messageClient( %client, 'SetScoreHudSubheader', "", 'Applications | Main'); messageClient( %client, 'SetScoreHudHeader', "", "| Wiki | Applications | E-Mail | Close"); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Command List:"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Self Diagnosis"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Interact with Object"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Radio"); %index++; if (!$Host::GlobalChat) { messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Voice Settings"); %index++; } messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Faction Management"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "- Save State"); return; case $BOL::PDA::Page::Stats: messageClient( %client, 'SetScoreHudHeader', "", "Automated Self Diagnosis Systems v1.2Close"); messageClient( %client, 'SetScoreHudSubheader', "", 'Copyright (c) 3030 S.G.S. Corporation'); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Subject Name: " @ %client.namebase); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Subject Species: " @ %client.race); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Subject Condition: " @ 100 - mfloor(100*%client.player.getDamageLevel()) @ "%"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "REFRESH"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; case $BOL::PDA::Page::Radio: messageClient( %client, 'SetScoreHudSubheader', "", 'Applications | Radio'); if (!%client.hasRadio) { messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "-- You do not have a radio to manage --"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; } switch (%arg2) { case $BOL::PDA::Function::Increment: ServerCmdIncreaseRadioFrequency(%client, true); case $BOL::PDA::Function::Decrement: ServerCmdDecreaseRadioFrequency(%client, true); } messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Radio Status: Normal"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Current Frequency: " @ %client.radioFrequency @ "MHz"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "[Increment Frequency - Decrement Frequency]"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; case $BOL::PDA::Page::Voice: messageClient( %client, 'SetScoreHudSubheader', "", 'Applications | Voice Settings'); switch (%arg2) { case $BOL::PDA::Function::Increment: serverCmdIncreaseVoiceRange(%client, true); case $BOL::PDA::Function::Decrement: serverCmdDecreaseVoiceRange(%client, true); } %voice = %client.voiceMode; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Voice Status: Normal"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Current Voice: \x22" @ $BOL::Voice::Display[%voice] @ "\x22 (" @ $BOL::Voice::Range[%voice] @ " meters)"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "[Increment Range - Decrement Range]"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; case $BOL::PDA::Page::Interact: messageClient( %client, 'SetScoreHudSubheader', "", 'Applications | Interact with Object'); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "-- Objects within Range --"); %index++; %client_team = getTargetSensorGroup(%client.target); %object_count = %client.player.interactList.count(); if (%object_count > 0) for (%i = 0; %i < %object_count; %i++) { %object = %client.player.interactList.element(%i); if (isObject(%object)) { %object_target = %object.target; if (%object_target != -1) { %object_team = getTargetSensorGroup(%object_target); %object_friendly = %client_team == %object_team; %object_friend_text = %object_friendly ? "Friendly" : "Enemy"; %display = %object_friend_text SPC %object.getClassName() SPC "\x22" @ getTaggedString(getTargetName(%object_target)) @ "\x22"; } else %display = "Unknown" SPC %object.getClassName() SPC "(" @ %object @ ")"; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "" @ %display); %index++; } } else { messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "There are no objects in range."); %index++; } messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; case $BOL::PDA::Page::FactionManagement: messageClient( %client, 'SetScoreHudSubheader', "", 'Applications | Faction Management'); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; case $BOL::PDA::Page::Save: messageClient( %client, 'SetScoreHudHeader', "", 'Save StateClose'); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Save function is not supported as of now!"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "RETURN TO MAIN"); return; //------------------------------------------------------------------------------ // PDA E-Mail System //------------------------------------------------------------------------------ case $BOL::PDA::Page::Inbox: messageClient( %client, 'SetScoreHudSubheader', "", 'E-Mail | Your Inbox'); return; case $BOL::PDA::Page::Outbox: messageClient( %client, 'SetScoreHudSubheader', "", 'E-Mail | Your Outbox'); return; case $BOL::PDA::Page::Compose: messageClient( %client, 'SetScoreHudSubheader', "", 'E-Mail | Compose a New Mail'); return; //------------------------------------------------------------------------------ // Interaction Commands //------------------------------------------------------------------------------ case $BOL::PDA::Page::Interact: return; //------------------------------------------------------------------------------ // Handle for Normal PDA functions //------------------------------------------------------------------------------ case $BOL::PDA::Page::Main: messageClient( %client, 'SetScoreHudHeader', "", "| Wiki | Applications | E-Mail | Close"); messageClient( %client, 'SetScoreHudSubheader', "", 'Welcome to the PDA'); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Welcome to the PDA, this is where you will accomplish some daily tasks."); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Click any of the text in the subheader to begin exploring your PDA."); return; case $BOL::PDA::Page::EMail: messageClient( %client, 'SetScoreHudSubheader', "", 'E-Mail | Main'); messageClient( %client, 'SetScoreHudHeader', "", "| Wiki | Applications | E-Mail | Close"); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "E-Mail Functions:"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " - Your Inbox (?)"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " - Your Outbox (?)"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " - Compose a New Mail"); return; case $BOL::PDA::Page::Close: serverCmdHideHud(%client, 'scoreScreen'); commandToClient(%client, 'DisplayHuds'); return; case $BOL::PDA::Page::Wiki: messageClient( %client, 'SetScoreHudHeader', "", "| Wiki | Applications | E-Mail | Close"); messageClient( %client, 'SetScoreHudSubheader', "", 'Wiki | Main'); return; default: // In case something stupid happens messageClient( %client, 'SetScoreHudHeader', "", "| Information | Applications | E-Mail | Wiki | Close"); messageClient( %client, 'SetScoreHudSubheader', "", 'Error | Main'); messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "-- An ERROR has occurred in the PDA Subsystem code --"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "-- Please report this error to DarkDragonDX --"); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "Unknown PDA page: " @ %arg1); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, " "); %index++; messageClient( %client, 'SetLineHud', "", 'scoreScreen', %index, "-- RETURN TO MAIN --"); return; } }