15 #include "EventEditor.h" 
   17 #include "Management.h" 
   18 #include "Sexp_tree.h" 
   27 static char THIS_FILE[] = __FILE__;
 
   75         CDialog::DoDataExchange(pDX);
 
  127         ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_EVENT_TREE, OnBeginlabeleditEventTree)
 
  128         ON_NOTIFY(TVN_ENDLABELEDIT, IDC_EVENT_TREE, OnEndlabeleditEventTree)
 
  131         ON_BN_CLICKED(
ID_OK, OnOk)
 
  133         ON_NOTIFY(TVN_SELCHANGED, IDC_EVENT_TREE, OnSelchangedEventTree)
 
  149         ON_LBN_DBLCLK(IDC_MESSAGE_LIST, OnDblclkMessageList)
 
  158         if (box->FindStringExact(-1, name) == CB_ERR) {
 
  159                 box->AddString(name);
 
  171         CDialog::OnInitDialog();  
 
  195         for (i=0; i<m_num_messages; i++) {
 
  197                 m_messages.push_back(msg); 
 
  198                 if (m_messages[i].avi_info.name){
 
  199                         m_messages[
i].avi_info.name = strdup(m_messages[i].avi_info.name);
 
  201                 if (m_messages[i].wave_info.name){
 
  202                         m_messages[
i].wave_info.name = strdup(m_messages[i].wave_info.name);
 
  212         list->ResetContent();
 
  213         for (i=0; i<m_num_messages; i++) {
 
  214                 list->AddString(m_messages[i].
name);
 
  219         box->AddString(
"<None>");
 
  265         box->AddString(
"<None>");
 
  268                         if (box->FindStringExact(i, 
Messages[i].wave_info.name) == CB_ERR){
 
  269                                 box->AddString(
Messages[i].wave_info.name);
 
  277         box->AddString(
"<None>");
 
  283         if ( Num_messages > Num_builtin_messages ){
 
  302         for (i=0; i<m_num_events; i++) {
 
  317                 if (!(*m_events[i].
name)){
 
  318                         strcpy_s(m_events[i].name, 
"<Unnamed>");
 
  325                 if ( m_events[i].repeat_count <= 0 ){
 
  340         for (i=0; i<m_num_events; i++) {
 
  344                 if (m_events[i].chain_delay >= 0) {
 
  346                         if (m_events[i].objective_text) {
 
  351                         if (m_events[i].objective_text) {
 
  374         TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
 
  390         TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
 
  424         for (i=0; i<m_num_events; i++) {
 
  441                 if (m_events[i].mission_log_flags != 
Mission_events[i].mission_log_flags)
 
  456         for (i=0; i<m_num_messages; i++) {
 
  510         for (i=0; i<m_num_events; i++)
 
  513                         strcpy_s(names[1][count], m_events[i].name);
 
  528         Num_mission_events = m_num_events;
 
  529         for (i=0; i<m_num_events; i++) {
 
  550         for (i=0; i<m_num_messages; i++)
 
  551                 Messages[i + Num_builtin_messages] = m_messages[i];
 
  555         Event_editor_dlg = NULL;
 
  577                 if (m_messages[
m_cur_msg].avi_info.name){
 
  583                 if (m_messages[m_cur_msg].wave_info.name){
 
  590                 if ( m_messages[m_cur_msg].persona_index != -1 ){
 
  630                         for (i=0; i<m_num_events; i++)
 
  631                                 if (m_events[i].formula == node)
 
  636                         while (i < m_num_events - 1) {
 
  637                                 m_events[
i] = m_events[i + 1];
 
  638                                 m_sig[
i] = m_sig[i + 1];
 
  651                         for (i=0; i<m_num_events; i++)
 
  652                                 if (m_events[i].formula == node)
 
  670                 MessageBox(
"You have reached the limit on mission events.\n" 
  671                         "Can't add any more.");
 
  687                 MessageBox(
"You have reached the limit on mission events.\n" 
  688                         "Can't add any more.");
 
  697         if(cur_event < 0 || m_num_events == 0)
 
  704                 for (i=m_num_events; i>cur_event; i--) {
 
  705                         m_events[
i] = m_events[i - 1];
 
  706                         m_sig[
i] = m_sig[i - 1];
 
  803         Event_editor_dlg = NULL;
 
  827         Event_editor_dlg = NULL;
 
  834         for (i=0; i<m_num_events; i++){
 
  835                 if (m_events[i].formula == old){
 
  873         if (m_events[e].objective_text) {
 
  874                 free(m_events[e].objective_text);
 
  884         if (m_events[e].objective_key_text) {
 
  885                 free(m_events[e].objective_key_text);
 
  950         NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 
  956         h = pNMTreeView->itemNew.hItem;
 
  967         for (i=0; i<m_num_events; i++){
 
  968                 if (m_events[i].formula == z){
 
  980 void event_editor::update_cur_event()
 
 1010         if (m_events[cur_event].chain_delay >= 0) {
 
 1021         if (m_events[cur_event].objective_text){
 
 1027         if (m_events[cur_event].objective_key_text){
 
 1053         if (m_events[cur_event].mission_log_flags & 
MLF_SEXP_TRUE) {
 
 1131         for (index1=0; index1<m_num_events; index1++){
 
 1132                 if (m_events[index1].formula == node1){
 
 1137         Assert(index1 < m_num_events);
 
 1138         for (index2=0; index2<m_num_events; index2++){
 
 1139                 if (m_events[index2].formula == node2){
 
 1144         Assert(index2 < m_num_events);
 
 1145         m = m_events[index1];
 
 1147         while (index1 < index2) {
 
 1148                 m_events[index1] = m_events[index1 + 1];
 
 1149                 m_sig[index1] = m_sig[index1 + 1];
 
 1153         while (index1 > index2 + 1) {
 
 1154                 m_events[index1] = m_events[index1 - 1];
 
 1155                 m_sig[index1] = m_sig[index1 - 1];
 
 1159         m_events[index1] = 
m;
 
 1199         static int flag = 0;
 
 1219         int i, conflict = 0;
 
 1232                 for (i=0; i<m_num_messages; i++){
 
 1243                         list->DeleteString(num);
 
 1249                 if (m_messages[num].avi_info.name){
 
 1250                         free(m_messages[num].avi_info.name);
 
 1255                         m_messages[
num].avi_info.name = NULL;
 
 1257                         m_messages[
num].avi_info.name = strdup(ptr);
 
 1260                 if (m_messages[num].wave_info.name){
 
 1261                         free(m_messages[num].wave_info.name);
 
 1266                         m_messages[
num].wave_info.name = NULL;
 
 1268                         m_messages[
num].wave_info.name = strdup(ptr);
 
 1276                         m_messages[
num].multi_team = -1;
 
 1301         m_messages.push_back(msg);
 
 1313         Assertion((
m_cur_msg >= -1) && (
m_cur_msg < m_num_messages), 
"Unexpected m_cur_msg value (%d); expected either -1, or between 0-%d. Get a coder!\n", 
m_cur_msg, m_num_messages - 1);
 
 1318         if (m_messages[
m_cur_msg].avi_info.name){
 
 1319                 free(m_messages[m_cur_msg].avi_info.name);
 
 1321         if (m_messages[m_cur_msg].wave_info.name){
 
 1322                 free(m_messages[m_cur_msg].wave_info.name);
 
 1330         m_messages.erase(m_messages.begin() + 
m_cur_msg); 
 
 1333         if (m_cur_msg >= m_num_messages){
 
 1334                 m_cur_msg = m_num_messages - 1;
 
 1352         CFileDialog dlg(
TRUE, 
"ani", 
m_avi_filename, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
 
 1353                 "Ani Files (*.ani)|*.ani|Eff Files (*.eff)|*.eff|Avi Files (*.avi)|*.avi|Both (*.ani, *.avi)|*.ani;*.avi||");
 
 1355         if (dlg.DoModal() == IDOK) {
 
 1382         CFileDialog dlg(
TRUE, 
"wav", 
m_wave_filename, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
 
 1383                 "Voice Files (*.ogg, *.wav)|*.ogg;*.wav|Ogg Vorbis Files (*.ogg)|*.ogg|Wave Files (*.wav)|*.wav||");
 
 1385         if (dlg.DoModal() == IDOK) {
 
 1397         if ( (i < 0) || (i >= m_num_messages) ){
 
 1401         return m_messages[
i].name;
 
 1406         return m_messages[
i].name;
 
 1459         z = box -> GetCurSel();
 
 1474         return CDialog::DestroyWindow();
 
 1481         if (m_wave_id >= 0) {
 
 1490         if (m_wave_id >= 0) {
 
 1505         if ( cur_event < 0 ){
 
 1544         int cur_index = list->GetCurSel();
 
 1548         list->GetText(cur_index, buffer);
 
 1553         if (num_messages == 0) {
 
 1555                 sprintf(message, 
"No events using message '%s'", buffer);
 
 1563                         if (num_messages == 1) {
 
 1569                                 for (
int i=0; 
i<num_messages; 
i++) {
 
 1576                                 if (found_pos == -1) {
 
 1579                                 } 
else if (found_pos == num_messages-1) {
 
void record_window_data(window_data *wndd, CWnd *wnd)
 
#define MAX_SEARCH_MESSAGE_DEPTH
 
int save_message(int num)
 
GLfloat GLfloat GLfloat GLfloat h
 
void add_sub_tree(int node, HTREEITEM root)
 
afx_msg void OnBrowseAvi()
 
#define MLF_SEXP_KNOWN_FALSE
 
afx_msg void OnDblclkMessageList()
 
afx_msg void OnDeleteMsg()
 
afx_msg void OnUpdateRepeatCount()
 
void swap_handler(int node1, int node2)
 
#define IDC_MISSION_LOG_TRUE
 
char message[MESSAGE_LENGTH]
 
int init_window(window_data *wndd, CWnd *wnd, int adjust=0, int pre=0)
 
afx_msg void OnBrowseWave()
 
#define CF_TYPE_VOICE_SPECIAL
 
#define PERSONA_FLAG_LARGE
 
GLenum GLsizei GLenum GLenum const GLvoid * image
 
#define PERSONA_FLAG_COMMAND
 
void link_modified(int *ptr)
 
void update_sexp_references(const char *old_name, const char *new_name, int format, int node)
 
#define IDC_MISSION_LOG_ALWAYS_FALSE
 
#define Assertion(expr, msg,...)                                                                        
 
#define IDC_BUTTON_NEW_EVENT
 
#define PERSONA_FLAG_WINGMAN
 
void setup(CEdit *ptr=NULL)
 
int edit_label(HTREEITEM h)
 
GLenum GLuint GLenum GLsizei const GLchar * message
 
int find_text(const char *text, int *find)
 
#define MLF_FIRST_TRIGGER_ONLY
 
GLenum GLuint GLenum GLsizei const GLchar * buf
 
void right_clicked(int mode=0)
 
afx_msg void OnSelchangeTeam()
 
SCP_vector< MMessage > Messages
 
int cfile_push_chdir(int type)
Push current directory onto a 'stack' and change to a new directory. 
 
void update_help(HTREEITEM h)
 
GLdouble GLdouble GLdouble r
 
HTREEITEM get_event_handle(int num)
 
afx_msg void OnUpdateTriggerCount()
 
event_editor * Event_editor_dlg
 
char * current_message_name(int index)
 
afx_msg void OnSelchangeWaveFilename()
 
#define PERSONA_FLAG_SUPPORT
 
#define strnicmp(s1, s2, n)
 
int end_label_edit(TVITEMA &item)
 
mission_event Mission_events[MAX_MISSION_EVENTS]
 
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
 
#define IDC_MISSION_LOG_1ST_REPEAT
 
union MissionMessage::@254 avi_info
 
afx_msg void OnSelchangeMessageList()
 
#define OPF_MESSAGE_OR_STRING
 
#define IDC_MISSION_LOG_1ST_TRIGGER
 
#define IDC_MISSION_LOG_STATE_CHANGE
 
void update_cur_message()
 
#define CF_TYPE_INTERFACE
 
#define BITMAP_ROOT_DIRECTIVE
 
HTREEITEM insert(LPCTSTR lpszItem, int image=BITMAP_ROOT, int sel_image=BITMAP_ROOT, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsertAfter=TVI_LAST)
 
#define IDC_WAVE_FILENAME
 
virtual void DoDataExchange(CDataExchange *pDX)
 
virtual BOOL OnInitDialog()
 
afx_msg void OnSelchangeMessageTeam()
 
void reset_event(int num, HTREEITEM after)
 
afx_msg void OnBeginlabeleditEventTree(NMHDR *pNMHDR, LRESULT *pResult)
 
void string_copy(char *dest, const CString &src, int max_len, int modify)
 
bool Disable_hc_message_ani
 
void insert_handler(int old, int node)
 
#define IDC_MISSION_LOG_FALSE
 
void set_modified(BOOL arg)
 
GLuint const GLchar * name
 
union MissionMessage::@255 wave_info
 
afx_msg void OnButtonNewEvent()
 
#define MISSION_TYPE_TRAINING
 
void audiostream_close_file(int i, int fade)
 
virtual BOOL DestroyWindow()
 
int load_sub_tree(int index, bool valid, const char *text)
 
void add_operator(const char *op, HTREEITEM h=TVI_ROOT)
 
#define IDC_TRIGGER_COUNT
 
int save_tree(int node=-1)
 
#define MLF_FIRST_REPEAT_ONLY
 
int MessageBox(HWND h, const char *s1, const char *s2, int i)
 
window_data Events_wnd_data
 
#define BITMAP_CHAIN_DIRECTIVE
 
void audiostream_play(int i, float volume, int looping)
 
char * objective_key_text
 
#define MAX_MISSION_EVENTS
 
char * get_message_list_item(int i)
 
int handler(int code, int node, char *str=NULL)
 
afx_msg void OnEndlabeleditEventTree(NMHDR *pNMHDR, LRESULT *pResult)
 
void hilite_item(int node)
 
int audiostream_open(const char *filename, int type)
 
#define MLF_LAST_REPEAT_ONLY
 
#define MLF_LAST_TRIGGER_ONLY
 
afx_msg void OnRclickEventTree(NMHDR *pNMHDR, LRESULT *pResult)
 
#define IDC_MISSION_LOG_LAST_TRIGGER
 
#define SEXP_HELP_BOX_SIZE
 
#define CF_TYPE_VOICE_TRAINING
 
event_editor(CWnd *pParent=NULL)
 
void lcl_fred_replace_stuff(char *text, size_t max_len)
 
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam)
 
afx_msg void OnSelchangedEventTree(NMHDR *pNMHDR, LRESULT *pResult)
 
#define IDC_MISSION_LOG_LAST_REPEAT
 
event_sexp_tree m_event_tree
 
void clear_tree(const char *op=NULL)
 
int advanced_stricmp(char *one, char *two)
 
#define IDC_INTERVAL_TIME
 
void maybe_add_head(CComboBox *box, char *name)
 
#define MISSION_TYPE_MULTI_TEAMS
 
void setup_selected(HTREEITEM h=NULL)