Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

3849 lines
129 KiB
Plaintext

//--------------------------------------------------------------------------
// Date Who Modification
// -------- --- ----------------------------------------------------------
// 11/01/02 MSL Added "Mech Randomizer" button
// 11/01/02 MSL Added "Default Settings" button
// 11/01/02 MSL Modified default Mech setting for each player slot
// 11/06/02 MSL Corrected reprint button states
// 11/06/02 MSL Corrected launch button states
// 11/06/02 MSL Corrected skin selection for Bot.
// Bot skin = 36 = skin"_"4.tga
// 11/06/02 MSL Modified "Text" error messages
// 08/05/03 MSL Added "Recall" button
// 08/05/03 MSL Changed Team Player limit from 4 to 7
// 10/10/03 MSL Added Cameraship to RESET_AFTER_LAUNCH
// 10/17/05 MSL Added all remaining Mechs (53)
//-------------------------------------------------------------------------
// jcem - start
#include "Content\\ShellScripts\\ctcl_params.h"
// jcem - end
#include "Content\\ShellScripts\\stddefs.h"
#include "Content\\ShellScripts\\ShellFunctionHeaders.hpp"
#include "Content\\ShellScripts\\NetParams.h"
#include "Content\\GameTypes.h"
#include "Content\\ShellScripts\\buttons.script"
#include "Content\\ShellScripts\\Multiplayer\\Tonnage_listboxes.script"
#include "Content\\ShellScripts\\Multiplayer\\con_skins_listbox.script"
#include "Content\\ShellScripts\\Multiplayer\\mc_listboxes.script"
#include "Content\\ShellScripts\\Multiplayer\\mech_var_listbox.script"
#include "Content\\ShellScripts\\editbox.script"
#include "Content\\ShellScripts\\common_shell.script"
#include "Content\\ShellScripts\\ErrorScreen.script"
#include "Content\\ShellScripts\\WeaponNames.h"
#define scriptpath "content\\ShellScripts\\Multiplayer\\"
#define DEMO_CODE 1
#define USE_O_BACK 0 // 0: hide o_back, 1: use o_back
#define USE_O_MECH_VARIANT2 0 // 0: hide o_mech_variant2, 1: use o_mech_variant2
#define TESLA_PREFIX "< "
#define TESLA_POSTFIX " >"
#define FONT_EDIT_BOX szPATH_FONTS localize$(IDS_F_GEN_EDITBOX)
#define FONT_LIST_BOX FPATH localize$(IDS_F_ML_LABEL)
#define FONT_LIST_LABEL FPATH localize$(IDS_F_ML_LABEL)
#define SKIN_LIST_BOX FPATH localize$(IDS_F_ML_LABEL)
#define SKIN_LIST_LABEL FPATH localize$(IDS_F_ML_LABEL)
#define DECAL_LIST_BOX FPATH localize$(IDS_F_ML_LABEL)
#define DECAL_LIST_LABEL FPATH localize$(IDS_F_ML_LABEL)
#define TEAM_LIST_BOX FPATH localize$(IDS_F_ML_LABEL)
#define TEAM_LIST_LABEL FPATH localize$(IDS_F_ML_LABEL)
#define TABS_Y_DIFFER 15
#ifndef FRAME_HIGHLIGHT_COLOR // don't use #undef, gosscript don't redefine(& undefine too) symbols
#define FRAME_HIGHLIGHT_COLOR packcolor(64,64,64,255) // jcem
#endif // FRAME_HIGHLIGHT_COLOR
#define MAX_ROSTER_COUNT 8
#define MAX_TEAMMATE_COUNT 4
#define MAX_SKIN_COUNT 16
// MSL 5.05
#define MAX_DECAL_COUNT 17
#define DO_VIRTUAL_TEST 0
#define USE_ALLOWED_MECHS 1
// MSL ADD MECH
#define MAX_ALLOWED_MECHS 53
// Max Allowed Mech = 53
#define VAR_LIST_HEIGHT 20
#define HEADER_TITLE_Y 56
#define ROSTER_DISPLAY_COUNT 8
#define ROSTER_START_X 440
#define ROSTER_START_Y 80
#define ROSTER_GAP2 3
#define ROSTER_HEIGHT ((VAR_LIST_HEIGHT * 2) + (ROSTER_GAP2 * 3))
#define ROSTER_OFFS1 (ROSTER_GAP2)
#define ROSTER_OFFS2 (ROSTER_HEIGHT - ROSTER_GAP2 - VAR_LIST_HEIGHT)
#define TESLA_STATUS_X 15//40
#define TESLA_STATUS_WIDTH 19
#define TESLA_STATUS_HEIGHT 19
#define BOT_LIST_X 50//75
#define BOT_LIST_WIDTH 120
#define PLAYER_EDIT_WIDTH 136
#define PRINT_TEXT_X 218//243 // Pod status
#if USE_O_MECH_VARIANT2
#define MECH_LIST_X 223
#define MECH_LIST_WIDTH 120
#define MECH_LIST_X2 243
#define MECH_LIST_WIDTH2 100
#define MECH_RAND_WIDTH (MECH_LIST_X2 - MECH_LIST_X)
#else // !USE_O_MECH_VARIANT2
#define MECH_LIST_X 218//243 // 223
#define MECH_LIST_WIDTH 100 // 120
//#define MECH_LIST_X2 243
//#define MECH_LIST_WIDTH2 100
#define MECH_RAND_WIDTH 20 // (MECH_LIST_X2 - MECH_LIST_X)
#endif // USE_O_MECH_VARIANT2
// MSL 5.05
#define DECAL_LIST_X 405 // Header
#define DECAL_BOX_SIZE 32
#define DECAL_BOX_X 400 // Image
#define DECAL_SIZE_X 24
#define DECAL_SIZE_Y 16
#define DECAL_X 441 // Dropdown list
#define SKIN_BOX_SIZE 32
#define SKIN_BOX_X 375//400 Image
#define SKIN_SIZE_X 24
#define SKIN_SIZE_Y 16
#define SKIN_X 376//370 // Dropdown list
#define TEAM_SIZE_X 16
#define TEAM_SIZE_Y 16
#define TEAM_X 374
#define CAM_STATUS_Y ((ROSTER_START_Y + ROSTER_HEIGHT * ROSTER_DISPLAY_COUNT) + 12)
#define CAM_DISPLAY_COUNT 3
#define DIVIDER_Y1 (HEADER_TITLE_Y + 20)
#define DIVIDER_Y2 (ROSTER_START_Y + ROSTER_HEIGHT * ROSTER_DISPLAY_COUNT + 3)
#define DISP_PLAYERS_X BOT_LIST_X
#define DISP_PLAYERS_Y (CAM_STATUS_Y + VAR_LIST_HEIGHT + 8)
#define ERROR_STRING_X 40 // MECH_LIST_X2
#define ERROR_STRING_X2 550
#define ERROR_STRING_Y 525
#define ERROR_STRING_Y2 (525 + 41) // see o_launch_button
#define MAX_SLOT_ITEMS 5 // bot-type, edit-field, mech-type, team/camo, decal
#define MAIL_ROSTER_LIST_MAXDISPLAY 19999
#define MAIL_ROSTER_LIST_CHANGED 20000
#define MAIL_PLAYER_TYPE_CHANGED 20001
#define MAIL_RESET_AFTER_LAUNCH 20002
#define MAIL_REMOVE_ALL_BOTS 20003
#define MAIL_CHANGE_LAUNCH_STATE 20004
#define MAIL_GET_SLOTTYPE 20005 // cur-row, return: 0: none, +1: user, +2: bot, 3: currently used
#define MAIL_PROCESS_TABEVENT 20006 // slot_item-index, dir(-1,+1)
#define MAIL_POSSIBLE_TABEVENT 20007 // row, slottype, item_index
#define MAIL_SET_ROOKIE_MISSION -1111 // sync with conlobby.script
#define MAIL_SET_ROOKIE_MISSION_PARAMS -3333 // sync with conlobby.script
#define MAIL_PREVIOUS_MISSION -2222
#define MAIL_RECORD_MISSION -4444
#define MAIL_PREVIOUS_MISSION_PARAMS -5555
main
{
GUI_CREATE
{
int nInterErrorCount = 0
int nVritual = DO_VIRTUAL_TEST
int mLauncherConnection // 0: no connection, +1: connection, -1: connecting
int mConnection2 // 0: no connection, +1: connection, -1: connecting
int mApplType
int mApplState
int mGameState
int mGameTime
int mGameIsServer
int nInitialRookieMission = 1 // initially, set rookie mission
int nLaunchState = 0
// 0 - not validated, 1: validated, 2: preparing loading, 3: loading, 4: loaded(before launch), 5: launching
// -1 : network map is not initiated
// -2 : total team count exceed
// -3 : team player count exceed
// -4 : no tesla player
// -5 : Player state error
// -6 : Player name is invalid
// -7 : Player-count exceeds maximum(16)
//Makes the connection to the string table .dll
//Requires the #include "Content\\ShellScripts\\ScriptStrings.h" in every script with localizable text
setresource("ScriptStrings.dll")
font3d boldfont = FPATH localize$(IDS_F_ML_DATA)
font3d regfont = FPATH localize$(IDS_F_ML_LABEL)
string null_string // null string
null_string = ""
string launch_states[6]
launch_states[0] = "LOAD"
launch_states[1] = "LOAD"
launch_states[2] = "Preparing..."
launch_states[3] = "LOADING..."
launch_states[4] = "LAUNCH"
launch_states[5] = "LAUNCHING..."
// object o_interlace = interlace
// o_interlace.location = 0, 0, 10
// o_interlace.lace_color = packcolor (100, 150, 255, 175)
object o_frame = frame
o_frame.type = 0
o_frame.location = 0, 0, 100
// MSL Version
o_frame.screen_name = "BattleTech Console V5.05" // localize$(IDS_MP_LOBBY_GAME_LOBBY)
initialize(o_frame)
int team_camo[16] // team_camo[selected team number] is skin number(0..36)...
team_camo[0] = 0 // blue
team_camo[1] = 1 // red
team_camo[2] = 2 // yellow
team_camo[3] = 3 // Green
team_camo[4] = 4 // Purple
team_camo[5] = 5 // Light Blue
team_camo[6] = 6 // Orange
team_camo[7] = 7 // charcoal
team_camo[8] = 15 //
team_camo[9] = 19 //
team_camo[10] = 26 //
team_camo[11] = 23 //
team_camo[12] = 28 //
team_camo[13] = 30 //
team_camo[14] = 36 //
team_camo[15] = 37 //
int team_decal[17] // team_decal[selected team number] is decal number(0..63)...
team_decal[0] = 3 // Steiner
team_decal[1] = 4 // Kurita
team_decal[2] = 2 // Davion
team_decal[3] = 5 // Liao
team_decal[4] = 6 // Marik
team_decal[5] = 9 // Comstar
team_decal[6] = 50 // VGL
team_decal[7] = 10 // Star League
team_decal[8] = 11 // Wolf
team_decal[9] = 12 // Falcon
team_decal[10] = 16 // Ghost Bear
team_decal[11] = 20 // Hell Horses
team_decal[12] = 21 // Coyote
team_decal[13] = 22 // Blood Spirit
team_decal[14] = 24 // Ice Hellion
team_decal[15] = 27 // Goliath Scorpian
team_decal[16] = 48 // 331st
int ffa_decal[37] // ffa_decal[selected skin number] is decal number(0..63)...
// currently, these values is useless... just for later usage
ffa_decal[0] = 3
ffa_decal[1] = 4
ffa_decal[2] = 2
ffa_decal[3] = 5
ffa_decal[4] = 6
ffa_decal[5] = 9
ffa_decal[6] = 50
ffa_decal[7] = 10
ffa_decal[8] = 11 // Wolf
ffa_decal[9] = 12 // Falcon
ffa_decal[10] = 16 // Ghost Bears
ffa_decal[11] = 20 // Hell Horses
ffa_decal[12] = 21 // Coyote
ffa_decal[13] = 22 // Blood Spirit
ffa_decal[14] = 24 // Ice Hellion
ffa_decal[15] = 27 // Goliath Scorpion
ffa_decal[16] = 48 // 331st
ffa_decal[17] = 0 // below will not used, because "o_skins[x].list_size = 16"
//ffa_decal[18-36] = ...
int drop_count_mech[ROSTER_DISPLAY_COUNT]
drop_count_mech[0] = 21
drop_count_mech[1] = 21
drop_count_mech[2] = 20
drop_count_mech[3] = 17
drop_count_mech[4] = 14
drop_count_mech[5] = 12
drop_count_mech[6] = 9
drop_count_mech[7] = 7
int drop_count_skin[ROSTER_DISPLAY_COUNT]
drop_count_skin[0] = 21
drop_count_skin[1] = 21
drop_count_skin[2] = 20
drop_count_skin[3] = 17
drop_count_skin[4] = 14
drop_count_skin[5] = 12
drop_count_skin[6] = 9
drop_count_skin[7] = 7
int drop_count_decal[ROSTER_DISPLAY_COUNT]
drop_count_decal[0] = 21
drop_count_decal[1] = 21
drop_count_decal[2] = 20
drop_count_decal[3] = 17
drop_count_decal[4] = 14
drop_count_decal[5] = 12
drop_count_decal[6] = 9
drop_count_decal[7] = 7
int night_parameter = NIGHT_TIME_PARAMETER
int num_of_teams = TEAM_COUNT_PARAMETER
int team_param = TEAM_PARAMETER
int team_max_plyrs = TEAM_MAX_PLAYERS
int teamskin = TEAM_SKIN
int teamdecal = TEAM_DECAL
int k
int x
callback($$CTCL_SetCDSP$$) // CTCL_SetConDefaultSeerverParameters
//do not delete
int game_type = RULE_TYPE_PARAMETER
int cur_game_type = callback($$GetLocalNetworkMissionParamater$$, game_type)
int team_allowed = TEAM_ALLOWED_PARAMETER
int cur_team_val
int cur_team_count[8]
cur_team_val = callback($$CTCL_GetTeamParams$$, cur_team_count[0])
int skin_id ///////VERY IMPORTANT FOR NEW SKIN INTERFACE
int skin_ids[17]
int update_skin = false
// MSL 5.05
int decal_id ///////VERY IMPORTANT FOR NEW DECAL INTERFACE
int decal_ids[18]
int update_decal = false
int ROSTER_top_of_list = 0
int block_launch_or_ready = FALSE
int MAX_ITEMS = 60
int MAX_MC_ITEMS = 30 //MAXIMUM NUMBER OF ITEMS LISTED
int MAX_MC_COLUMNS = 1
int MAX_MCCB_ITEMS = 30
int MAX_MCCB_COLUMNS = 2
/////////////////////////////////////////////////////////////////////////////
/////////Tesla Interface - CTCL
////////////////////////////////////////////////////////////////////////////
int MAXTESLA = callback($$CTCL_Get$$, _CTCL_GetTeslaCountAll)
int MAXTESLA_P = callback($$CTCL_Get$$, _CTCL_GetTeslaCount)
int nRosterCount
if (MAX_ROSTER_COUNT < MAXTESLA_P)
nRosterCount = MAXTESLA_P
else
nRosterCount = MAX_ROSTER_COUNT
string m_aTeslaName[MAXTESLA]
int nTeslaIndex
for nTeslaIndex = 0; nTeslaIndex < MAXTESLA; nTeslaIndex++
{
m_aTeslaName[nTeslaIndex] = " " // important
callback($$CTCL_Get$$, _CTCL_GetTeslaName, nTeslaIndex, m_aTeslaName[nTeslaIndex])
}
/////////////////////////////////////////////////////////////////////////////
/////////BOT STATUS BUTTON LISTBOX
////////////////////////////////////////////////////////////////////////////
object o_status_droplist = s_mc_listbox
o_status_droplist.location = 100,100,10000
o_status_droplist.boxFont3d = FPATH localize$(IDS_F_ML_LABEL) //MUST BE INITIALIZED
o_status_droplist.itemWidth = 100 //MUST BE INITIALIZED
o_status_droplist.itemHeight = 1 //This refers to the height of a step (or scroll distance in pixels) defined by you. NOT the height of all items
o_status_droplist.itemHeight_padding = 1 // 4//10
o_status_droplist.list_size = 4 //MAX_MCCB_ITEMS
o_status_droplist.NUM_OF_COLUMNS = 1
o_status_droplist.column_header_height = 0 //MUST BE INITIALIZED
o_status_droplist.max_displayed = 50 //30 // max number of itemheight's. maz_displayed*itemheight = height of listbox //MUST BE INITIALIZED
o_status_droplist.uniform_item_height = VAR_LIST_HEIGHT
o_status_droplist.backColor = packcolor (0, 0, 0, 255) //CAN BE INITIALIZED
o_status_droplist.label = "" //CAN BE INITIALIZED
o_status_droplist.labelFont3d = FPATH localize$(IDS_F_ML_LABEL) //CAN BE INITIALIZED
o_status_droplist.offsetLabel = 0,-18 //CAN BE INITIALIZED offsetLabel of text from button = 0,-25
o_status_droplist.buttonwidth = 16 //CAN BE INITIALIZED
o_status_droplist.first_delay = 10 //time delay value n/60; for the buttons
o_status_droplist.second_delay = 1 //time delay value n/60; for the buttons
o_status_droplist.column[0].location.x = 3
o_status_droplist.column[0].fontcolor = packcolor (255,255,255,255)
o_status_droplist.column[0].fontAlignment = just_left
o_status_droplist.nselected = 4
int greatest_x = 0
int greatest_y = 0
for k = 0; k < o_status_droplist.list_size; k++
{
if exists(o_status_droplist.column[0].list_icon[k])
{
if getwidth(o_status_droplist.column[0].list_icon[k]) > greatest_x
greatest_x = getwidth(o_status_droplist.column[0].list_icon[k])
if getheight(o_status_droplist.column[0].list_icon[k]) > greatest_y
greatest_y = getheight(o_status_droplist.column[0].list_icon[k])
}
}
if greatest_x > 0 && greatest_y > 0
bitmap_create black = greatest_x,greatest_y //comment out if you don't have any images
for k = 0;k < MAX_MCCB_ITEMS; k++
{
o_status_droplist.list_order[k] = k
}
o_status_droplist.column[0].list_item[0] = "Load/Kill" // localize$(IDS_MP_LOBBY_KICK_OUT)
o_status_droplist.column[0].list_item[1] = "Shutdown" // localize$(IDS_MP_LOBBY_CANCEL)
o_status_droplist.column[0].list_item[2] = "Reboot" // localize$(IDS_MP_LOBBY_CANCEL)
o_status_droplist.column[0].list_item[3] = "Cancel" // localize$(IDS_MP_LOBBY_CANCEL)
initialize (o_status_droplist)
deactivate (o_status_droplist)
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////ADD BOT LISTBOX
////////////////////////////////////////////////////////////////////////////
object o_add_bot_droplist = s_mc_listbox
o_add_bot_droplist.location = 100,100,200
o_add_bot_droplist.boxFont3d = FONT_LIST_BOX
o_add_bot_droplist.itemWidth = 100 //MUST BE INITIALIZED
o_add_bot_droplist.itemHeight = 1 //This refers to the height of a step (or scroll distance in pixels) defined by you. NOT the height of all items
o_add_bot_droplist.itemHeight_padding = 4//10
o_add_bot_droplist.list_size = 2 //MAX_MCCB_ITEMS
o_add_bot_droplist.NUM_OF_COLUMNS = 1
o_add_bot_droplist.column_header_height = 0 //MUST BE INITIALIZED
o_add_bot_droplist.max_displayed = 40//30 // max number of itemheight's. maz_displayed*itemheight = height of listbox //MUST BE INITIALIZED
o_add_bot_droplist.uniform_item_height = 0
o_add_bot_droplist.backColor = packcolor (0, 0, 0, 255) //CAN BE INITIALIZED
o_add_bot_droplist.label = "" //CAN BE INITIALIZED
o_add_bot_droplist.labelFont3d = FONT_LIST_LABEL
o_add_bot_droplist.offsetLabel = 0,-18 //CAN BE INITIALIZED offsetLabel of text from button = 0,-25
o_add_bot_droplist.buttonwidth = 16 //CAN BE INITIALIZED
o_add_bot_droplist.first_delay = 10 //time delay value n/60; for the buttons
o_add_bot_droplist.second_delay = 1 //time delay value n/60; for the buttons
o_add_bot_droplist.column[0].location.x = 3
o_add_bot_droplist.column[0].fontcolor = packcolor (255,255,255,255)
o_add_bot_droplist.column[0].fontAlignment = just_left
o_add_bot_droplist.nselected = 3
greatest_x = 0
greatest_y = 0
for k = 0; k < o_add_bot_droplist.list_size; k++
{
if exists(o_add_bot_droplist.column[0].list_icon[k])
{
if getwidth(o_add_bot_droplist.column[0].list_icon[k]) > greatest_x
greatest_x = getwidth(o_add_bot_droplist.column[0].list_icon[k])
if getheight(o_add_bot_droplist.column[0].list_icon[k]) > greatest_y
greatest_y = getheight(o_add_bot_droplist.column[0].list_icon[k])
}
}
if greatest_x > 0 && greatest_y > 0
black = greatest_x,greatest_y //comment out if you don't have any images
for k = 0;k < MAX_MCCB_ITEMS; k++
{
o_add_bot_droplist.list_order[k] = k
}
o_add_bot_droplist.column[0].list_item[0] = localize$(IDS_MP_LOBBY_ADD_BOT)
o_add_bot_droplist.column[0].list_item[1] = localize$(IDS_MP_LOBBY_CANCEL)
initialize (o_add_bot_droplist)
deactivate (o_add_bot_droplist)
///////////////////////////////////////////////////////////////////////////////
///---------holds faction name for scroll list
string faction_name[17]
callback($$Shell_CallbackHandler$$, ShellInitMPScreen)
//this is your list of mechs to choose from
string mech[$$m_mechCount$$]
int stock_id[$$m_mechCount$$]
int stock_array[$$m_mechCount$$ + 1]
int allowed_mechs[MAX_ALLOWED_MECHS]
callback($$Shell_CallbackHandler$$, ShellDataGetMechs ,mech[], stock_id[])
if (USE_ALLOWED_MECHS)
{
// MSL ADD MECH
allowed_mechs[0] = 0 // Arctic Wolf
allowed_mechs[1] = 1 // Ares
allowed_mechs[2] = 2 // Argus
allowed_mechs[3] = 3 // Atlas
allowed_mechs[4] = 4 // Awesome
allowed_mechs[5] = 5 // Black Knight
allowed_mechs[6] = 6 // Black Lanner
allowed_mechs[7] = 7 // Brigand
allowed_mechs[8] = 8 // Bushwacker
allowed_mechs[9] = 9 // Catapult
allowed_mechs[10] = 10 // CauldronBorn
allowed_mechs[11] = 11 // Chimera
allowed_mechs[12] = 12 // Commando
allowed_mechs[13] = 13 // Cougar
allowed_mechs[14] = 14 // Cyclops
allowed_mechs[15] = 15 // Daishi
allowed_mechs[16] = 16 // Deimos
allowed_mechs[17] = 17 // Dragon
allowed_mechs[18] = 18 // Fafnir
allowed_mechs[19] = 19 // Flea
allowed_mechs[20] = 20 // Gladiator
allowed_mechs[21] = 21 // Grizzly
allowed_mechs[22] = 22 // Hauptmann
allowed_mechs[23] = 23 // Hellhound
allowed_mechs[24] = 24 // Hellspawn
allowed_mechs[25] = 25 // Highlander
allowed_mechs[26] = 26 // Hollander II
allowed_mechs[27] = 27 // Hunchback
allowed_mechs[28] = 28 // Kodiak
allowed_mechs[29] = 29 // Loki
allowed_mechs[30] = 30 // Longbow
allowed_mechs[31] = 31 // Madcat
allowed_mechs[32] = 32 // Madcat Mk II
allowed_mechs[33] = 33 // Masakari
allowed_mechs[34] = 34 // Mauler
allowed_mechs[35] = 35 // Novacat
allowed_mechs[36] = 36 // Osiris
allowed_mechs[37] = 37 // Owens
allowed_mechs[38] = 38 // Puma
allowed_mechs[39] = 39 // Raven
allowed_mechs[40] = 40 // Ryoken
allowed_mechs[41] = 41 // Shadowcat
allowed_mechs[42] = 42 // Solitaire
allowed_mechs[43] = 43 // Sunder
allowed_mechs[44] = 44 // Templar
allowed_mechs[45] = 45 // Thanatos
allowed_mechs[46] = 46 // Thor
allowed_mechs[47] = 47 // Uller
allowed_mechs[48] = 48 // Uziel
allowed_mechs[49] = 49 // Victor
allowed_mechs[50] = 50 // Vulture
allowed_mechs[51] = 51 // Wolfhound
allowed_mechs[52] = 52 // Zeus
}
string mech2[$$m_mechCount$$]
int variant_step = 0
int stock_len = 0
for (k = 0; k < $$m_mechCount$$; k++)
{
if (stock_id[k] == 1)
{
//if (k == 0) // Cameraship is already excluded
// mech2[k] = mech[k]
//else
mech2[k] = localize$(IDS_MP_LOBBY_STOCK)
stock_len = length$(mech[k]) + 1
stock_array[variant_step] = k
variant_step++
}
else
{
mech2[k] = right$(mech[k], length$(mech[k]) - stock_len)
}
}
stock_array[variant_step] = k
font3d gFont3d = FPATH localize$(IDS_F_ML_LABEL)
pane droplist_button = WPATH "DropList_arrowdown.tga"
alphamode (droplist_button) = am_alpha_oneone
pane down_arrow = WPATH "iagndownarrow.tga"
alphamode (down_arrow) = am_alpha_oneone
sound press = SPATH "sfx_button5.wav"
sound launchSound = SPATH "sfx_mech_explode.WAV"
// region = 0,0 to 10,10
font3d screen_font = FPATH localize$(IDS_F_ML_LABEL)
int valid_player
int team_legal_to_join[9] // needed for dropdowns on team selections
team_legal_to_join[8] = TRUE
int update_team = 0
int max_players = 16
int player_num = 0
// int num_of_teams = 8
int mech_id
int name_color[17]
int lupe
for lupe = 0; lupe < nRosterCount;lupe++
{
name_color[lupe]= packcolor(255,255,255,255)
}
callback($$InitNetworkScenarios$$)
object o_display_num_of_players = display_num_of_players
o_display_num_of_players.location = DISP_PLAYERS_X,DISP_PLAYERS_Y,10
object o_launch_button = s_multistatepane
o_launch_button.total_states = 3
o_launch_button.textsize = 1
o_launch_button.text = "LOAD" // localize$(IDS_MP_LOBBY_LAUNCH)
o_launch_button.file = WPATH "button_main_200x41_3state.tga"
o_launch_button.location = 570, 525, o_frame.location.z + 1
o_launch_button.state = 2 // MSL
initialize(o_launch_button)
player_num = -1
object o_BotList[17]
object o_BotList_bu[17]
int m_naLastSelected[17]
for x = 0; x < nRosterCount; x++
{
m_naLastSelected[x] = 0
}
object o_Editbox[17]
object o_print_text[17]
object o_mech_variant[17]
object o_mech_variant_bu[17]
#if USE_O_MECH_VARIANT2
object o_mech_variant2[17]
#endif // USE_O_MECH_VARIANT2
object o_mech_rand[17]
object o_skins[17]
object o_skins_bu[17]
// MSL 5.05
object o_decal[18]
object o_decal_bu[18]
object o_team[18]
object o_team_bu[18]
object o_decal_box[18]
object o_skin_box[18]
object o_status[18]
int roster_posy[18]
int coolbaby
int stock_size = 0
int last_mech = 0
int last_count = 0
int mech_selected = 0
int stock_mech_selected = 0
#if USE_O_MECH_VARIANT2
int variant_mech_selected = 0
#endif // USE_O_MECH_VARIANT2
for x = 0; x < nRosterCount; x++
{
roster_posy[x] = ROSTER_START_Y+(x*ROSTER_HEIGHT)//84+(x*44)
o_status[x] = status_control
#if USE_O_MECH_VARIANT2
o_status[x].location = TESLA_STATUS_X,roster_posy[x] + (ROSTER_HEIGHT - TESLA_STATUS_HEIGHT) / 2,5
#else // !USE_O_MECH_VARIANT2
o_status[x].location = TESLA_STATUS_X,roster_posy[x] + ROSTER_OFFS1,5
#endif // USE_O_MECH_VARIANT2
o_status[x].file = GPATH "multiplayer\\5state_lobby_status.tga"
o_status[x].total_states = 5
o_status[x].id = x
if (x < MAXTESLA_P) // tesla
o_status[x].state = 0
else
o_status[x].state = 3
initialize (o_status[x])
if (x < ROSTER_DISPLAY_COUNT)
activate (o_status[x])
else
deactivate (o_status[x])
MAX_ITEMS = 11 // 1(blank) 1(tesla) 9
o_BotList[x] = s_droplistbox
// MSL 5.02
o_BotList_bu[x] = s_droplistbox
MAX_ITEMS = 60
o_BotList[x].location = BOT_LIST_X,roster_posy[x] + ROSTER_OFFS1,10*((35-x)+1)
o_BotList[x].label = ""
o_BotList[x].itemWidth = BOT_LIST_WIDTH
if (x < ROSTER_DISPLAY_COUNT)
o_BotList[x].max_displayed = drop_count_mech[x]
else
o_BotList[x].max_displayed = 16
o_BotList[x].boxFont3d = FONT_LIST_BOX
o_BotList[x].backColor = packcolor (0, 0, 0, 255)
o_BotList[x].boxTextColor = packcolor (255, 255, 255, 255)
o_BotList[x].boxTextSelectedColor = packcolor (125, 125, 125, 255)
o_BotList[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_BotList[x].boxhighlightColor = packcolor (50, 120, 255, 200)
o_BotList[x].ItemHighlightColor = packcolor (0, 0, 0, 255)
o_BotList[x].selectedColor = packcolor (120, 120, 255, 150)
o_BotList[x].labelTextColor = packcolor (255, 255, 255, 255)
o_BotList[x].borderColor = packcolor (255, 255, 255, 255)
o_BotList[x].itemHeight = VAR_LIST_HEIGHT
o_BotList[x].labelFont3d = FONT_LIST_LABEL
o_BotList[x].offsetLabel = 0,0
o_BotList[x].arrowHeight = 15
nTeslaIndex = 0
o_BotList[x].list_item[nTeslaIndex++] = ""
if (x < MAXTESLA_P)
{
o_BotList[x].list_item[nTeslaIndex++] = TESLA_PREFIX m_aTeslaName[x] TESLA_POSTFIX
}
o_BotList[x].list_item[nTeslaIndex++] = "Target Practice"
o_BotList[x].list_item[nTeslaIndex++] = "Rookie - 2"
o_BotList[x].list_item[nTeslaIndex++] = "Regular - 3"
o_BotList[x].list_item[nTeslaIndex++] = "Regular - 4"
o_BotList[x].list_item[nTeslaIndex++] = "Regular - 5"
o_BotList[x].list_item[nTeslaIndex++] = "Veteran - 6"
o_BotList[x].list_item[nTeslaIndex++] = "Veteran - 7"
o_BotList[x].list_item[nTeslaIndex++] = "Expert - 8"
o_BotList[x].list_item[nTeslaIndex++] = "Expert - 9"
// MSL 5.02
o_BotList_bu[x].nselected = 0
o_BotList[x].nselected = 0
o_BotList[x].list_size = nTeslaIndex
initialize(o_BotList[x])
if (x < ROSTER_DISPLAY_COUNT)
activate(o_BotList[x])
else
deactivate(o_BotList[x])
o_Editbox[x] = s_editbox
o_Editbox[x].location = BOT_LIST_X, roster_posy[x] + ROSTER_OFFS2, 10
o_Editbox[x].boxWidth = PLAYER_EDIT_WIDTH
o_Editbox[x].boxHeight = VAR_LIST_HEIGHT
o_Editbox[x].boxFont3D = FONT_EDIT_BOX
o_Editbox[x].labelFont3D = szPATH_FONTS localize$(IDS_F_GEN_LABEL)
//o_Editbox[x].label = localize$(IDS_MP_BOT_NAME)
o_Editbox[x].boxTextOffset = 5, 3
o_Editbox[x].offset = 0, -15
o_Editbox[x].boxtextlimit = 16
o_Editbox[x].Auto_Update = false
o_Editbox[x].disable_forward_slash = true
o_Editbox[x].bl_noEdit = false
initialize(o_Editbox[x])
deactivate(o_Editbox[x])
o_print_text[x] = s_print_text
o_print_text[x].location = PRINT_TEXT_X,roster_posy[x] + ROSTER_OFFS2,5
o_print_text[x].id = x
o_print_text[x].text_font = FPATH localize$(IDS_F_ML_LABEL)
o_print_text[x].text_color = packcolor(255,255,255,255)
if (x < ROSTER_DISPLAY_COUNT)
activate(o_print_text[x])
else
deactivate(o_print_text[x])
MAX_ITEMS = $$m_mechCount$$
o_mech_variant[x] = s_droplistbox_mech
// MSL 5.02
o_mech_variant_bu[x] = s_droplistbox_mech
MAX_ITEMS = 60
o_mech_variant[x].location = MECH_LIST_X,roster_posy[x] + ROSTER_OFFS1,10*((35-x)+1)
o_mech_variant[x].label = ""
o_mech_variant[x].itemWidth = MECH_LIST_WIDTH
if (x < ROSTER_DISPLAY_COUNT)
o_mech_variant[x].max_displayed = drop_count_mech[x]
else
o_mech_variant[x].max_displayed = 16
o_mech_variant[x].boxFont3d = FONT_LIST_BOX
o_mech_variant[x].backColor = packcolor (0, 0, 0, 255)
o_mech_variant[x].boxTextColor = packcolor (255, 255, 255, 255)
o_mech_variant[x].boxTextSelectedColor = packcolor (125, 125, 125, 255)
o_mech_variant[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_mech_variant[x].boxhighlightColor = packcolor (50, 120, 255, 200)
o_mech_variant[x].ItemHighlightColor = packcolor (0, 0, 0, 255)
o_mech_variant[x].selectedColor = packcolor (120, 120, 255, 150)
o_mech_variant[x].labelTextColor = packcolor (255, 255, 0, 255)
o_mech_variant[x].borderColor = packcolor (255, 255, 255, 255)
o_mech_variant[x].itemHeight = VAR_LIST_HEIGHT
o_mech_variant[x].labelFont3d = FONT_LIST_LABEL
o_mech_variant[x].offsetLabel = 0,0
o_mech_variant[x].arrowHeight = 15
stock_size = 0
if (USE_ALLOWED_MECHS)
{
for k = 0; k < MAX_ALLOWED_MECHS; k++
{
o_mech_variant[x].list_item[stock_size] = mech[stock_array[allowed_mechs[k]]]
stock_size++
}
}
else
{
for k = 0; k < $$m_mechCount$$; k++
{
if (stock_id[k] == 1)
{
o_mech_variant[x].list_item[stock_size] = mech[k]
stock_size++
}
}
}
o_mech_variant[x].list_size = stock_size
#if USE_O_MECH_VARIANT2
MAX_ITEMS = $$m_mechCount$$
o_mech_variant2[x] = s_droplistbox_mech
MAX_ITEMS = 60
o_mech_variant2[x].location = MECH_LIST_X2,roster_posy[x] + ROSTER_OFFS2,10*((35-x)+1) - 4
o_mech_variant2[x].label = ""
o_mech_variant2[x].itemWidth = MECH_LIST_WIDTH2
if (x < ROSTER_DISPLAY_COUNT)
o_mech_variant2[x].max_displayed = drop_count_mech[x] - 1
else
o_mech_variant2[x].max_displayed = 16
o_mech_variant2[x].boxFont3d = FONT_LIST_BOX
o_mech_variant2[x].backColor = packcolor (0, 0, 0, 255)
o_mech_variant2[x].boxTextColor = packcolor (255, 255, 255, 255)
o_mech_variant2[x].boxTextSelectedColor = packcolor (125, 125, 125, 255)
o_mech_variant2[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_mech_variant2[x].boxhighlightColor = packcolor (50, 120, 255, 200)
o_mech_variant2[x].ItemHighlightColor = packcolor (0, 0, 0, 255)
o_mech_variant2[x].selectedColor = packcolor (120, 120, 255, 150)
o_mech_variant2[x].labelTextColor = packcolor (255, 255, 255, 255)
o_mech_variant2[x].borderColor = packcolor (255, 255, 255, 255)
o_mech_variant2[x].itemHeight = VAR_LIST_HEIGHT
o_mech_variant2[x].labelFont3d = FONT_LIST_LABEL
o_mech_variant2[x].offsetLabel = 0,0
o_mech_variant2[x].arrowHeight = 15
#endif // USE_O_MECH_VARIANT2
last_mech = 0
if (USE_ALLOWED_MECHS)
{
stock_mech_selected = allowed_mechs[last_mech]
}
else
{
stock_mech_selected = last_mech
}
last_count = stock_array[stock_mech_selected]
#if USE_O_MECH_VARIANT2
o_mech_variant2[x].list_size = 0
do
{
o_mech_variant2[x].list_item[o_mech_variant2[x].list_size] = mech2[last_count]
o_mech_variant2[x].list_size++
last_count++
if (last_count == $$m_MechCount$$)
break
}
while (stock_id[last_count] != 1)
o_mech_variant[x].nselected = last_mech
o_mech_variant2[x].nselected = 0
#endif // USE_O_MECH_VARIANT2
initialize(o_mech_variant[x])
if (x < ROSTER_DISPLAY_COUNT)
activate(o_mech_variant[x])
else
deactivate(o_mech_variant[x])
#if USE_O_MECH_VARIANT2
initialize(o_mech_variant2[x])
if (x < ROSTER_DISPLAY_COUNT)
activate(o_mech_variant2[x])
else
deactivate(o_mech_variant2[x])
#endif // USE_O_MECH_VARIANT2
o_mech_rand[x] = mech_randomizer
o_mech_rand[x].id = x
#if USE_O_MECH_VARIANT2
o_mech_rand[x].location = MECH_LIST_X, roster_posy[x] + ROSTER_OFFS2,10*((35-x)+1) - 4
#else // !USE_O_MECH_VARIANT2
o_mech_rand[x].location = MECH_LIST_X - MECH_RAND_WIDTH, roster_posy[x] + ROSTER_OFFS1,10*((35-x)+1) - 4
#endif // USE_O_MECH_VARIANT2
o_mech_rand[x].itemWidth = MECH_RAND_WIDTH
o_mech_rand[x].itemHeight = VAR_LIST_HEIGHT
initialize(o_mech_rand[x])
if (x < ROSTER_DISPLAY_COUNT)
activate(o_mech_rand[x])
else
deactivate(o_mech_rand[x])
//------------------------------------------------------------------------------------------------------------
o_decal[x] = s_droplistbox_skins
o_decal_bu[x] = s_droplistbox_skins
o_decal[x].location = DECAL_X,(roster_posy[x] + (ROSTER_HEIGHT - DECAL_SIZE_Y) / 2)-3,5*((25-x)+1)
o_decal[x].list_size = MAX_DECAL_COUNT // MSL - Changed from 36
o_decal[x].label = ""
o_decal[x].itemWidth = DECAL_SIZE_X // +65
if (x < ROSTER_DISPLAY_COUNT)
o_decal[x].max_displayed = drop_count_decal[x]
else
o_decal[x].max_displayed = 17
o_decal[x].boxFont3d = DECAL_LIST_BOX
o_decal[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_decal[x].itemHeight = DECAL_SIZE_Y
o_decal[x].labelFont3d = DECAL_LIST_LABEL
o_decal[x].offsetLabel = 0,0
o_decal[x].arrowHeight = 15
o_decal[x].id = x
// o_decal[x].list_item[0] = "STIENER"
// o_decal[x].list_item[1] = "KURITA"
// o_decal[x].list_item[2] = "DAVION"
// o_decal[x].list_item[3] = "LIAO"
// o_decal[x].list_item[4] = "MARIK"
// o_decal[x].list_item[5] = "COMSTAR"
// o_decal[x].list_item[6] = "VGL"
// o_decal[x].list_item[7] = "LEAGUE"
// o_decal[x].list_item[8] = "WOLF"
// o_decal[x].list_item[9] = "FALCON"
// o_decal[x].list_item[10] = "BEAR"
// o_decal[x].list_item[11] = "HORSES"
// o_decal[x].list_item[12] = "COYOTE"
// o_decal[x].list_item[13] = "SPIRIT"
// o_decal[x].list_item[14] = "HELLION"
// o_decal[x].list_item[15] = "SCORPION"
// o_decal[x].list_item[16] = "331st"
o_decal[x].list_item[0] = "1"
o_decal[x].list_item[1] = "2"
o_decal[x].list_item[2] = "3"
o_decal[x].list_item[3] = "4"
o_decal[x].list_item[4] = "5"
o_decal[x].list_item[5] = "6"
o_decal[x].list_item[6] = "7"
o_decal[x].list_item[7] = "8"
o_decal[x].list_item[8] = "9"
o_decal[x].list_item[9] = "10"
o_decal[x].list_item[10] = "11"
o_decal[x].list_item[11] = "12"
o_decal[x].list_item[12] = "13"
o_decal[x].list_item[13] = "14"
o_decal[x].list_item[14] = "15"
o_decal[x].list_item[15] = "16"
o_decal[x].list_item[16] = "17"
for coolbaby = 17;coolbaby < o_decal[x].list_size+1;coolbaby++
o_decal[x].list_item[coolbaby] = conv$(coolbaby+1)
o_decal[x].nselected = 3
decal_ids[x] = 1
initialize(o_decal[x])
//if (x < ROSTER_DISPLAY_COUNT) && !cur_team_val
// activate(o_decal[x])
//else
deactivate(o_decal[x])
//-----------------------------
o_skins[x] = s_droplistbox_skins
o_skins_bu[x] = s_droplistbox_skins
o_skins[x].location = SKIN_X,(roster_posy[x] + (ROSTER_HEIGHT - SKIN_SIZE_Y) / 2)-3,5*((25-x)+1)
o_skins[x].list_size = MAX_SKIN_COUNT // MSL - Changed from 36
o_skins[x].label = ""
o_skins[x].itemWidth = SKIN_SIZE_X // +65
if (x < ROSTER_DISPLAY_COUNT)
o_skins[x].max_displayed = drop_count_skin[x]
else
o_skins[x].max_displayed = 16
o_skins[x].boxFont3d = SKIN_LIST_BOX
o_skins[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_skins[x].itemHeight = SKIN_SIZE_Y
o_skins[x].labelFont3d = SKIN_LIST_LABEL
o_skins[x].offsetLabel = 0,0
o_skins[x].arrowHeight = 15
o_skins[x].id = x
// o_skins[x].list_item[0] = "STIENER"
// o_skins[x].list_item[1] = "KURITA"
// o_skins[x].list_item[2] = "DAVION"
// o_skins[x].list_item[3] = "LIAO"
// o_skins[x].list_item[4] = "MARIK"
// o_skins[x].list_item[5] = "COMSTAR"
// o_skins[x].list_item[6] = "VGL"
// o_skins[x].list_item[7] = "LEAGUE"
// o_skins[x].list_item[8] = "WOLF"
// o_skins[x].list_item[9] = "FALCON"
// o_skins[x].list_item[10] = "BEAR"
// o_skins[x].list_item[11] = "HORSES"
// o_skins[x].list_item[12] = "COYOTE"
// o_skins[x].list_item[13] = "SPIRIT"
// o_skins[x].list_item[14] = "HELLION"
// o_skins[x].list_item[15] = "SCORPION"
o_skins[x].list_item[0] = "1"
o_skins[x].list_item[1] = "2"
o_skins[x].list_item[2] = "3"
o_skins[x].list_item[3] = "4"
o_skins[x].list_item[4] = "5"
o_skins[x].list_item[5] = "6"
o_skins[x].list_item[6] = "7"
o_skins[x].list_item[7] = "8"
o_skins[x].list_item[8] = "9"
o_skins[x].list_item[9] = "10"
o_skins[x].list_item[10] = "11"
o_skins[x].list_item[11] = "12"
o_skins[x].list_item[12] = "13"
o_skins[x].list_item[13] = "14"
o_skins[x].list_item[14] = "15"
o_skins[x].list_item[15] = "16"
for coolbaby = 16;coolbaby < o_skins[x].list_size+1;coolbaby++
o_skins[x].list_item[coolbaby] = conv$(coolbaby+1)
o_skins[x].nselected = 3
skin_ids[x] = 1
initialize(o_skins[x])
//if (x < ROSTER_DISPLAY_COUNT) && !cur_team_val
// activate(o_skins[x])
//else
deactivate(o_skins[x])
o_team[x] = s_droplistbox_skins
o_team_bu[x] = s_droplistbox_skins
o_team[x].dlb_type = 1
o_team[x].location = TEAM_X+2,(roster_posy[x] + (ROSTER_HEIGHT - TEAM_SIZE_Y) / 2)-3,5*((25-x)+1)
o_team[x].list_size = cur_team_val
o_team[x].label = ""
o_team[x].itemWidth = TEAM_SIZE_X
o_team[x].max_displayed = 16
o_team[x].boxFont3d = TEAM_LIST_BOX
o_team[x].frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_team[x].itemHeight = TEAM_SIZE_Y
o_team[x].labelFont3d = TEAM_LIST_LABEL
o_team[x].offsetLabel = 0,0
o_team[x].arrowHeight = 15
o_team[x].id = x
if !o_team[x].list_size
o_team[x].list_size = 1
o_team[x].list_item[0] = "1"
o_team[x].list_item[1] = "2"
o_team[x].list_item[2] = "3"
o_team[x].list_item[3] = "4"
o_team[x].list_item[4] = "5"
o_team[x].list_item[5] = "6"
o_team[x].list_item[6] = "7"
o_team[x].list_item[7] = "8"
o_team[x].nselected = 0//8
initialize(o_team[x])
if (x < ROSTER_DISPLAY_COUNT) && cur_team_val
activate(o_team[x])
else
deactivate(o_team[x])
o_skin_box[x] = skin_box
o_skin_box[x].location = SKIN_BOX_X-35,(roster_posy[x] + (ROSTER_HEIGHT - SKIN_BOX_SIZE) / 2)-3,5
o_skin_box[x].id = x
//if (x < ROSTER_DISPLAY_COUNT)
// activate(o_skin_box[x])
//else
deactivate(o_skin_box[x])
o_decal_box[x] = decal_box
o_decal_box[x].location = DECAL_BOX_X-35,(roster_posy[x] + (ROSTER_HEIGHT - DECAL_BOX_SIZE) / 2)-3,5
o_decal_box[x].id = x
// if (x < ROSTER_DISPLAY_COUNT)
// activate(o_decal_box[x])
// else
deactivate(o_decal_box[x])
}
object o_cam_status = status_control
o_cam_status.location = TESLA_STATUS_X, CAM_STATUS_Y,5
o_cam_status.file = GPATH "multiplayer\\5state_lobby_status.tga"
o_cam_status.total_states = 5
o_cam_status.id = -1
o_cam_status.state = 0
initialize (o_cam_status)
MAX_ITEMS = 1 + (MAXTESLA - MAXTESLA_P) // 1(blank) + (MAXTESLA - MAXTESLA_P)
object o_cam_list = s_droplistbox
MAX_ITEMS = 60
o_cam_list.location = BOT_LIST_X, CAM_STATUS_Y,10
o_cam_list.label = ""
o_cam_list.itemWidth = BOT_LIST_WIDTH
o_cam_list.max_displayed = CAM_DISPLAY_COUNT
o_cam_list.boxFont3d = FPATH localize$(IDS_F_ML_LABEL)
o_cam_list.backColor = packcolor (0, 0, 0, 255)
o_cam_list.boxTextColor = packcolor (255, 255, 255, 255)
o_cam_list.boxTextSelectedColor = packcolor (125, 125, 125, 255)
o_cam_list.frameHighlightColor = FRAME_HIGHLIGHT_COLOR // packcolor (255, 255, 255, 255)
o_cam_list.boxhighlightColor = packcolor (50, 120, 255, 200)
o_cam_list.ItemHighlightColor = packcolor (0, 0, 0, 255)
o_cam_list.selectedColor = packcolor (120, 120, 255, 150)
o_cam_list.labelTextColor = packcolor (255, 255, 255, 255)
o_cam_list.borderColor = packcolor (255, 255, 255, 255)
o_cam_list.itemHeight = VAR_LIST_HEIGHT
o_cam_list.labelFont3d = FPATH localize$(IDS_F_ML_LABEL)
o_cam_list.offsetLabel = 0,0
o_cam_list.arrowHeight = 15
nTeslaIndex = 0
o_cam_list.list_item[nTeslaIndex++] = ""
for x = MAXTESLA_P; x < MAXTESLA; x++
{
o_cam_list.list_item[nTeslaIndex++] = TESLA_PREFIX m_aTeslaName[x] TESLA_POSTFIX
}
o_cam_list.nselected = 0
o_cam_list.list_size = 1 + (MAXTESLA - MAXTESLA_P)
initialize(o_cam_list)
object o_cam_print_text = s_print_text
o_cam_print_text.location = PRINT_TEXT_X, CAM_STATUS_Y + 3,5
o_cam_print_text.id = -1
o_cam_print_text.text_font = FPATH localize$(IDS_F_ML_LABEL)
o_cam_print_text.text_color = packcolor(255,255,255,255)
activate(o_cam_print_text)
object o_reprint = s_multistatepane
o_reprint.total_states = 3
o_reprint.textsize = 1
o_reprint.text = "Reprint"
o_reprint.file = WPATH "button_reg_138x23m_3state.tga"
o_reprint.location = 627, 495, o_frame.location.z + 1
o_reprint.state = 0 // initially disabled
initialize(o_reprint)
o_reprint.state = 3
// MSL Added Recall button
object o_recall = s_multistatepane
o_recall.total_states = 3
o_recall.textsize = 1
o_recall.text = "Recall"
o_recall.file = WPATH "button_reg_138x23m_3state.tga"
o_recall.location = 467, 495, o_frame.location.z + 1
o_recall.state = 0 // initially disabled
initialize(o_recall)
o_recall.state = 3
// MSL Added Mech Randomizer button
object o_all_random_mech = s_multistatepane
o_all_random_mech.total_states = 3
o_all_random_mech.textsize = 1
o_all_random_mech.text = "Randomizer"
o_all_random_mech.file = WPATH "button_reg_138x23m_3state.tga"
o_all_random_mech.location = 467, 460, o_frame.location.z + 1
o_all_random_mech.state = 0 // initially enabled
initialize(o_all_random_mech)
// MSL Added default settings button
object o_default = s_multistatepane
o_default.total_states = 3
o_default.textsize = 1
o_default.text = "Default"
o_default.file = WPATH "button_reg_138x23m_3state.tga"
o_default.location = 627, 460, o_frame.location.z + 1
o_default.state = 0 // initially enabled
initialize(o_default)
// MSL Added Credit button
// object o_vwe_credit = s_multistatepane
// o_vwe_credit.total_states = 3
// o_vwe_credit.textsize = 1
// o_vwe_credit.text = "Credits"
// o_vwe_credit.file = WPATH "button_reg_138x23m_3state.tga"
// o_vwe_credit.location = 20, 20, o_frame.location.z + 1
// o_vwe_credit.state = 0 // initially enabled
// initialize(o_vwe_credit)
#if USE_O_BACK
object o_back = s_multistatepane
o_back.total_states = 3
o_back.textsize = 1
o_back.text = "Back" // localize$(IDS_MP_LOBBY_DISCONNECT) // "Stop/Reset Mission"
o_back.file = WPATH "button_reg_200x27m_3state.tga"
o_back.location = 570, 495, o_frame.location.z + 1
o_back.state = 2
initialize(o_back)
#endif // USE_O_BACK
if greatest_x > 0 && greatest_y > 0
bitmap_create black = greatest_x,greatest_y //comment out if you don't have any images
int i
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
object o_tabs = tabs
o_tabs.location = 0, 0, 5
initialize(o_tabs)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Is vehicle OK?------------------------------------------------------------
object o_background = background
script_run SCRIPTPATH "conlobbymission.script", 0x1000
// script_pause @conlobbymission@,2
script_run SCRIPTPATH "hostlobbymap.script", 0x1000
script_pause @hostlobbymap@,2
script_run SCRIPTPATH "HostLobbyserver.script", 0x1000
script_pause @HostLobbyserver@,2
//// this is for scrolling the roster list
object o_roster_list_scroll_controls = roster_list_scroll_controls
o_roster_list_scroll_controls.list_size = nRosterCount
object o_error_string = s_error_string
o_error_string.location = ERROR_STRING_X, ERROR_STRING_Y, 5
o_error_string.width = ERROR_STRING_X2 - ERROR_STRING_X
o_error_string.height = ERROR_STRING_Y2 - ERROR_STRING_Y
framerate = 30
focus(o_BotList[0]) // focus(this)
}
GUI_DESTROY
{
focus(NULL)
script_end "hostlobbymap.script"
script_end "conlobbymission.script"
script_end "HostLobbyserver.script"
}
GUI_MAILBOX
{
if (sender == this) && (getmessage() == MAIL_GET_SLOTTYPE)
{
int cur_row = getmessage(1)
if (cur_row < MAXTESLA_P)
{
//mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, k, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
//if (mGameState != _EGS_Idle) // ((mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4))
// return 3
if (o_BotList[cur_row].nselected == 1)
return 1
}
if (o_BotList[cur_row].nselected == 0)
return 0
else
return 2
}
if (sender == this) && (getmessage() == MAIL_POSSIBLE_TABEVENT)
{
int cur_row = getmessage(1)
int slottype = getmessage(2)
int cur_item = getmessage(3)
if (cur_item == 0)
{
return 1
}
if (cur_item == 1)
{
if (slottype == 1)
return 1
return 0
}
if (cur_item == 2)
{
if (slottype == 1) || (slottype == 2)
return 1
return 0
}
if (cur_item == 3)
{
if (slottype == 2)
{
if (cur_team_val)
return 1
return 0
}
if (slottype == 1)
{
return 1
}
}
if (cur_item == 4)
{
if (slottype == 2)
{
if (cur_team_val)
return 1
return 0
}
if (slottype == 1)
{
return 1
}
}
return 0
}
if (sender == this) && (getmessage() == MAIL_PROCESS_TABEVENT)
{
int cur_index = getmessage(1) // row * MAX_SLOT_ITEMS + slot-item-index(bot-type, edit-field, mech-type, team/camo)
int tab_dir = getmessage(2) // -1 or +1
int old_row = -1
int cur_row
int cur_item
int slottype
int done = 0
while(!done)
{
cur_index = cur_index + tab_dir
if !done && (cur_index < 0)
{
done = 1
focus(o_cam_list) // focus(@ConLobbyMission@o_game_options[13]) // MAX_OPTIONS-1
}
if !done && (nRosterCount * MAX_SLOT_ITEMS <= cur_index)
{
done = 1
focus(@ConLobbyMission@o_game_options[0])
}
if (!done)
{
cur_row = cur_index / MAX_SLOT_ITEMS
cur_item = cur_index % MAX_SLOT_ITEMS
if (old_row != cur_row)
{
old_row = cur_row
slottype = mail(MAIL_GET_SLOTTYPE, cur_row, this)
}
if mail(MAIL_POSSIBLE_TABEVENT, cur_row, slottype, cur_item, this)
{
done = 1
if (cur_item == 0)
focus(o_BotList[cur_row])
if (cur_item == 1)
focus(o_Editbox[cur_row])
if (cur_item == 2)
focus(o_mech_variant[cur_row])
if (cur_item == 3)
{
if (cur_team_val)
focus(o_team[cur_row])
else
focus(o_skins[cur_row])
}
if (cur_item == 4)
focus(o_decal[cur_row])
}
}
}
return
}
if (sender != this) && (getmessage() == M_TABEVENT)
{
if (sender == @conlobbymission@)
{
//play press,1
if (getmessage(1) == -1)
mail(MAIL_PROCESS_TABEVENT, nRosterCount * MAX_SLOT_ITEMS, -1, this)
else
focus(o_cam_list) // mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
return
}
int nTabDir
if (getkeystate(key_lshift))
nTabDir = -1
else
nTabDir = +1
if (sender == o_cam_list)
{
if (nTabDir == -1)
focus(@ConLobbyMission@o_game_options[14]) // MAX_OPTIONS-1
else
mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
return
}
int cur_index = 0
int nItemFound = 0
for (k = 0; k < nRosterCount; k++)
{
if (sender == o_BotList[k])
{
nItemFound++
cur_index = cur_index + 0
}
if (sender == o_Editbox[k])
{
nItemFound++
cur_index = cur_index + 1
}
if (sender == o_mech_variant[k])
{
nItemFound++
cur_index = cur_index + 2
}
if (sender == o_skins[k]) || (sender == o_team[k])
{
nItemFound++
cur_index = cur_index + 3
}
if (sender == o_decal[k])
{
nItemFound++
cur_index = cur_index + 4
}
if (nItemFound)
{
//play press,1
mail(MAIL_PROCESS_TABEVENT, cur_index, nTabDir, this)
break
}
cur_index = cur_index + MAX_SLOT_ITEMS
}
return
}
if (sender == o_roster_list_scroll_controls)
{
if (getmessage() == MAIL_ROSTER_LIST_MAXDISPLAY)
mail(MAIL_ROSTER_LIST_MAXDISPLAY, getmessage(1), this)
if (getmessage() == MAIL_ROSTER_LIST_CHANGED)
mail(MAIL_ROSTER_LIST_CHANGED, getmessage(1), this)
return
}
// MSL 5.02 Recall Button
if (sender == o_recall)
{
play press,1
mail(MAIL_PREVIOUS_MISSION, @ConLobbyMission@) // // set rookie, see conlobbymission.script
for (k = 0; k < nRosterCount; k++)
{
o_BotList[k].nselected = o_BotList_bu[k].nselected
if (o_BotList[k].nselected > 0)
{
activate(o_BotList[k])
}
o_Editbox[k].boxValue = o_Editbox[k].backup
if (o_BotList[k].nselected == 1)
{
initialize(o_Editbox[k])
activate(o_Editbox[k])
}
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
m_naLastSelected[k] = o_BotList[k].nselected
o_mech_variant[k].nselected = o_mech_variant_bu[k].nselected
initialize(o_mech_variant[k])
o_skins[k].nselected = o_skins_bu[k].nselected
o_team[k].nselected = o_team_bu[k].nselected
o_decal[k].nselected = o_decal_bu[k].nselected
}
return
}
if (sender == o_all_random_mech)
{
play press,1
int pick_mech = 0
for (k = 0; k < nRosterCount; k++)
{
o_mech_variant[k].nselected = random(0, MAX_ALLOWED_MECHS -1)
if (o_mech_variant[k].nselected == 3)
{
o_mech_variant[k].labelTextColor = packcolor (255, 255, 0, 255)
}
}
return
}
// if (sender == o_vwe_credit)
// {
// play press,1
// unfocus
// if exists(@netserver@)
// {
// @netserver@currentScreen = CINEMAOPTIONS
// }
// return
// }
if (sender == o_default)
{
play press,1
mail(MAIL_RESET_AFTER_LAUNCH, this) // reset
return
}
if (sender == o_reprint)
{
play press,1
callback($$CTCL_DoReprint$$, 1)
return
}
if (sender == this)
{
int nFromThis = getmessage()
if (nFromThis == MAIL_CHANGE_LAUNCH_STATE)
{
int nLS = nLaunchState
int nBS
if (nLS < 0)
nLS = 0
o_launch_button.text = launch_states[nLS]
if ((nLS == 1) || (nLS == 4))
nBS = 2
else
nBS = 3
if ((nBS != o_launch_button.state) || !equal$(o_launch_button.text, launch_states[nLS]))
{
o_launch_button.text = launch_states[nLS]
o_launch_button.state = nBS
// MSL initialize(o_launch_button)
}
#if USE_O_BACK
string strBack
if (nLS <= 1)
{
nBS = 2
strBack = "Back"
}
else
{
nBS = 3
strBack = ""
}
if (o_back.state != nBS) || (strBack != o_back.text)
{
o_back.text = strBack
o_back.state = nBS
initialize(o_back)
}
#endif // USE_O_BACK
return
}
// MSL 5.02
if (nFromThis == MAIL_RECORD_MISSION)
{
for (k = 0; k< nRosterCount; K++)
{
o_Editbox[k].backup = o_Editbox[k].boxValue
o_BotList_bu[k].nselected = o_BotList[k].nselected
o_mech_variant_bu[k].nselected = o_mech_variant[k].nselected
o_skins_bu[k].nselected = o_skins[k].nselected
o_team_bu[k].nselected = o_team[k].nselected
o_decal_bu[k].nselected = o_decal[k].nselected
}
return
}
if (nFromThis == MAIL_RESET_AFTER_LAUNCH)
{
// mission launched : remove all players...
// MSL 5.02 Added Cameraship to Reset
o_cam_list.nselected = 0
for (k = 0; k < nRosterCount; k++)
{
if (1 <= o_BotList[k].nselected)
{
if (o_BotList[k].nselected == 1) && (k < MAXTESLA_P)
{ // real player
o_Editbox[k].boxValue = ""
initialize(o_Editbox[k])
deactivate(o_Editbox[k])
}
o_BotList[k].nselected = 0
m_naLastSelected[k] = 0
if (ROSTER_top_of_list <= k) && (k < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
{
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
}
}
}
mail(MAIL_SET_ROOKIE_MISSION, this)
mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
}
if (nFromThis == MAIL_SET_ROOKIE_MISSION)
{
// reset camos...
for (k = 0; k < nRosterCount; k++)
{
o_skins[k].nselected = k % MAX_SKIN_COUNT
o_decal[k].nselected = k % MAX_DECAL_COUNT
}
// Reset Mech Selection
for (k = 0; k < nRosterCount; k++)
{
// MSL ADD MECH
if k == 0
o_mech_variant[k].nselected = 29 // Loki
if k == 1
o_mech_variant[k].nselected = 31 // Madcat
if k == 2
o_mech_variant[k].nselected = 46 // Thor
if k == 3
o_mech_variant[k].nselected = 50 // vulture
if k == 4
o_mech_variant[k].nselected = 29 // Loki
if k == 5
o_mech_variant[k].nselected = 31 // Madcat
if k == 6
o_mech_variant[k].nselected = 46 // Thor
if k == 7
o_mech_variant[k].nselected = 50 // Vulture
}
mail(MAIL_SET_ROOKIE_MISSION, @ConLobbyMission@) // // set rookie, see conlobbymission.script
return
}
if (nFromThis == MAIL_REMOVE_ALL_BOTS)
{
// remove all bots...
int nRemoveThisBot
for (k = 0; k < nRosterCount; k++)
{
nRemoveThisBot = 0
if (k < MAXTESLA_P)
{
if (2 <= o_BotList[k].nselected)
{
nRemoveThisBot = 1
}
}
else
{
if (1 <= o_BotList[k].nselected)
{
nRemoveThisBot = 1
}
}
if (nRemoveThisBot)
{
o_BotList[k].nselected = 0
m_naLastSelected[k] = 0
if (ROSTER_top_of_list <= k) && (k < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
{
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
}
}
}
}
if (nFromThis == MAIL_ROSTER_LIST_MAXDISPLAY)
{
k = getmessage(1)
int nMaxDisp = drop_count_mech[k - ROSTER_top_of_list]
int nMaxDispSkin = drop_count_skin[k - ROSTER_top_of_list]
int nMaxDispDecal = drop_count_decal[k - ROSTER_top_of_list]
o_BotList[k].max_displayed = nMaxDisp
o_mech_variant[k].max_displayed = nMaxDisp
#if USE_O_MECH_VARIANT2
o_mech_variant2[k].max_displayed = nMaxDisp - 1
#endif // USE_O_MECH_VARIANT2
o_skins[k].max_displayed = nMaxDispSkin
o_decal[k].max_displayed = nMaxDispDecal
o_team[k].max_displayed = nMaxDispSkin
return
}
if (nFromThis == MAIL_ROSTER_LIST_CHANGED)
{
k = getmessage(1)
if (ROSTER_top_of_list <= k) && (k < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
{ // shown
mail(MAIL_ROSTER_LIST_MAXDISPLAY, k, this)
activate(o_status[k])
activate(o_BotList[k])
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
activate(o_mech_variant[k])
#if USE_O_MECH_VARIANT2
activate(o_mech_variant2[k])
#endif // USE_O_MECH_VARIANT2
activate(o_mech_rand[k])
}
else
{ // hidden
deactivate(o_status[k])
deactivate(o_BotList[k])
deactivate(o_Editbox[k])
deactivate(o_print_text[k])
deactivate(o_mech_variant[k])
#if USE_O_MECH_VARIANT2
deactivate(o_mech_variant2[k])
#endif // USE_O_MECH_VARIANT2
deactivate(o_mech_rand[k])
deactivate(o_skins[k])
deactivate(o_decal[k])
deactivate(o_team[k])
deactivate(o_skin_box[k])
deactivate(o_decal_box[k])
}
}
if (nFromThis == MAIL_PLAYER_TYPE_CHANGED)
{
k = getmessage(1)
if (o_BotList[k].nselected == 0)
{ // no selection
deactivate(o_Editbox[k])
activate(o_print_text[k])
deactivate(o_skins[k])
deactivate(o_team[k])
deactivate(o_decal[k])
deactivate(o_skin_box[k])
deactivate(o_decal_box[k])
return
}
if ((k < MAXTESLA_P) && (o_BotList[k].nselected == 1))
{ // to real player...
activate(o_Editbox[k])
deactivate(o_print_text[k])
if cur_team_val
{
// MSL 5.05
deactivate(o_skins[k])
activate(o_team[k])
activate(o_decal[k])
}
else
{
activate(o_skins[k])
deactivate(o_team[k])
activate(o_decal[k])
}
}
else
{ // bot
deactivate(o_Editbox[k])
activate(o_print_text[k])
deactivate(o_skins[k])
if cur_team_val
{
activate(o_team[k])
deactivate(o_decal[k])
}
else
{
deactivate(o_team[k])
deactivate(o_decal[k])
}
}
activate(o_skin_box[k])
activate(o_decal_box[k])
}
return
}
if exists(@ConLobbyMission@)
{
if (sender == @ConLobbyMission@)
{
int nFromLobbyMission = getmessage()
if nFromLobbyMission == -9999
{
mail(MAIL_REMOVE_ALL_BOTS, this)
}
if (nFromLobbyMission == -9998)
{ // game type or map changed
int old_game_type = cur_game_type
int old_team_val = cur_team_val
int counter
cur_game_type = callback($$GetLocalNetworkMissionParamater$$, game_type)
cur_team_val = callback($$CTCL_GetTeamParams$$, cur_team_count[0])
if (old_team_val != cur_team_val)
{
if cur_team_val
{
for k = 0; k < nRosterCount; k++
{
o_team[k].list_size = cur_team_val
for counter = 0; counter < cur_team_val; counter++
{
o_team[k].list_item[counter] = conv$(counter+1)
}
if o_team[k].nselected >= cur_team_val
{
o_team[k].nselected = cur_team_val - 1
}
initialize(o_team[k])
if (ROSTER_top_of_list <= k) && (k < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
}
}
else
{
for k = 0; k < nRosterCount; k++
{
if (ROSTER_top_of_list <= k) && (k < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
}
}
}
}
return
}
}
for (k = 0; k < nRosterCount; k++)
{
if (sender == o_mech_variant[k])
{
if (USE_ALLOWED_MECHS)
last_count = stock_array[allowed_mechs[o_mech_variant[k].nselected]]
else
last_count = stock_array[o_mech_variant[k].nselected]
#if USE_O_MECH_VARIANT2
o_mech_variant2[k].list_size = 0
do
{
o_mech_variant2[k].list_item[o_mech_variant2[k].list_size] = mech2[last_count]
o_mech_variant2[k].list_size++
last_count++
if (last_count == $$m_MechCount$$)
break
}
while (stock_id[last_count] != 1)
initialize(o_mech_variant2[k])
o_mech_variant2[k].nselected = 0
#endif // USE_O_MECH_VARIANT2
break
}
if (sender == o_BotList[k])
{
if (o_BotList[k].nselected != m_naLastSelected[k])
{
if (o_BotList[k].nselected == 1) && (k < MAXTESLA_P)
{
#ifdef DEMO_CODE
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
m_naLastSelected[k] = o_BotList[k].nselected
#else // !DEMO_CODE
if (nVritual)
{
mLauncherConnection = 1
mConnection2 = 1
mApplType = _EAT_MW4
mApplState = _EAS_Launched
mGameState = _EGS_Idle
mGameTime = -1
mGameIsServer = 2
}
else
{
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, k, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
}
if (mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4) && (mGameState == _EGS_Idle)
{
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
m_naLastSelected[k] = o_BotList[k].nselected
}
else
{
o_BotList[k].nselected = m_naLastSelected[k]
}
#endif // DEMO_CODE
}
else
{
// 5.04 Bot allowed
if ((MAXTESLA_P <= k) || (2 <= o_BotList[k].nselected)) && (((3 < cur_game_type) && (cur_game_type < 15)) || (18 < cur_game_type))))
o_BotList[k].nselected = m_naLastSelected[k]
else
{
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
m_naLastSelected[k] = o_BotList[k].nselected
}
}
}
break
}
}
#if USE_O_BACK
if ((sender == o_back) && (o_back.state == 2))
{
callback($$SetShellCommand$$, DisconnectLobbyCommand)
}
#endif // USE_O_BACK
if (sender == o_launch_button) && (1 <= nLaunchState)
{
focus(this)
if (nLaunchState == 1)
{
play press,1
nLaunchState = 2 // preparing loading
int nTemp
int nTemp2
int nTempMech
int nTeamOrSkin
int nDecal
mail(-7777, @ConLobbyMission@)
int nPrintOut
if (@ConLobbyMission@o_game_options[12].state == 2)
nPrintOut = 1
else
nPrintOut = 0
int nMissionReview
if (@ConLobbyMission@o_game_options[13].state == 2)
nMissionReview = 1
else
nMissionReview = 0
callback($$CTCL_DoMission$$, 0, team_camo[0], team_decal[0], ffa_decal[0], nPrintOut, nMissionReview) // prepare to add player...
for (k = 0; k < nRosterCount; k++)
{
if (0 < o_BotList[k].nselected)
{
if cur_team_val > 0
{
nTeamOrSkin = o_team[k].nselected
nDecal = o_decal[k].nselected
}
else
{
nTeamOrSkin = o_skins[k].nselected
nDecal = o_decal[k].nselected
}
#if USE_O_MECH_VARIANT2
if (USE_ALLOWED_MECHS)
nTempMech = stock_array[allowed_mechs[o_mech_variant[k].nselected]] + o_mech_variant2[k].nselected
else
nTempMech = stock_array[o_mech_variant[k].nselected] + o_mech_variant2[k].nselected
#else // USE_O_MECH_VARIANT2
if (USE_ALLOWED_MECHS)
nTempMech = stock_array[allowed_mechs[o_mech_variant[k].nselected]] // + o_mech_variant2[k].nselected
else
nTempMech = stock_array[o_mech_variant[k].nselected] // + o_mech_variant2[k].nselected
#endif // USE_O_MECH_VARIANT2
if (k < MAXTESLA_P) && (o_BotList[k].nselected == 1)
{ // tesla
callback($$CTCL_AddPlayer$$, k, o_Editbox[k].boxValue, nTempMech, mech[nTempMech], nTeamOrSkin, nDecal)
}
else
{ // bot
nTemp = o_BotList[k].nselected
if (k < MAXTESLA_P)
nTemp--
nTemp = -nTemp
if cur_team_val > 0
{
nTeamOrSkin = o_team[k].nselected
nDecal = o_decal[k].nselected
}
else
{
nTeamorSkin = 36
nDecal = 17
}
callback($$CTCL_AddPlayer$$, nTemp, null_string, nTempMech, mech[nTempMech], nTeamOrSkin, nDecal)
}
}
}
if (0 < o_cam_list.nselected)
{
nTemp2 = -1
k = MAXTESLA_P + o_cam_list.nselected - 1
callback($$CTCL_AddPlayer$$, k, null_string, nTemp2, null_string, nTemp2, nTemp2)
}
nTemp = callback($$CTCL_DoMission$$, 1)
if nTemp == 0
{
// do loading started...
nLaunchState = 3 // loading
}
else
{
o_error_string.text = "Loading aborted : internal error(" conv$(nTemp) ")..."
nLaunchState = 0
nInterErrorCount = 15
}
mail(MAIL_CHANGE_LAUNCH_STATE, this)
}
if (nLaunchState == 4)
{
play launchSound,1
nLaunchState = 5
mail(MAIL_CHANGE_LAUNCH_STATE, this)
callback($$CTCL_DoMission$$, 2)
}
}
focus(this)
}
GUI_CHAR
{
int key = getchar()
if key == char(" ") //enter is pressed to select the current lit item
{
mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
}
}
GUI_EXECUTE
{
if exists(@ConLobbyMission@) && (nInitialRookieMission == 1)
{
nInitialRookieMission = 0
mail(MAIL_SET_ROOKIE_MISSION, this)
return
}
if (0 < nInterErrorCount)
{
nInterErrorCount--
return
}
int nReprintState = o_reprint.state
int nReprintStateNew
if (callback($$CTCL_DoReprint$$, 0))
nReprintStateNew = 0
else
nReprintStateNew = 3
if (nReprintStateNew != nReprintState)
{
o_reprint.state = nReprintStateNew
// Initialize(o_reprint)
}
if (1 < nLaunchState)
{
int n = callback($$CTCL_GetMissionState$$, nLaunchState)
if (n != 0) // 0 - progressing
{
if (n < 0)
{ // error
if (nLaunchState == 3)
{ // loading error...
o_error_string.text = "Loading aborted : error(" conv$(n) ")..."
}
if (nLaunchState == 5)
{ // launching error...
o_error_string.text = "Launching aborted : error(" conv$(n) ")..."
}
nLaunchState = 0
mail(MAIL_CHANGE_LAUNCH_STATE, this)
}
else
{
if (nLaunchState == 3)
{ // loaded...
nLaunchState = 4
o_recall.state = 0
// initialize(o_recall)
mail(MAIL_RECORD_MISSION, this)
mail(MAIL_CHANGE_LAUNCH_STATE, this)
}
if (nLaunchState == 5)
{ // launched...
nLaunchState = 0
mail(MAIL_CHANGE_LAUNCH_STATE, this)
mail(MAIL_RESET_AFTER_LAUNCH, this) // reset
}
}
}
return
}
nLaunchState = 0
if nLaunchState == 0 && ($$networkScenarioCount$$ <= 0)
{
o_error_string.text = "map is not initiated..."
nLaunchState = -1
}
int total_teams = 0
int team_count[8]
int team_1[16]
int team_2[16]
int team_3[16]
int team_4[16]
int team_5[16]
int team_6[16]
int team_7[16]
int team_8[16]
int nTempValue
for k = 0; k < 8; k++
team_count[k] = 0
int nTeslaPlayer = 0
int nTempPlayerCount = 0
int nOldState
int nNewState
string processing
int nErrTeslaCon = -1
int nErrTeslaName = -1
int nCurTeslaErr
string timeString
string timeTemp
for (k = 0; k < nRosterCount; k++)
{
nOldState = o_status[k].state
nNewState = nOldState
nCurTeslaErr = 0
if (k < MAXTESLA_P)
{
if (nVritual)
{
mLauncherConnection = 1
mConnection2 = 1
mApplType = _EAT_MW4
mApplState = _EAS_Launched
mGameState = _EGS_Idle
mGameTime = -1
mGameIsServer = 2
}
else
{
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, k, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
}
if !((mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4) && (mGameState == _EGS_Idle))
{
if (o_BotList[k].nselected == 1)
{
if (nErrTeslaCon == -1)
{
nErrTeslaCon = k
}
nCurTeslaErr = 1
//m_naLastSelected[k] = 0
//o_BotList[k].nselected = 0
//deactivate(o_Editbox[k])
//activate(o_print_text[k])
}
}
if (mLauncherConnection == 1)
{
if (mConnection2 == 1)
{
if (mGameState == _EGS_None)
{
o_print_text[k].text = "" // unknown temporary - program loading/quitting...
}
if (mGameState == _EGS_Idle)
{
o_print_text[k].text = "Idle"
}
if (mGameState == _EGS_Preparing)
{
o_print_text[k].text = "Preparing..."
}
if (mGameState == _EGS_Running)
{
if (mGameTime < 0) // time indetermined - i.e starting...
{
if (mGameIsServer == 1)
o_print_text[k].text = "Starting..."
else
o_print_text[k].text = "Waiting..."
}
else
{
timeString = conv$(mGameTime / 60)
timeTemp = conv$(mGameTime % 60)
if length$(timeTemp) == 1
timeString = timeString ":0" timeTemp
else
timeString = timeString ":" timeTemp
if (mGameIsServer == 1)
timeString = timeString "(server)"
o_print_text[k].text = timeString
}
}
if (mGameState == _EGS_Closing)
{
o_print_text[k].text = "Closing..."
}
if (mGameState == _EGS_Idle)
{
if (mApplType == _EAT_MW4)
nNewState = 1
else
nNewState = 0
}
else
{
nNewState = 3
}
}
else
{
if (mConnection2 == -1)
{
o_print_text[k].text = "Connecting..."
nNewState = 0
}
else
{
o_print_text[k].text = "Not Ready..."
nNewState = 3
}
}
}
else
{
if (mLauncherConnection == -1)
{
//o_print_text[k].text = "Connecting..."
processing = o_print_text[k].text
if equal$(processing, ".")
processing = ".."
else
{
if equal$(processing, "..")
processing = "..."
else
{
if equal$(processing, "...")
processing = "...."
else
{
if equal$(processing, "....")
processing = "....."
else
{
processing = "."
}
}
}
}
o_print_text[k].text = processing
nNewState = 3 // 0
}
else
{
o_print_text[k].text = "" // !ready"
nNewState = 3
}
}
}
else
{
o_print_text[k].text = ""
if (o_BotList[k].nselected == 0)
nNewState = 1
else
nNewState = 4
}
if (o_BotList[k].nselected != 0)
{
if (o_BotList[k].nselected == 1) && (k < MAXTESLA_P)
{
if (callback($$CTCL_IsValidName$$, o_EditBox[k].boxValue))
{
nNewState = 2
}
else
{
if (nErrTeslaName == -1)
nErrTeslaName = k
nNewState = 1
}
if nCurTeslaErr
nNewState = 3
nTeslaPlayer++
}
else
{
nNewState = 4
}
nTempPlayerCount++
}
if (nNewState != nOldState)
{
o_status[k].state = nNewState
//mail(0, o_status[k])
}
if cur_team_val && (o_BotList[k].nselected != 0)
{
team_2[team_count[o_team[k].nselected]] = k
team_count[o_team[k].nselected]++
if (team_count[o_team[k].nselected] == 1)
total_teams++
}
}
if 0 < o_cam_list.nselected
{
nTeslaPlayer++
nTempPlayerCount++
if (nVritual)
{
mLauncherConnection = 1
mConnection2 = 1
mApplType = _EAT_MW4
mApplState = _EAS_Launched
mGameState = _EGS_Idle
mGameTime = -1
mGameIsServer = 2
}
else
{
k = MAXTESLA_P + o_cam_list.nselected - 1
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, k, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
}
if (mLauncherConnection == 1)
{
if (mConnection2 == 1)
{
if (mGameState == _EGS_None)
{
o_cam_print_text.text = "" // unknown temporary - program loading/quitting...
}
if (mGameState == _EGS_Idle)
{
o_cam_print_text.text = "Idle"
}
if (mGameState == _EGS_Preparing)
{
o_cam_print_text.text = "Preparing..."
}
if (mGameState == _EGS_Running)
{
if (mGameTime < 0) // time indetermined - i.e starting...
{
if (mGameIsServer == 1)
o_cam_print_text.text = "Starting..."
else
o_cam_print_text.text = "Waiting..."
}
else
{
timeString = conv$(mGameTime / 60)
timeTemp = conv$(mGameTime % 60)
if length$(timeTemp) == 1
timeString = timeString ":0" timeTemp
else
timeString = timeString ":" timeTemp
if (mGameIsServer == 1)
timeString = timeString "(server)"
o_cam_print_text.text = timeString
}
}
if (mGameState == _EGS_Closing)
{
o_cam_print_text.text = "Closing..."
}
}
else
{
if (mConnection2 == -1)
{
o_cam_print_text.text = "Connecting..."
}
else
{
o_cam_print_text.text = "Not Ready..."
}
}
}
else
{
if (mLauncherConnection == -1)
{
//o_cam_print_text.text = "Connecting..."
processing = o_cam_print_text.text
if equal$(processing, ".")
processing = ".."
else
{
if equal$(processing, "..")
processing = "..."
else
{
if equal$(processing, "...")
processing = "...."
else
{
if equal$(processing, "....")
processing = "....."
else
{
processing = "."
}
}
}
}
o_cam_print_text.text = processing
}
else
{
o_cam_print_text.text = "" // !ready"
}
}
if ((mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4) && (mGameState == _EGS_Idle))
{
o_cam_status.state = 2
}
else
{
if (mLauncherConnection == 1)
{
if (mConnection2 == 1)
o_cam_status.state = 0
else
o_cam_status.state = 1
}
else
{
o_cam_status.state = 3
}
if (nErrTeslaCon == -1)
{
nErrTeslaCon = k
}
}
}
else
{
o_cam_print_text.text = ""
}
if nLaunchState == 0 && (nTeslaPlayer <= 0)
{
o_error_string.text = "No Pilots Listed"
nLaunchState = -4
}
if nLaunchState == 0 && (nErrTeslaCon != -1)
{
if (MAXTESLA_P <= nErrTeslaCon)
o_error_string.text = "Cameraship error: " TESLA_PREFIX m_aTeslaName[nErrTeslaCon] TESLA_POSTFIX
else
o_error_string.text = "Tesla error: " TESLA_PREFIX m_aTeslaName[nErrTeslaCon] TESLA_POSTFIX
nLaunchState = -5
}
if nLaunchState == 0 && (nErrTeslaName != -1)
{
o_error_string.text = "Valid player name required: " TESLA_PREFIX m_aTeslaName[nErrTeslaName] TESLA_POSTFIX
nLaunchState = -6
}
if nLaunchState == 0 && (cur_team_val > 0)
{
if total_teams > cur_team_val
{
nLaunchState = -2
o_error_string.text = "Total team count exceeds - fatal error " conv$(total_teams) " > " conv$(cur_team_val)
}
else
{
for k = 0; k < cur_team_val; k++
{
nTempValue = cur_team_count[k]
if nTempValue > MAX_TEAMMATE_COUNT
nTempValue = MAX_TEAMMATE_COUNT
if team_count[k] > nTempValue
{
if (nLaunchState == 0)
{
o_error_string.text = "Team Count Exceed : " conv$(k + 1) "(" conv$(nTempValue) ")"
nLaunchState = -3
}
else
{
o_error_string.text = o_error_string.text ", " conv$(k + 1) "(" conv$(nTempValue) ")"
}
}
}
}
}
if nLaunchState == 0 && (nTempPlayerCount > 16)
{
o_error_string.text = "Too many player/bots"
nLaunchState = -7
}
if (nLaunchState == 0)
{
int k2
nErrTeslaName = -1
for (k = 0; (nErrTeslaName == -1) && (k < nRosterCount); k++)
{
if ((k < MAXTESLA_P) && (o_BotList[k].nselected == 1))
{
for (k2 = 0; (nErrTeslaName == -1) && (k2 < nRosterCount); k2++)
{
if ((k2 != k) && (k2 < MAXTESLA_P) && (o_BotList[k2].nselected == 1))
{
if equal$(o_Editbox[k].boxValue, o_Editbox[k2].boxValue)
{
nErrTeslaName = k2
o_error_string.text = "Duplicated player names: " TESLA_PREFIX m_aTeslaName[k] TESLA_POSTFIX " == " TESLA_PREFIX m_aTeslaName[k2] TESLA_POSTFIX
nLaunchState = -7
}
}
}
}
}
}
if (nLaunchState == 0)
{
o_error_string.text = ""
nLaunchState = 1
}
mail(MAIL_CHANGE_LAUNCH_STATE, this)
}
}
background
{
GUI_CREATE
{
int last_error_count = 0
int denied_parameter = 0
int last_error = 0
int request_resent = 0
location = 0,0,-3
pane p_background = GPATH "btfconsole.tga"
int waiting_to_init = 1
// Denied Error String array
string denied_error[13]
denied_error[0] = ""
denied_error[1] = localize$(IDS_MP_LOBBY_BUILD_ERROR_UNK)
denied_error[2] = localize$(IDS_MP_LOBBY_BUILD_ERROR_CAMERA)
denied_error[3] = localize$(IDS_MP_LOBBY_BUILD_ERROR_CUSTOM)
denied_error[4] = localize$(IDS_MP_LOBBY_BUILD_ERROR_TEAM)
denied_error[5] = localize$(IDS_MP_LOBBY_BUILD_ERROR_WEIGHT_MIN)
denied_error[6] = localize$(IDS_MP_LOBBY_BUILD_ERROR_WEIGHT_MAX)
denied_error[7] = localize$(IDS_MP_LOBBY_BUILD_ERROR_CHASSIS)
denied_error[8] = localize$(IDS_MP_LOBBY_BUILD_ERROR_BEAM)
denied_error[9] = localize$(IDS_MP_LOBBY_BUILD_ERROR_PROJECTILE)
denied_error[10] = localize$(IDS_MP_LOBBY_BUILD_ERROR_MISSILE)
denied_error[11] = localize$(IDS_MP_LOBBY_BUILD_ERROR_SUBSYS)
denied_error[12] = localize$(IDS_MP_LOBBY_BUILD_ERROR_WEIGHT_TOTALMAX)
}
GUI_MAILBOX
{
}
GUI_DRAW
{
render P_background, 0,0
// render p_temp,0,0
setpencolor(255,255,255,255)
print3d_margins = 0, 0 to getresx(), getresy()
print3d_attributes = gFont3d, 0xffeeeeee,1,0,1,0,0,just_left
print3d_position = TESLA_STATUS_X,HEADER_TITLE_Y
print3d "Stat" // localize$(IDS_MP_LOBBY_STATUS)
print3d_position = BOT_LIST_X,HEADER_TITLE_Y
print3d localize$(IDS_MP_LOBBY_PLAYER)
print3d_position = MECH_LIST_X,HEADER_TITLE_Y
print3d localize$(IDS_IA_MECH)
if cur_team_val
{
print3d_position = TEAM_X-37,HEADER_TITLE_Y
print3d localize$(IDS_MP_LOBBY_NORMAL_TEAM)
}
else
{
print3d_position = SKIN_X-39,HEADER_TITLE_Y
print3d "Camo"
}
print3d_position = DECAL_LIST_X,HEADER_TITLE_Y
print3d "Unit"
drawline TESLA_STATUS_X, DIVIDER_Y1 to ROSTER_START_X, DIVIDER_Y1
drawline TESLA_STATUS_X, DIVIDER_Y2 to ROSTER_START_X, DIVIDER_Y2
}
}
display_num_of_players
{
GUI_CREATE
{
location = 0,0,255
int text_size = 1 // 100% for bitmap
framerate = 10
}
GUI_DRAW
{
int num_of_players = 0
for (k = 0; k < nRosterCount; k++)
{
if (o_BotList[k].nselected != 0)
num_of_players++
}
print3d_attributes = gFont3d, 0xffffffff,text_size,0,1,0,0,just_left
lprint3d_position = 0, 0
string str
if (num_of_players == 0)
str = "No player is selected"
if (num_of_players == 1)
str = "1 player"
if (num_of_players > 1)
str = conv$(num_of_players) " Players"
if (o_cam_list.nselected != 0)
str = str " with cameraship"
print3d str
}
}
s_print_text
{
GUI_CREATE
{
string text
font3d text_font
int text_color
int id
}
GUI_DRAW
{
int n_color
if (id == -1)
n_color = packcolor(255,255,255,255)
else
n_color = name_color[id]
print3d_attributes = text_font, n_color,1,0,1,0,0,just_left,1
lprint3d_margins = 0, 0 to 130, 50
lprint3d_position = 0, 0
if length$(text) > 0
{
print3d text //conv$(cur_team_val)
}
}
}
skin_box
{
GUI_CREATE
{
int nLastState = -1
int id = 0
pane p_pane
int state = 3
string letters[37]
letters[0] = "0"
letters[1] = "1"
letters[2] = "2"
letters[3] = "3"
letters[4] = "4"
letters[5] = "5"
letters[6] = "6"
letters[7] = "7"
letters[8] = "8"
letters[9] = "9"
letters[10] = "A"
letters[11] = "B"
letters[12] = "C"
letters[13] = "D"
letters[14] = "E"
letters[15] = "F"
letters[16] = "G"
letters[17] = "H"
letters[18] = "I"
letters[19] = "J"
letters[20] = "K"
letters[21] = "L"
letters[22] = "M"
letters[23] = "N"
letters[24] = "O"
letters[25] = "P"
letters[26] = "Q"
letters[27] = "R"
letters[28] = "S"
letters[29] = "T"
letters[30] = "U"
letters[31] = "V"
letters[32] = "W"
letters[33] = "X"
letters[34] = "Y"
letters[35] = "Z"
letters[36] = "_" // MSL Bot color
string decals[18]
decals[0] = "03"
decals[1] = "04"
decals[2] = "02"
decals[3] = "05"
decals[4] = "06"
decals[5] = "09"
decals[6] = "50"
decals[7] = "10"
decals[8] = "11"
decals[9] = "12"
decals[10] = "16"
decals[11] = "20"
decals[12] = "21"
decals[13] = "22"
decals[14] = "24"
decals[15] = "27"
decals[16] = "48"
decals[17] = "00" // MSL Bot color
framerate = 10
}
GUI_DRAW
{
if cur_team_val
{
state = team_camo[o_team[id].nselected]
}
else
{
if ((id < MAXTESLA_P) && (o_BotList[id].nselected == 1))
{
state = o_skins[id].nselected // MSL Player color
}
else
{
state = 36 // MSL Bot color
}
}
if (state != nLastState)
{
nLastState = state
p_pane = "Content\\ShellScripts\\Graphics\\Multiplayer\\LobbySkins\\skin" letters[state] "4.tga"
if cur_team_val
{
o_decal[id].nselected = team_camo[o_team[id].nselected]
}
else
{
o_decal[id].nselected = o_skins[id].nselected
}
}
render p_pane, SKIN_BOX_X-35,location.Y
}
}
decal_box
{
GUI_CREATE
{
int nLastdState = -1
int id = 0
pane d_pane
int dstate = 3
string letters[37]
letters[0] = "0"
letters[1] = "1"
letters[2] = "2"
letters[3] = "3"
letters[4] = "4"
letters[5] = "5"
letters[6] = "6"
letters[7] = "7"
letters[8] = "8"
letters[9] = "9"
letters[10] = "A"
letters[11] = "B"
letters[12] = "C"
letters[13] = "D"
letters[14] = "E"
letters[15] = "F"
letters[16] = "G"
letters[17] = "H"
letters[18] = "I"
letters[19] = "J"
letters[20] = "K"
letters[21] = "L"
letters[22] = "M"
letters[23] = "N"
letters[24] = "O"
letters[25] = "P"
letters[26] = "Q"
letters[27] = "R"
letters[28] = "S"
letters[29] = "T"
letters[30] = "U"
letters[31] = "V"
letters[32] = "W"
letters[33] = "X"
letters[34] = "Y"
letters[35] = "Z"
letters[36] = "_" // MSL Bot color
string decals[18]
decals[0] = "03"
decals[1] = "04"
decals[2] = "02"
decals[3] = "05"
decals[4] = "06"
decals[5] = "09"
decals[6] = "50"
decals[7] = "10"
decals[8] = "11"
decals[9] = "12"
decals[10] = "16"
decals[11] = "20"
decals[12] = "21"
decals[13] = "22"
decals[14] = "24"
decals[15] = "27"
decals[16] = "48"
decals[17] = "00" // MSL Bot color
framerate = 10
}
GUI_DRAW
{
if cur_team_val
{
dstate = o_decal[id].nselected
}
else
{
if ((id < MAXTESLA_P) && (o_BotList[id].nselected == 1))
{
dstate = o_decal[id].nselected // MSL Player color
}
else
{
dstate = 17 // MSL Bot color
}
}
if (dstate != nLastdState)
{
nLastdState = dstate
d_pane = "Content\\ShellScripts\\Graphics\\Multiplayer\\LobbyDecals\\decal_" decals[dstate] ".tga"
}
render d_pane, DECAL_BOX_X+5,location.y
}
}
status_control
{
GUI_CREATE
{
int id = 0
pane p_pane
bitmap b_states
string file
int total_states
int n_last_pane_state = -1
int state = 0
int buttonsize
int toggle
int textsize = 1
int textcolor = 0xffffffff
int theight = 8
int twidth = 8
string text
int dropped_player = FALSE
int dropped_bot = FALSE
int adding_bot = TRUE
int last_selection = 1000
sound btnRolloverSound = SPATH "sfx_button7.wav"
sound btnPressedSound = SPATH "sfx_button5.wav"
}
REGION_ENTERED
{
play btnRolloverSound, 1
}
GUI_INIT
{
b_states = file
buttonsize = getheight(b_states)/total_states
p_pane = getwidth(b_states), buttonsize, true, volatile
alphamode (p_pane) = am_alpha_alphainvalpha
blit b_states(0,buttonsize*state to getwidth(b_states), buttonsize*(state+1)), 0,0 on p_pane
update(p_pane)
region = 0,0 to getwidth(b_states),buttonsize
last_selection = 1000
}
GUI_EXECUTE
{
if (o_status_droplist.m_nStatusID == id) && (o_status_droplist.m_nListType != -999) && (o_status_droplist.m_nListIndex != -1) && last_selection != o_status_droplist.nselected
{
int nListType = o_status_droplist.m_nListType
o_status_droplist.m_nListType = -999
deactivate(o_status_droplist)
if o_status_droplist.nselected == 0
{
nTeslaIndex = id
if (id == -1)
{
nTeslaIndex = MAXTESLA_P + o_cam_list.nselected - 1
}
if (nTeslaIndex == o_status_droplist.m_nListIndex)
{
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, nTeslaIndex, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
if (nListType == 0)
{ // Load
if (mLauncherConnection == 1) && (mConnection2 != 1) && (mApplType == _EAT_None) // && (mApplState == _EAS_Launched) && (mGameState == _EGS_Idle)
{
play launchSound,1
callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_Launch)
}
}
if (nListType == 1)
{ // KILL
if (mConnection2 == 1) && (mApplType != _EAT_None) && (mApplState == _EAS_Launched) && (mGameState == _EGS_Idle)
{
play launchSound,1
callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_Terminate)
}
}
if (nListType == 2)
{ // KILL
if (mConnection2 == 1) && (mApplType != _EAT_None) && (mApplState == _EAS_Launched) && (mGameState == _EGS_Running) && (mGameIsServer == 1)
{
play launchSound,1
callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_EndMission)
}
}
}
}
if o_status_droplist.nselected == 2 || o_status_droplist.nselected == 3
{
nTeslaIndex = id
if (id == -1)
{
nTeslaIndex = MAXTESLA_P + o_cam_list.nselected - 1
}
if (nTeslaIndex == o_status_droplist.m_nListIndex)
{
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, nTeslaIndex, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
if (nListType == 0)
{ // Shutdown or Reboot
if (mLauncherConnection == 1) && (mConnection2 != 1) && (mApplType == _EAT_None) // && (mApplState == _EAS_Launched) && (mGameState == _EGS_Idle)
{
play launchSound,1
if o_status_droplist.nselected == 2
callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_Shutdown)
else
callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_Reboot)
}
}
}
}
// 5.02 Disabled for Release Version
// if o_status_droplist.nselected == 4
// {
// nTeslaIndex = id
// if (id == -1)
// {
// nTeslaIndex = MAXTESLA_P + o_cam_list.nselected - 1
// }
// if (nTeslaIndex == o_status_droplist.m_nListIndex)
// {
// mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, nTeslaIndex, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
//
// if (nListType == 0)
// { // Unload
// if (mLauncherConnection == 1) && (mConnection2 != 1) && (mApplType == _EAT_None) // && (mApplState == _EAS_Launched) && (mGameState == _EGS_Idle)
// {
// play launchSound,1
// callback($$CTCL_Set$$, _CTCL_OrderAppl, nTeslaIndex, _CTCL_Order_Unload)
// }
// }
// }
// }
}
}
LBUTTON_UPDATE
{
if (mouse.left == BUTTON_PRESSED) && (((0 <= id) && (id < MAXTESLA_P)) || ((id == -1) && (0 < o_cam_list.nselected)))
{
nTeslaIndex = id
if (id == -1)
{
nTeslaIndex = MAXTESLA_P + o_cam_list.nselected - 1
}
if (nVritual)
{
if (0)
{ // load test
mLauncherConnection = 1
mConnection2 = 0
mApplType = _EAT_None
mApplState = _EAS_None
mGameState = _EGS_None
mGameTime = -1
mGameIsServer = 2
}
else
{ // kill test
mConnection2 = 1
mApplType = _EAT_MW4
mApplState = _EAS_Launched
mGameState = _EGS_Idle
mGameTime = -1
mGameIsServer = 2
}
}
else
{
mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, nTeslaIndex, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
}
if ((mLauncherConnection == 1) && (mConnection2 == 0) && (mApplType == _EAT_None)) // && (mApplState == _EAS_None) && (mGameState == _EGS_None) // (mConnection2 == 0)
{ // can load
o_status_droplist.column[0].list_item[0] = "Load"
o_status_droplist.column[0].list_item[1] = ""
o_status_droplist.column[0].list_item[2] = "Shutdown"
o_status_droplist.column[0].list_item[3] = "Reboot"
// 5.02 Disabled for Release Version
// o_status_droplist.column[0].list_item[4] = "Unload"
o_status_droplist.column[0].list_item[4] = "Cancel"
o_status_droplist.list_size = 5
o_status_droplist.max_displayed = 105
o_status_droplist.m_nListType = 0 // load
}
if ((mConnection2 == 1) && (mApplType != _EAT_None) && (mApplState == _EAS_Launched) && (mGameState == _EGS_Idle))
{ // can kill
o_status_droplist.column[0].list_item[0] = "Kill"
o_status_droplist.column[0].list_item[1] = "Cancel"
o_status_droplist.list_size = 2
o_status_droplist.max_displayed = 42
o_status_droplist.m_nListType = 1 // kill
}
if ((mConnection2 == 1) && (mApplType != _EAT_None) && (mApplState == _EAS_Launched) && (mGameState == _EGS_Running) && (mGameIsServer == 1))
{ // can End Mission
o_status_droplist.column[0].list_item[0] = "End Mission"
o_status_droplist.column[0].list_item[1] = "Cancel"
o_status_droplist.list_size = 2
o_status_droplist.max_displayed = 42
o_status_droplist.m_nListType = 2 // End Mission
}
if (o_status_droplist.m_nListType != -999)
{
o_status_droplist.location = location.x + getwidth(b_states), location.y, 10000
o_status_droplist.nselected = 1000
last_selection = 1000
o_status_droplist.m_nStatusID = id
o_status_droplist.m_nListIndex = nTeslaIndex
initialize (o_status_droplist)
activate(o_status_droplist)
}
focus(this)
}
}
GUI_UNFOCUS
{
// deactivate(parent.o_status_droplist)
}
GUI_DRAW
{
if (state != n_last_pane_state)
{
n_last_pane_state = state
blit b_states(0,buttonsize*state to getwidth(b_states), buttonsize*(state+1)), 0,0 on p_pane
update(p_pane)
}
render p_pane, location
}
}
roster_list_scroll_controls
{
//////scrollable lobby controls
GUI_CREATE
{
location = ROSTER_START_X,ROSTER_START_Y,10
int arrowHeight = 10
int buttonWidth = 16
int itemHeight = ROSTER_HEIGHT
int num_displayed = ROSTER_DISPLAY_COUNT
int list_size = 0
int itemWidth = 0
int column_header_height
int first_delay = 30 //time delay value n/60; for the buttons
int second_delay = 5 //time delay value n/60; for the buttons
position mouse_capture //used to grab the mouse position and detect whether the mouse has been moved
int backColor = packcolor (0, 0, 0, 150) //CAN BE INITIALIZED
int controlColor = packcolor (0, 0, 0, 255) //CAN BE INITIALIZED
int boxTextColor = packcolor (0, 0, 0, 255) //CAN BE INITIALIZED
int selectedColor = packcolor (255,255,255,255) //CAN BE INITIALIZED
int SelectedHighlightColor = packcolor (51, 55, 115, 255) //CAN BE INITIALIZED
int framehighlightColor = packcolor (200,200,230,255) //CAN BE INITIALIZED
int ItemHighlightColor = packcolor (255,255,255,255) //CAN BE INITIALIZED
int boxhighlightColor = packcolor (51, 55, 115, 255) //CAN BE INITIALIZED
int boxTextSelectedColor = packcolor (255,255,255,255) //CAN BE INITIALIZED
int labelTextColor = packcolor (255,255,255,255) //CAN BE INITIALIZED
int gutterColor = packcolor (0, 0, 0, 255) //CAN BE INITIALIZED
int borderColor = packcolor (255, 255, 255, 255) //CAN BE INITIALIZED
int headercolor = packcolor (68, 68, 85, 255)
int headerbordercolor = packcolor (255, 255, 255, 255)
int headerpressedcolor = packcolor (68, 68, 85, 255)
int headertextcolor = packcolor (255, 255, 255, 255)
int facecolor = packcolor (187, 187, 204, 255)
int shadowcolor = packcolor (119, 119, 119, 255)
//CREATE CHILDREN BUTTONS--THEY MUST EXIST FOR THE DROPBOX TO WORK!!
object o_uparrow_lobby = updown_arrow
object o_downarrow_lobby = updown_arrow
o_downarrow_lobby.up = false // identifies this as the arrow down button
object o_thumbslide_lobby = thumbslide
object o_thumbregiontop_lobby = thumbregion
object o_thumbregionbot_lobby = thumbregion
o_uparrow_lobby.location = location.x + 1, location.y + 1, location.z+5
o_downarrow_lobby.location = location.x + 1, location.y+(itemHeight*num_displayed)-arrowHeight + 1, location.z+5
o_thumbslide_lobby.location = location.x + 1, location.y+arrowHeight+1+1, location.z+4
o_thumbregiontop_lobby.location = location.x,location.y+itemHeight+arrowHeight,location.z+3
o_thumbregionbot_lobby.location = location.x,(o_thumbslide_lobby.location.y+o_thumbslide_lobby.handleheight),location.z+3
initialize (o_uparrow_lobby)
initialize (o_downarrow_lobby)
if list_size > num_displayed
{
o_thumbslide_lobby.handleheight = ((itemHeight*num_displayed)-(arrowHeight*2)-2) / ((list_size)/num_displayed)
o_thumbslide_lobby.region = 0,-2 to buttonwidth,o_thumbslide_lobby.handleheight+2
o_uparrow_lobby.region = 0,0 to buttonwidth,arrowHeight
o_downarrow_lobby.region = 0,0 to buttonwidth,arrowHeight
if o_thumbslide_lobby.handleheight < 15
{
o_thumbslide_lobby.handleheight = 15
o_thumbslide_lobby.region = 0,-2 to buttonwidth,o_downarrow_lobby.handleheight+2
}
}
else
{
o_thumbslide_lobby.handleheight = ((itemHeight*num_displayed)-(arrowHeight*2)-2)
o_downarrow_lobby.region = 0,0 to 0,0
o_uparrow_lobby.region = 0,0 to 0,0
o_downarrow_lobby.region = 0,0 to 0,0
}
deactivate(o_thumbslide_lobby)
deactivate(o_downarrow_lobby)
deactivate(o_uparrow_lobby)
deactivate(o_thumbregiontop_lobby)
deactivate(o_thumbregionbot_lobby)
framerate = 20
mail(-1,this)
}
GUI_MAILBOX // MAILBOX IS USED TO HANDLE MESSAGES FROM THE BUTTON OBJECTS; IT DOES A LOT OF THE WORK!
{
int old_ROSTER_top = ROSTER_top_of_list
int old_ROSTER_bottom = ROSTER_top_of_list + num_displayed
// up button pressed
if (sender == o_uparrow_lobby)
{
if (ROSTER_top_of_list > 0)
ROSTER_top_of_list--
else
return
// tell the thumbslider to reposition itself
mail(0, o_thumbslide_lobby)
}
// down button pressed
if (sender == o_downarrow_lobby)
{
if (ROSTER_top_of_list < list_size - num_displayed)
ROSTER_top_of_list++
else
return
// tell the thumbslider to reposition itself
mail(0 , o_thumbslide_lobby)
}
if (sender == o_thumbslide_lobby)
{
if getmessage() < (location.y+arrowHeight+1)
o_thumbslide_lobby.location.y = location.y+arrowHeight+1
if getmessage() > (location.y+(itemHeight*(num_displayed))-arrowHeight-(o_thumbslide_lobby.handleheight))-1
o_thumbslide_lobby.location.y = (location.y+(itemHeight*(num_displayed))-arrowHeight-1-o_thumbslide_lobby.handleheight)
//1.) find out how many pixels from the top of the thumbslider region
//2.) calc total pixels to move thumbslider/calc num of items-num being drawn (to prevent any empty spaces)
//3.) find top item by taking the total area of pixels/num of pixels for one step (or scroll)
float tmp = (o_thumbslide_lobby.location.y) - (location.y+arrowHeight+1)
if(list_size-num_displayed) > 0
{
o_thumbslide_lobby.step_height = ((itemHeight*num_displayed)-(arrowHeight*2)-(o_thumbslide_lobby.handleheight)-2) / (list_size-num_displayed)
float tmp_ROSTER_top_of_list = tmp/o_thumbslide_lobby.step_height
ROSTER_top_of_list = tmp_ROSTER_top_of_list
if ROSTER_top_of_list > list_size-num_displayed
{
ROSTER_top_of_list = list_size-num_displayed
}
}
}
if (sender == o_thumbregiontop_lobby)
{
if (ROSTER_top_of_list-(num_displayed-1) >= 0)
{
ROSTER_top_of_list = ROSTER_top_of_list-(num_displayed-1)
}
else
{
ROSTER_top_of_list = 0
}
// tell the thumbslider to reposition itself
mail(0, o_thumbslide_lobby)
}
if (sender == o_thumbregionbot_lobby)
{
if (ROSTER_top_of_list+(num_displayed-1) < list_size-num_displayed)
{
ROSTER_top_of_list = ROSTER_top_of_list+(num_displayed-1)
}
else
{
ROSTER_top_of_list = list_size-num_displayed
}
// tell the thumbslider to reposition itself
mail(0 , o_thumbslide_lobby)
}
int nDY = (old_ROSTER_top - ROSTER_top_of_list) * ROSTER_HEIGHT
for int x = 0; x < nRosterCount; x++
{
o_status[x].location.y = o_status[x].location.y + nDY
o_BotList[x].location.y = o_BotList[x].location.y + nDY
initialize(o_BotList[x])
o_Editbox[x].location.y = o_Editbox[x].location.y + nDY
o_print_text[x].location.y = o_print_text[x].location.y + nDY
o_mech_variant[x].location.y = o_mech_variant[x].location.y + nDY
initialize(o_mech_variant[x])
#if USE_O_MECH_VARIANT2
o_mech_variant2[x].location.y = o_mech_variant2[x].location.y + nDY
initialize(o_mech_variant2[x])
#endif // USE_O_MECH_VARIANT2
o_mech_rand[x].location.y = o_mech_rand[x].location.y + nDY
initialize(o_mech_rand[x])
o_team[x].location.y = o_team[x].location.y + nDY
initialize(o_team[x])
o_skins[x].location.y = o_skins[x].location.y + nDY
initialize(o_skins[x])
o_decal[x].location.y = o_decal[x].location.y + nDY
initialize(o_decal[x])
o_skin_box[x].location.y = o_skin_box[x].location.y + nDY
}
int loopito
int new_ROSTER_bottom = ROSTER_top_of_list + num_displayed
for loopito = 0;loopito < nRosterCount; loopito++
{
if (loopito < old_ROSTER_top) || (old_ROSTER_bottom <= loopito)
{
if !((loopito < ROSTER_top_of_list) || (new_ROSTER_bottom <= loopito))
{ // out -> in // no change out -> out
mail(MAIL_ROSTER_LIST_CHANGED, loopito, parent)
}
}
else
{
if (loopito < ROSTER_top_of_list) || (new_ROSTER_bottom <= loopito)
{ // in -> out // no change in -> in
mail(MAIL_ROSTER_LIST_CHANGED, loopito, parent)
}
else
{
mail(MAIL_ROSTER_LIST_MAXDISPLAY, loopito, parent)
}
}
}
}
GUI_EXECUTE
{
if list_size > num_displayed
{
activate(o_thumbslide_lobby)
activate(o_downarrow_lobby)
activate(o_uparrow_lobby)
activate(o_thumbregiontop_lobby)
activate(o_thumbregionbot_lobby)
o_thumbslide_lobby.handleheight = ((itemHeight*num_displayed)-(arrowHeight*2)-2) / (list_size/num_displayed)
o_thumbslide_lobby.region = 0,-2 to buttonwidth,o_thumbslide_lobby.handleheight+2
o_uparrow_lobby.region = 0,0 to buttonwidth,arrowHeight
o_downarrow_lobby.region = 0,0 to buttonwidth,arrowHeight
if o_thumbslide_lobby.handleheight < 15
{
o_thumbslide_lobby.handleheight = 15
o_thumbslide_lobby.region = 0,-2 to buttonwidth,o_downarrow_lobby.handleheight+2
}
// if thumbslider overruns end of list, move it up to correct location
if (o_thumbslide_lobby.location.y + o_thumbslide_lobby.handleheight) > o_downarrow_lobby.location.y
{
o_thumbslide_lobby.location.y = o_downarrow_lobby.location.y - o_thumbslide_lobby.handleheight - 1
}
}
else
{
ROSTER_top_of_list = 0
deactivate(o_thumbslide_lobby)
deactivate(o_downarrow_lobby)
deactivate(o_uparrow_lobby)
deactivate(o_thumbregiontop_lobby)
deactivate(o_thumbregionbot_lobby)
o_thumbslide_lobby.location = location.x, location.y+arrowHeight+1, location.z+4
o_thumbslide_lobby.handleheight = ((itemHeight*num_displayed)-(arrowHeight*2)-2)
o_thumbslide_lobby.region = 0,0 to 0,0
o_downarrow_lobby.region = 0,0 to 0,0
o_uparrow_lobby.region = 0,0 to 0,0
o_downarrow_lobby.region = 0,0 to 0,0
}
//resize negative space thumbslider regions ALWAYS
o_thumbregiontop_lobby.region = 0,0 to buttonWidth, (o_thumbslide_lobby.location.y-o_thumbregiontop_lobby.location.y)
o_thumbregionbot_lobby.location.y = (o_thumbslide_lobby.location.y+o_thumbslide_lobby.handleheight)
o_thumbregionbot_lobby.region = 0,0 to buttonWidth, (o_thumbslide_lobby.location.y-3)-(o_thumbslide_lobby.location.y+o_thumbslide_lobby.handleheight))
}
}
updown_arrow
{
GUI_CREATE
{
int up = true //this object is used for either the up or down arrow; this is the flag so it knows
int timeToMove //created to store a delay value for button presses
float offsety //keeps arrow in center
float offsetx
// pane p_arrowup // if you choose to us bitmaps for the arrows
// pane p_arrowdown
int use_bitmap = false
framerate = 10
}
GUI_INIT
{
offsety = ((parent.arrowHeight-6)/2)+1
offsetx = ((parent.buttonWidth-12)/2)+1
}
LBUTTON_UPDATE
{
if (mouse.left == BUTTON_PRESSED)
{
timeToMove = gettime()+parent.first_delay //if delay = 25,25/60 of a second to wait after first click; gettime() takes the current clock value
mail( 0 ) //sends 0 (the value is not important in this case) to parent to do what's necessary to move the thumbslider
}
if (mouse.left == BUTTON_HELD)
{
if gettime() > timeToMove
{
// notify parent object (the one running s_listbox)
mail( 0 ) //sends 0 (the value is not important in this case) to parent to do what's necessary to move the thumbslider
timeToMove = gettime()+parent.second_delay //if delay = 5, 5/60 of a second to wait after mouse button has been held down
}
}
}
GUI_EXECUTE
{
}
GUI_DRAW
{
// draw background
setpencolor(parent.faceColor)
drawrect location.x, location.y to location.x+parent.buttonWidth, location.y+parent.arrowHeight
// draw border
setpencolor(parent.borderColor)
drawline location.x, location.y to location.x + parent.buttonWidth, location.y
drawline location.x, location.y to location.x, location.y + parent.arrowheight
setpencolor(parent.shadowcolor)
drawline location.x + parent.buttonWidth, location.y to location.x + parent.buttonWidth, location.y
drawline location.x, location.y + parent.arrowheight to location.x + parent.buttonWidth, location.y + parent.arrowheight
setpencolor(parent.ControlColor)
if up == true
{
if use_bitmap
{
render p_arrow, location.x,location.y // if you decide to use a graphic for each arrow, here's where they need to be
}
else
{
drawline location.x+5+offsetx,location.y-1+offsety to location.x+6+offsetx,location.y-1+offsety
drawline location.x+4+offsetx,location.y+offsety to location.x+7+offsetx,location.y+offsety
drawline location.x+3+offsetx,location.y+1+offsety to location.x+8+offsetx,location.y+1+offsety
drawline location.x+2+offsetx,location.y+2+offsety to location.x+9+offsetx,location.y+2+offsety
drawline location.x+1+offsetx,location.y+3+offsety to location.x+10+offsetx,location.y+3+offsety
drawline location.x+offsetx,location.y+4+offsety to location.x+11+offsetx,location.y+4+offsety
}
}
else
{
if use_bitmap
{
render p_arrow, location.x,location.y // if you decide to use a graphic for each arrow, here's where they need to be
}
else
{
drawline location.x+offsetx,location.y+offsety to location.x+11+offsetx,location.y+offsety
drawline location.x+1+offsetx,location.y+1+offsety to location.x+10+offsetx,location.y+1+offsety
drawline location.x+2+offsetx,location.y+2+offsety to location.x+9+offsetx,location.y+2+offsety
drawline location.x+3+offsetx,location.y+3+offsety to location.x+8+offsetx,location.y+3+offsety
drawline location.x+4+offsetx,location.y+4+offsety to location.x+7+offsetx,location.y+4+offsety
drawline location.x+5+offsetx,location.y+5+offsety to location.x+6+offsetx,location.y+5+offsety
}
}
}
}
thumbslide // resizing handle
{
GUI_CREATE
{
float handleheight // this is very important for calculating behaviours
float step_height // float for the math part of thumbslider
float result // float to get the finished valuse to add to location
int thumb_pressed = false // was this slider pressed with left mouse button variable
int mouse_loc
int use_bitmap
}
GUI_MAILBOX
{
// the list top may have changed, recompute location
if parent.list_size <= parent.num_displayed //if the list doesn't go past the max_diplayed, there is no need to slide
{
location.y = (parent.location.y+parent.arrowHeight+1)
}
else
{
if ROSTER_top_of_list == parent.list_size-parent.num_displayed //if we are at the bottm of the list box, make sure that it's lined up against the down button correctly
{
location.y = parent.location.y+(parent.itemHeight*(parent.num_displayed))-parent.arrowHeight-handleheight-1
}
else //position formula = 1.) calc the size of the thumslider area/calc num of steps to slide = the pixel height of a single step 2.) calc the location of the very top of thumbslider 3.) add to the location the result of ROSTER_top_of_list times the step height
{
step_height = ((parent.itemHeight*parent.num_displayed)-(parent.arrowHeight*2)-(handleheight)-2) / (parent.list_size-parent.num_displayed)
location.y = sender.location.y+parent.arrowHeight+1
result = (ROSTER_top_of_list * step_height)
location.y += result
}
}
}
LBUTTON_UPDATE
{
if (mouse.left == BUTTON_PRESSED) // this keeps a glitch from happening when using the thumbregions
{
focus(this)
thumb_pressed = true //now we can know that the user wanted to drag the thumbslider
mouse_loc = mouse.y - location.y
}
else
if thumb_pressed
{
if (mouse.left == BUTTON_HELD) // this drags the thumbslider as long as the button is held
{
location.y = mouse.y - mouse_loc //-(handleheight/2)
mail (location.y)
always_in_region = true
}
else // if anything else but held, release the thumbslider
{
always_in_region = false
thumb_pressed = false
}
}
}
GUI_DRAW
{
setpencolor(parent.gutterColor)
drawrect parent.location.x+parent.itemwidth+1, parent.location.y-parent.column_header_height to parent.location.x+parent.itemwidth+parent.buttonWidth+1, parent.location.y+(parent.itemHeight*(parent.num_displayed))
setpencolor(parent.bordercolor)
drawframe parent.location.x+parent.itemwidth+1, parent.location.y-parent.column_header_height to parent.location.x+parent.itemwidth+parent.buttonWidth+1, parent.location.y+(parent.itemHeight*(parent.num_displayed))
if use_bitmap
{
render p_thumbslider, location.x+offsetx,location.y
}
else
{
setpencolor(parent.facecolor)
drawrect location.x + 2, location.y + 1 to (location.x + parent.buttonWidth) - 1, (location.y + handleheight) - 1
setpencolor(parent.borderColor)
drawline location.x + 2, location.y + 1 to (location.x + parent.buttonWidth) - 1, location.y + 1
drawline location.x + 2, location.y + 1 to location.x + 2, location.y + handleheight - 1
setpencolor(parent.shadowcolor)
drawline location.x + 2, location.y + handleheight - 1 to (location.x + parent.buttonWidth) - 1, location.y + handleheight - 1
drawline (location.x + parent.buttonWidth) - 1, location.y + 1 to (location.x + parent.buttonWidth) - 1, location.y + handleheight - 1
}
}
}
thumbregion
{
//script for scalable invisible regions for the thumbslider negative space
GUI_CREATE
{
int timeToMove //created to store a delay value for button presses
}
LBUTTON_UPDATE
{
if (mouse.left == BUTTON_PRESSED)
{
timeToMove = gettime()+parent.first_delay //if delay = 25, 25/60 of a second to wait after first click; gettime() takes the current clock value
mail( 0 ) //sends 0 (the value is not important in this case) to parent to do what's necessary to move the thumbslider
}
if (mouse.left == BUTTON_HELD)
{
if gettime() > timeToMove
{
// notify parent object (the one running s_droplistbox)
mail( 0 ) //sends 0 (the value is not important in this case) to parent to do what's necessary to move the thumbslider
timeToMove = gettime()+parent.second_delay //if delay = 25, 5/60 of a second to wait after mouse button has been held down
}
}
}
}
tabs
{
GUI_CREATE
{
int tabsx = 466
int tabsy = 50
int total_buttons
total_buttons = 2 // MSL
int i
object o_radiobutton[2] // MSL
for(i = 0; i < total_buttons; i++)
{
o_radiobutton[i] = s_multistatepanetoggle
o_radiobutton[i].location = tabsx + (i * 101),tabsy, 10
o_radiobutton[i].file = GPATH "3state_tabs_98x26.tga"
o_radiobutton[i].total_states = 3
}
o_radiobutton[0].text = localize$(IDS_MP_LOBBY_MISSION)
o_radiobutton[1].text = localize$(IDS_MP_LOBBY_MAP)
// MSL o_radiobutton[2].text = localize$(IDS_MP_LOBBY_SERVER)
for(i = 0; i < total_buttons; i++)
{
initialize(o_radiobutton[i])
}
mail(2, o_radiobutton[0])
int on_tab = 0
}
GUI_DRAW
{
setpencolor(0x66000000)
drawrect tabsx + 2, tabsy + 2 to tabsx + 98, tabsy + 24 // tab 1
drawrect tabsx + 101, tabsy + 2 to tabsx + 199, tabsy + 24 // tab 2
// drawrect tabsx + 202, tabsy + 2 to tabsx + 300, tabsy + 24 // tab 3
drawrect tabsx + 2, tabsy + 26 to tabsx + 301, tabsy + 387 + TABS_Y_DIFFER // total..
setpencolor (0xffffffff)
drawline tabsx + 2, tabsy + 26 to tabsx + 2, tabsy + 387 + TABS_Y_DIFFER // left
drawline tabsx + 98, tabsy + 26 to tabsx + 105, tabsy + 26 // tab1 rigbt bottom
// drawline tabsx + 199, tabsy + 26 to tabsx + 206, tabsy + 26 // tab2 rigbt bottom
drawline tabsx + 199, tabsy + 26 to tabsx + 300, tabsy + 26 // tab2 rigbt bottom
setpencolor (0xffbbbbcc)
drawline tabsx + 3, tabsy + 26 to tabsx + 3, tabsy + 386 + TABS_Y_DIFFER // left 2
drawline tabsx + 300, tabsy + 26 to tabsx + 300, tabsy + 386 + TABS_Y_DIFFER // right
drawline tabsx + 3, tabsy + 386 + TABS_Y_DIFFER to tabsx + 300, tabsy + 386 + TABS_Y_DIFFER // bottom
drawline tabsx + 98, tabsy + 27 to tabsx + 105, tabsy + 27 // tab1 rigbt bottom 2
// drawline tabsx + 199, tabsy + 27 to tabsx + 206, tabsy + 27 // tab2 rigbt bottom 2
drawline tabsx + 199, tabsy + 27 to tabsx + 300, tabsy + 27 // tab2 rigbt bottom 2
setpencolor (0xffbbbbcc)
drawline tabsx + 3, tabsy + 26 to tabsx + 3, tabsy + 386 + TABS_Y_DIFFER // left 2
drawline tabsx + 300, tabsy + 26 to tabsx + 300, tabsy + 386 + TABS_Y_DIFFER// right
drawline tabsx + 3, tabsy + 386 + TABS_Y_DIFFER to tabsx + 300, tabsy + 386 + TABS_Y_DIFFER
drawline tabsx + 98, tabsy + 27 to tabsx + 105, tabsy + 27 // tab1 rigbt bottom 2
setpencolor (0xff777777)
drawline tabsx + 301, tabsy + 26 to tabsx + 301, tabsy + 387 + TABS_Y_DIFFER // right 2
drawline tabsx + 2, tabsy + 387 + TABS_Y_DIFFER to tabsx + 301, tabsy + 387 + TABS_Y_DIFFER // bottom 2
}
GUI_MAILBOX
{
int i
for(i = 0; i < total_buttons; i++)
{
if (sender != o_radioButton[i])
{
// turn off every button but the one just received
mail(1, o_radioButton[i])
}
}
if sender == o_radiobutton[0]
{
script_continue @conlobbymission@
if on_tab == 1
{
script_pause @hostlobbymap@,2
}
if on_tab == 2
{
script_pause @HostLobbyserver@,2
}
on_tab = 0
}
if sender == o_radiobutton[1]
{
script_continue @hostlobbymap@
if on_tab == 0
{
script_pause @conlobbymission@,2
}
if on_tab == 2
{
script_pause @HostLobbyserver@,2
}
on_tab = 1
}
// if sender == o_radiobutton[2]
// {
// script_continue @HostLobbyserver@
//
// if on_tab == 0
// {
// script_pause @conlobbymission@,2
// }
// if on_tab == 1
// {
// script_pause @hostlobbymap@,2
// }
//
// on_tab = 2
// }
}
}
mech_randomizer
{
GUI_CREATE
{
int id
location = 0,0,10
region = 0,0 to 0,0
int itemWidth = 0
int itemHeight = 0
sound btnRolloverSound = SPATH "sfx_button7.wav"
sound btnPressedSound = SPATH "sfx_button5.wav"
}
GUI_INIT
{
region = 0, 0 to itemWidth, itemHeight
}
REGION_ENTERED
{
play btnRolloverSound, 1
}
LBUTTON_UPDATE
{
if mouse.left == BUTTON_CLICKED
{
mail(1, this)
}
}
RBUTTON_UPDATE
{
if mouse.right == BUTTON_CLICKED
{
mail(2, this)
}
}
GUI_MAILBOX
{
if (sender == this)
{
int nWhichButton = getmessage()
play btnPressedSound, 1
if (nWhichButton == 1) // left button
{
last_mech = random(0, MAX_ALLOWED_MECHS - 1)
}
else // right button
{
int pick_mech = 0
pick_mech = random(0, 3)
// MSL ADD MECH
if pick_mech = 0
last_mech = 29 // Loki
if pick_mech = 1
last_mech = 31 // Madcat
if pick_mech = 2
last_mech = 46 // Thor
if pick_mech = 3
last_mech = 50 // vulture
}
if (USE_ALLOWED_MECHS)
{
// last_mech = random(0, MAX_ALLOWED_MECHS - 1)
stock_mech_selected = allowed_mechs[last_mech]
}
else
{
// last_mech = random(0, variant_step - 1)
stock_mech_selected = last_mech
}
last_count = stock_array[stock_mech_selected]
#if USE_O_MECH_VARIANT2
o_mech_variant2[id].list_size = 0
do
{
o_mech_variant2[id].list_item[o_mech_variant2[id].list_size] = mech2[last_count]
o_mech_variant2[id].list_size++
last_count++
if (last_count == $$m_MechCount$$)
break
}
while(stock_id[last_count] != 1)
if (nWhichButton == 1) // left button
variant_mech_selected = 0
else
variant_mech_selected = random(0, o_mech_variant2[id].list_size - 1)
#endif // USE_O_MECH_VARIANT2
o_mech_variant[id].nselected = last_mech
#if USE_O_MECH_VARIANT2
o_mech_variant2[id].nselected = variant_mech_selected
#endif // USE_O_MECH_VARIANT2
initialize(o_mech_variant[id])
if (ROSTER_top_of_list <= id) && (id < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
activate(o_mech_variant[id])
else
deactivate(o_mech_variant[id])
#if USE_O_MECH_VARIANT2
initialize(o_mech_variant2[id])
if (ROSTER_top_of_list <= id) && (id < ROSTER_top_of_list + ROSTER_DISPLAY_COUNT)
activate(o_mech_variant2[id])
else
deactivate(o_mech_variant2[id])
#endif // USE_O_MECH_VARIANT2
}
}
GUI_DRAW
{
setpencolor(255,255,255,255)
print3d_margins = 0, 0 to getresx(), getresy()
print3d_attributes = gFont3d, 0xffeeeeee,1,0,1,0,0,just_left
print3d_position = location.x, location.y + (VAR_LIST_HEIGHT - getprint3dheight("text")) / 2
print3d "@"
}
}
generic_region
{
LBUTTON_UPDATE
{
mail(0)
}
}
s_error_string
{
GUI_CREATE
{
string text
font3d text_font = FPATH localize$(IDS_F_ML_LABEL)
int text_color = packcolor(255,255,255,255)
framerate = 20
int width = 100
int height = 20
}
GUI_DRAW
{
if length$(text) > 0
{
print3d_margins = location.x,location.y to location.x+width, location.y+height
print3d_attributes = text_font, text_color, 1, 0, 1, 0, 0, just_left
print3d_position = location.x + (width - getprint3dwidth(text) - 2), location.y + (height - getprint3dheight("text")) / 2
print3d text
}
}
}