Files
fs2open.github.com/code/network/multi_pxo.h
T
Mike Nelson 2e34c29215 Scpui multi pxo api (#5845)
* 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
2024-03-13 15:23:44 -04:00

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