/* * Copyright (C) Volition, Inc. 1999. All rights reserved. * * All source code herein is the property of Volition, Inc. You may not sell * or otherwise commercially exploit the source or things you created based on the * source. * */ #ifndef _MULTITEAMSELECT_H #define _MULTITEAMSELECT_H // ------------------------------------------------------------------------------------------------------ // TEAM SELECT DEFINES/VARS // #include "globalincs/pstypes.h" #include "gamesnd/gamesnd.h" #include "missionui/missionscreencommon.h" struct header; // should be initialize to 0 inside of multi_vars_init extern int Multi_ts_inited; #define MULTI_TS_MAX_TVT_TEAMS 2 // 2 teams max for now #define MULTI_TS_NUM_SHIP_SLOTS 12 // # of ship slots in non team vs. team mode // deleted ship objnums extern int Multi_ts_deleted_objnums[MULTI_TS_MAX_TVT_TEAMS * MULTI_TS_NUM_SHIP_SLOTS]; extern int Multi_ts_num_deleted; // packet codes #define TS_CODE_LOCK_TEAM 0 // the specified team's slots are locked #define TS_CODE_PLAYER_UPDATE 1 // a player slot update for the specified team // ------------------------------------------------------------------------------------------------------ // TEAM SELECT FUNCTIONS // // initialize the team select screen (always call, even when switching between weapon select, etc) void multi_ts_init(); // initialize all critical internal data structures void multi_ts_common_init(); // initialize internal structures that need to be sync'd between host/client void multi_ts_common_level_init(); // do frame for team select void multi_ts_do(); // close the team select screen (always call, even when switching between weapon select, etc) void multi_ts_close(); // drop a carried icon void multi_ts_drop(int from_type,int from_index,int to_type,int to_index,int ship_class,int player_index = -1); // assign all players to appropriate default wings/slots void multi_ts_assign_players_all(); // is the given slot disabled for the specified player int multi_ts_disabled_slot(int slot_index,int player_index = -1); // is the given slot disabled for the specified player, _and_ it is his ship as well int multi_ts_disabled_high_slot(int slot_index,int player_index = -1); // delete ships which have been removed from the game, tidy things void multi_ts_create_wings(); // resynch all display/interface elements based upon all the ship/weapon pool values void multi_ts_sync_interface(); // do any necessary processing for players who have left the game void multi_ts_handle_player_drop(); // handle all details when the commit button is pressed (including possibly reporting errors/popups) commit_pressed_status multi_ts_commit_pressed(); // get the team # of the given ship int multi_ts_get_team(char *ship_name); // function to get the team and slot of a particular ship void multi_ts_get_team_and_slot(char *ship_name,int *team_index,int *slot_index); // function to return the shipname of the ship belonging in slot N void multi_ts_get_shipname( char *ship_name, int team, int slot_index ); // the "lock" button has been pressed void multi_ts_lock_pressed(); // if i'm "locked" int multi_ts_is_locked(); // show a popup saying "only host and team captains can modify, etc, etc" void multi_ts_maybe_host_only_popup(); // return if a player is currently in a loadout slot bool multi_ts_is_player_in_slot(int slot_idx); // return if a player is allowed in a loadout slot bool multi_ts_is_player_allowed_in_slot(int slot_idx); // ------------------------------------------------------------------------------------------------------ // TEAM SELECT PACKET HANDLERS // // send a player slot position update void send_pslot_update_packet(int team,int code, interface_snd_id sound = interface_snd_id()); // process a player slot position update void process_pslot_update_packet(ubyte *data, header *hinfo); // ------------------------------------------------------------------------------------------------------ // TEAM SELECT STUBBED FUNCTIONS // #endif