-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathDlgEditTrap.cpp
More file actions
129 lines (101 loc) · 2.56 KB
/
DlgEditTrap.cpp
File metadata and controls
129 lines (101 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// DlgEditTrap.cpp : implementation file
//
#include "stdafx.h"
#include "WinDE.h"
#include "DlgEditTrap.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DlgEditTrap dialog
DlgEditTrap::DlgEditTrap(CWnd* pParent /*=NULL*/)
: CDialog(DlgEditTrap::IDD, pParent)
{
trigger = 0;
obj = NULL;
//{{AFX_DATA_INIT(DlgEditTrap)
charges = 0;
damage_type = -1;
level = 0;
percent = 0;
//}}AFX_DATA_INIT
}
void DlgEditTrap::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DlgEditTrap)
DDX_Control(pDX, IDC_LIST4, m_TrigList);
DDX_Text(pDX, IDC_TRAP_CHARGES, charges);
DDX_CBIndex(pDX, IDC_TRAP_DAMAGE, damage_type);
DDX_Text(pDX, IDC_TRAP_LEVEL, level);
DDX_Text(pDX, IDC_TRAP_PERCENT, percent);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DlgEditTrap, CDialog)
//{{AFX_MSG_MAP(DlgEditTrap)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DlgEditTrap message handlers
void DlgEditTrap::OnOK()
{
UpdateData(true);
int i;
POSITION pos;
trigger = 0;
pos = m_TrigList.GetFirstSelectedItemPosition();
while(pos)
{
i = m_TrigList.GetNextSelectedItem(pos);
SET_BIT(trigger, m_TrigList.GetItemData(i));
}
if(obj)
{
obj->trap.damage = damage_type;
obj->trap.level = level;
obj->trap.percent = percent;
obj->trap.charges = charges;
obj->trap.trigger = trigger;
}
CDialog::OnOK();
}
BOOL DlgEditTrap::OnInitDialog()
{
CRect rect;
int i;
CDialog::OnInitDialog();
if(obj)
{
damage_type = obj->trap.damage;
level = obj->trap.level;
percent = obj->trap.percent;
charges = obj->trap.charges;
trigger = obj->trap.trigger;
}
//DWORD dwStyle = ::SendMessage(m_TrigList, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
//dwStyle |= LVS_EX_FULLROWSELECT;
//::SendMessage(m_TrigList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
m_TrigList.GetClientRect(rect);
m_TrigList.InsertColumn(0, "Trigger Type", LVCFMT_LEFT, rect.Width()-1);
for(i = 0; i < TRIG_MAX; i++)
{
m_TrigList.InsertItem(i, trap_trigs[i].name, 0);
m_TrigList.SetItemData(i, trap_trigs[i].bit);
if(IS_SET(trigger, trap_trigs[i].bit))
{
m_TrigList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED | LVIS_FOCUSED);
m_TrigList.EnsureVisible(i, FALSE);
}
}
CComboBox *cb;
cb = (CComboBox*)GetDlgItem(IDC_TRAP_DAMAGE);
for(i = 0; i < TRAP_MAX; i++)
{
cb->InsertString(i, trap_damage[i]);
cb->SetItemData(i, i);
}
UpdateData(false);
return TRUE;
}