summaryrefslogtreecommitdiff
path: root/src/uqm/commglue.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uqm/commglue.h')
-rw-r--r--src/uqm/commglue.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/src/uqm/commglue.h b/src/uqm/commglue.h
new file mode 100644
index 0000000..5a1e440
--- /dev/null
+++ b/src/uqm/commglue.h
@@ -0,0 +1,183 @@
+//Copyright Paul Reiche, Fred Ford. 1992-2002
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef UQM_COMMGLUE_H_
+#define UQM_COMMGLUE_H_
+
+#include "globdata.h"
+#include "resinst.h"
+#include "libs/sound/trackplayer.h"
+#include "libs/callback.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef enum {
+ ARILOU_CONVERSATION,
+ CHMMR_CONVERSATION,
+ COMMANDER_CONVERSATION,
+ ORZ_CONVERSATION,
+ PKUNK_CONVERSATION,
+ SHOFIXTI_CONVERSATION,
+ SPATHI_CONVERSATION,
+ SUPOX_CONVERSATION,
+ THRADD_CONVERSATION,
+ UTWIG_CONVERSATION,
+ VUX_CONVERSATION,
+ YEHAT_CONVERSATION,
+ MELNORME_CONVERSATION,
+ DRUUGE_CONVERSATION,
+ ILWRATH_CONVERSATION,
+ MYCON_CONVERSATION,
+ SLYLANDRO_CONVERSATION,
+ UMGAH_CONVERSATION,
+ URQUAN_CONVERSATION,
+ ZOQFOTPIK_CONVERSATION,
+ SYREEN_CONVERSATION,
+ BLACKURQ_CONVERSATION,
+ TALKING_PET_CONVERSATION,
+ SLYLANDRO_HOME_CONVERSATION,
+ URQUAN_DRONE_CONVERSATION,
+ YEHAT_REBEL_CONVERSATION,
+ INVALID_CONVERSATION,
+} CONVERSATION;
+
+extern LOCDATA CommData;
+extern UNICODE shared_phrase_buf[2048];
+
+#define PLAYER_SAID(r,i) ((r)==(i))
+#define PHRASE_ENABLED(p) \
+ (*(UNICODE *)GetStringAddress ( \
+ SetAbsStringTableIndex (CommData.ConversationPhrases, (p)-1) \
+ ) != '\0')
+#define DISABLE_PHRASE(p) \
+ (*(UNICODE *)GetStringAddress ( \
+ SetAbsStringTableIndex (CommData.ConversationPhrases, (p)-1) \
+ ) = '\0')
+
+#define Response(i,a) \
+ DoResponsePhrase(i,(RESPONSE_FUNC)a,0)
+
+enum
+{
+ GLOBAL_PLAYER_NAME = -1000000,
+ GLOBAL_SHIP_NAME,
+ GLOBAL_ALLIANCE_NAME,
+};
+
+typedef COUNT RESPONSE_REF;
+
+typedef void (*RESPONSE_FUNC) (RESPONSE_REF R);
+
+extern void DoResponsePhrase (RESPONSE_REF R, RESPONSE_FUNC
+ response_func, UNICODE *ContstructStr);
+extern void DoNPCPhrase (UNICODE *pStr);
+
+// The CallbackFunction is queued and executes synchronously
+// on the Starcon2Main thread
+extern void NPCPhrase_cb (int index, CallbackFunction cb);
+#define NPCPhrase(index) NPCPhrase_cb ((index), NULL)
+extern void NPCPhrase_splice (int index);
+extern void NPCNumber (int number, const char *fmt);
+
+#define ALLIANCE_NAME_BUFSIZE 256
+extern void GetAllianceName (UNICODE *buf, RESPONSE_REF name_1);
+
+extern void construct_response (UNICODE *buf, int R /* promoted from
+ RESPONSE_REF */, ...);
+
+typedef enum {
+ Segue_peace,
+ // When initiating a conversation, open comms directly.
+ // When terminating a conversation, depart in peace.
+ Segue_hostile,
+ // When initiating a conversation, offer the choice to attack.
+ // When terminating a conversation, go into battle.
+ Segue_victory,
+ // (when terminating a conversation) instant victory
+ Segue_defeat,
+ // (when terminating a conversation) game over
+} Segue;
+
+void setSegue (Segue segue);
+Segue getSegue (void);
+
+extern LOCDATA* init_race (CONVERSATION comm_id);
+
+extern LOCDATA* init_arilou_comm (void);
+
+extern LOCDATA* init_blackurq_comm (void);
+
+extern LOCDATA* init_chmmr_comm (void);
+
+extern LOCDATA* init_commander_comm (void);
+
+extern LOCDATA* init_druuge_comm (void);
+
+extern LOCDATA* init_ilwrath_comm (void);
+
+extern LOCDATA* init_melnorme_comm (void);
+
+extern LOCDATA* init_mycon_comm (void);
+
+extern LOCDATA* init_orz_comm (void);
+
+extern LOCDATA* init_pkunk_comm (void);
+
+extern LOCDATA* init_rebel_yehat_comm (void);
+
+extern LOCDATA* init_shofixti_comm (void);
+
+extern LOCDATA* init_slyland_comm (void);
+
+extern LOCDATA* init_slylandro_comm (void);
+
+extern LOCDATA* init_spahome_comm (void);
+
+extern LOCDATA* init_spathi_comm (void);
+
+extern LOCDATA* init_starbase_comm (void);
+
+extern LOCDATA* init_supox_comm (void);
+
+extern LOCDATA* init_syreen_comm (void);
+
+extern LOCDATA* init_talkpet_comm (void);
+
+extern LOCDATA* init_thradd_comm (void);
+
+extern LOCDATA* init_umgah_comm (void);
+
+extern LOCDATA* init_urquan_comm (void);
+
+extern LOCDATA* init_utwig_comm (void);
+
+extern LOCDATA* init_vux_comm (void);
+
+extern LOCDATA* init_yehat_comm (void);
+
+extern LOCDATA* init_zoqfot_comm (void);
+
+extern LOCDATA* init_umgah_comm (void);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* UQM_COMMGLUE_H_ */