14 #include "ShipGoalsDlg.h"
17 #include "Management.h"
22 #define TYPE_PATH 0x1000
23 #define TYPE_SHIP 0x2000
24 #define TYPE_PLAYER 0x3000
25 #define TYPE_WING 0x4000
26 #define TYPE_WAYPOINT 0x5000
27 #define TYPE_MASK 0xf000
28 #define DATA_MASK 0x0fff
32 static char THIS_FILE[] = __FILE__;
60 CDialog::DoDataExchange(pDX);
158 BOOL ShipGoalsDlg::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CCreateContext* pContext)
165 int i, j,
z, valid[99];
321 CDialog::OnInitDialog();
369 if (data[i] !=
m_data[i]) {
472 for (i=0; i<
num; i++) {
498 if (!
stricmp(goalp[item].target_name,
Ships[inst].ship_name)) {
505 if (!
stricmp(goalp[item].target_name,
Ships[inst].ship_name)) {
518 if (
Wings[i].wave_count) {
529 if (!
stricmp(goalp[item].target_name, ii->get_name())) {
547 for (i=0; i<
num; i++) {
565 void ShipGoalsDlg::set_item(
int item,
int init)
668 if (init && (
m_data[item] == (inst | t)))
699 set_item(item, init);
705 for (i=0; i<
num; i++) {
713 set_item(item, init);
852 char *str,
buf[2048];
857 else if (*str ==
'*')
861 sprintf(buf,
"Initial orders error for ship \"%s\"\n\n%s",
Ships[ship].ship_name, str);
872 void ShipGoalsDlg::update_item(
int item,
int multi)
876 char buf[512], save[80];
900 MODIFY(goalp[item].ai_mode, mode);
921 sprintf(buf,
"Order #%d doesn't have valid subsystem name. Order will be removed", item + 1);
927 if (!goalp[item].docker.name || (goalp[item].docker.name && !
stricmp(goalp[item].docker.name, subsys)))
958 if (docker == (
char *) 0xffffffff)
960 if (dockee == (
char *) 0xffffffff)
963 if (!docker || !dockee) {
964 sprintf(buf,
"Order #%d doesn't have valid docking points. Order will be removed", item + 1);
970 if (!goalp[item].docker.name)
972 else if (!
stricmp(goalp[item].docker.name, docker))
975 if (!goalp[item].dockee.name)
977 else if (!
stricmp(goalp[item].dockee.name, dockee))
987 switch (
m_data[item] & TYPE_MASK) {
1006 MODIFY(goalp[item].ai_mode, mode);
1009 if (goalp[item].target_name)
1010 strcpy_s(save, goalp[item].target_name);
1012 switch (
m_data[item] & TYPE_MASK) {
1036 case (-1 & TYPE_MASK):
1040 sprintf(buf,
"Order #%d doesn't have a valid target. Order will be removed", item + 1);
1049 if (
stricmp(save, goalp[item].target_name))
1153 void ShipGoalsDlg::set_object(
int item)
1170 for (i=0; i<
num; i++) {
afx_msg void OnSelchangeObject10()
int m_subsys[ED_MAX_GOALS]
model_subsystem * system_info
waypoint * find_matching_waypoint(const char *name)
CShipEditorDlg Ship_editor_dialog
CComboBox * m_subsys_box[ED_MAX_GOALS]
CComboBox * m_dock2_box[ED_MAX_GOALS]
int m_priority[ED_MAX_GOALS]
#define AI_GOAL_CHASE_WING
#define AI_GOAL_WAYPOINTS
char * object_name(int obj)
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
#define AI_GOAL_STAY_NEAR_SHIP
#define AI_GOAL_CHASE_ANY
afx_msg void OnSelchangeObject2()
CComboBox * m_object_box[ED_MAX_GOALS]
afx_msg void OnSelchangeBehavior8()
afx_msg void OnSelchangeObject3()
ai_info Ai_info[MAX_AI_INFO]
afx_msg void OnSelchangeBehavior10()
#define END_OF_LIST(head)
#define AI_GOAL_DISARM_SHIP
ShipGoalsDlg(CWnd *pParent=NULL)
afx_msg void OnSelchangeBehavior6()
GLenum GLuint GLenum GLsizei const GLchar * buf
afx_msg void OnSelchangeBehavior5()
int get_docking_list(int model_index)
SCP_list< waypoint_list > Waypoint_lists
afx_msg void OnSelchangeBehavior4()
int m_dock2[ED_MAX_GOALS]
afx_msg void OnSelchangeObject5()
afx_msg void OnSelchangeBehavior2()
afx_msg void OnSelchangeObject1()
afx_msg void OnSelchangeObject7()
ai_goal goals[MAX_AI_GOALS]
afx_msg void OnSelchangeBehavior7()
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
afx_msg void OnSelchangeObject4()
#define AI_GOAL_STAY_STILL
int ai_query_goal_valid(int ship, int ai_goal_type)
CComboBox * m_behavior_box[ED_MAX_GOALS]
#define AI_GOAL_EVADE_SHIP
CComboBox * m_priority_box[ED_MAX_GOALS]
afx_msg void OnSelchangeObject8()
#define AI_GOAL_IGNORE_NEW
ai_goal_list Ai_goal_list[]
#define AI_GOAL_PLAY_DEAD
#define AI_GOAL_WAYPOINTS_ONCE
char * ai_get_goal_target_name(const char *name, int *index)
#define AI_GOAL_GUARD_WING
void set_modified(BOOL arg)
GLuint const GLchar * name
#define MB_ICONEXCLAMATION
virtual void DoDataExchange(CDataExchange *pDX)
virtual BOOL OnInitDialog()
#define AI_GOAL_KEEP_SAFE_DISTANCE
#define AI_GOAL_DISABLE_SHIP
int ship_docking_valid(int docker, int dockee)
waypoint_list * find_waypoint_list_at_index(int index)
afx_msg void OnSelchangeBehavior9()
afx_msg void OnSelchangeBehavior1()
char subobj_name[MAX_NAME_LEN]
char * Docking_bay_list[MAX_DOCKS]
SCP_vector< ship_info > Ship_info
int MessageBox(HWND h, const char *s1, const char *s2, int i)
GLenum GLsizei GLenum GLenum const GLvoid * data
int m_behavior[ED_MAX_GOALS]
#define MAX_EDITOR_GOAL_PRIORITY
afx_msg void OnSelchangeBehavior3()
int ship_get_subsys_index(ship *sp, char *ss_name, int error_bypass)
int m_object[ED_MAX_GOALS]
int ship_name_lookup(const char *name, int inc_players)
#define AI_GOAL_DESTROY_SUBSYSTEM
afx_msg void OnSelchangeObject9()
afx_msg void OnSelchangeObject6()
int verify_orders(int ship=-1)
void initialize(ai_goal *goals, int ship=cur_ship)
char * error_check_initial_orders(ai_goal *goals, int ship, int wing)