mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-09 13:01:29 -10:00
* multi pxo api (cherry picked from commit 9af26da728a19b9d6c890968a314e8e56ecc1ddf) * multi pxo help api (cherry picked from commit f4df704576ddb648e9c486907b07ae172c859feb) * minor fixes * not extern * break out chat message data into a table * address some feedback * return empty strings if not in multi * use GetChannelByUser() instead * once more with feeling * correct documentation
174 lines
5.2 KiB
C
174 lines
5.2 KiB
C
/*
|
|
* Copyright (C) Volition, Inc. 2005. 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 _PARALLAX_ONLINE_HEADER_FILE
|
|
#define _PARALLAX_ONLINE_HEADER_FILE
|
|
|
|
#include "playerman/player.h"
|
|
|
|
// ----------------------------------------------------------------------------------------------------
|
|
// PXO DEFINES/VARS
|
|
//
|
|
|
|
#define MAX_PXO_TEXT_LEN 255
|
|
|
|
// default url for PXO rankings
|
|
//#define MULTI_PXO_RANKINGS_URL "http://www.volition-inc.com"
|
|
#define MULTI_PXO_RANKINGS_URL "http://www.pxo.net/rankings/fs2full.cfm"
|
|
|
|
|
|
// default url for PXO account creation
|
|
//#define MULTI_PXO_CREATE_URL "http://www.parallaxonline.com/register.html"
|
|
#define MULTI_PXO_CREATE_URL "http://www.pxo.net/newaccount.cfm"
|
|
|
|
// default url for PXO account verification
|
|
//#define MULTI_PXO_VERIFY_URL "http://www.parallaxonline.com/verify.html"
|
|
#define MULTI_PXO_VERIFY_URL "http://www.pxo.net/verify.cfm"
|
|
|
|
// default url for PXO banners
|
|
#define MULTI_PXO_BANNER_URL "http://www.pxo.net/files/banners"
|
|
|
|
// tracker and PXO addresses
|
|
#define MULTI_PXO_USER_TRACKER_IP "ut.pxo.net"
|
|
#define MULTI_PXO_GAME_TRACKER_IP "gt.pxo.com"
|
|
#define MULTI_PXO_CHAT_IP "chat.pxo.net"
|
|
|
|
// channel related stuff -------------------------------------------
|
|
#define MAX_CHANNEL_NAME_LEN 32
|
|
#define MAX_CHANNEL_DESCRIPT_LEN 120
|
|
|
|
typedef struct pxo_channel {
|
|
char name[MAX_CHANNEL_NAME_LEN + 1]; // name
|
|
char desc[MAX_CHANNEL_DESCRIPT_LEN + 1]; // description
|
|
short num_users; // # users, or -1 if not in use
|
|
short num_servers; // the # of servers registered on this channel
|
|
} pxo_channel;
|
|
|
|
extern SCP_vector<pxo_channel> Multi_pxo_channels;
|
|
|
|
// channel we're currently connected to, num_users == -1, if we're not connected
|
|
extern pxo_channel Multi_pxo_channel_current;
|
|
|
|
// player related stuff -------------------------------------------
|
|
#define MAX_CHAT_LINES 500 //Abritrary size limit. After this number, old messages are removed from the start of the chat vector
|
|
#define MAX_PLAYER_NAME_LEN 32
|
|
|
|
extern SCP_vector<SCP_string> Multi_pxo_players;
|
|
|
|
// chat related stuff ----------------------------------------------
|
|
#define MAX_CHAT_LINE_LEN 256
|
|
|
|
// chat flags
|
|
#define CHAT_MODE_NORMAL 0 // normal chat from someone
|
|
#define CHAT_MODE_SERVER 1 // is from the server, display appropriately
|
|
#define CHAT_MODE_CARRY 2 // is a carryover from a previous line
|
|
#define CHAT_MODE_PRIVATE 3 // is a private message
|
|
#define CHAT_MODE_CHANNEL_SWITCH 4 // "switching channels" message - draw in red
|
|
#define CHAT_MODE_MOTD 5 // message of the day from the chat server
|
|
|
|
typedef struct chat_line {
|
|
char text[MAX_CHAT_LINE_LEN + 1];
|
|
int mode;
|
|
} chat_line;
|
|
|
|
extern SCP_list<chat_line> Multi_pxo_chat;
|
|
|
|
// banner related stuff --------------------------------------------
|
|
// banners
|
|
typedef struct pxo_banner {
|
|
SCP_string ban_file; // base filename of the banner
|
|
SCP_string ban_file_url; // full url of the file to get (convenient)
|
|
SCP_string ban_url; // url to go to when clicked
|
|
int ban_bitmap; // banner bitmap
|
|
} pxo_banner;
|
|
|
|
// active pxo banner
|
|
extern pxo_banner Multi_pxo_banner;
|
|
|
|
// help page related stuff -----------------------------------------
|
|
#define MULTI_PXO_MAX_LINES_PP 57
|
|
#define MULTI_PXO_MAX_PAGES 5
|
|
|
|
// help text pages
|
|
typedef struct help_page {
|
|
char* text[MULTI_PXO_MAX_LINES_PP];
|
|
int num_lines;
|
|
} help_page;
|
|
|
|
extern help_page Multi_pxo_help_pages[MULTI_PXO_MAX_PAGES];
|
|
|
|
// Globals for the UI API
|
|
|
|
extern player Multi_pxo_pinfo_player;
|
|
|
|
// if we're connected
|
|
extern int Multi_pxo_connected;
|
|
|
|
// the status text itself
|
|
extern char Multi_pxo_status_text[MAX_PXO_TEXT_LEN];
|
|
|
|
// the motd text itself
|
|
extern char Pxo_motd[1024];
|
|
|
|
// ----------------------------------------------------------------------------------------------------
|
|
// PXO FUNCTIONS
|
|
//
|
|
|
|
// initialize the PXO screen
|
|
void multi_pxo_init(int use_last_channel, bool api_access = false);
|
|
|
|
// do frame for the PXO screen
|
|
void multi_pxo_do();
|
|
|
|
// close the PXO screen
|
|
void multi_pxo_close(bool api_access = false);
|
|
|
|
// initialize the PXO help screen
|
|
void multi_pxo_help_init();
|
|
|
|
// load the help file up
|
|
void multi_pxo_help_load();
|
|
|
|
// free the help text from memory
|
|
void multi_pxo_help_free();
|
|
|
|
// do frame for PXO help
|
|
void multi_pxo_help_do();
|
|
|
|
// close the pxo screen
|
|
void multi_pxo_help_close();
|
|
|
|
// open up a URL
|
|
void multi_pxo_url(const char *url);
|
|
|
|
// called from the game tracker API - server count update for a channel
|
|
void multi_pxo_channel_count_update(char *name,int count);
|
|
|
|
// run the networking api
|
|
void multi_pxo_api_process();
|
|
|
|
// run normally (no popups)
|
|
void multi_pxo_do_normal(bool api_access = false);
|
|
|
|
// process the various network list items
|
|
void multi_pxo_process_common(bool api_access = false);
|
|
|
|
// send a chat string to the current pxo channel
|
|
void multi_pxo_chat_send(const char* msg);
|
|
|
|
// try to join a channel
|
|
void multi_pxo_maybe_join_channel(pxo_channel* chan);
|
|
|
|
// public method to get a player's info. Returns true if successful, false otherwise
|
|
bool multi_pxo_maybe_get_player(const char* name);
|
|
|
|
#endif
|