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.
3849 lines
129 KiB
Plaintext
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
|
|
}
|
|
}
|
|
}
|