rtoss - Blame information for rev 310

Subversion Repositories:
Rev:
Rev Author Line No. Line
280 roytam 1 // MemPmAbilityPage.cpp : 实现文件
2 //
3  
4 #include "stdafx.h"
5 #include "PokemonMemHack.h"
6 #include "MemPmAbilityPage.h"
7  
8  
9 // CMemPmAbilityPage 对话框
10  
11 IMPLEMENT_DYNAMIC(CMemPmAbilityPage, CMemPmTabPage)
12 CMemPmAbilityPage::CMemPmAbilityPage()
13         :       m_ppc(NULL)
14 {
15         m_uTemplateId = CMemPmAbilityPage::IDD;
16 }
17  
18 CMemPmAbilityPage::~CMemPmAbilityPage()
19 {
20 }
21  
22 void CMemPmAbilityPage::DoDataExchange(CDataExchange* pDX)
23 {
24         CMemPmTabPage::DoDataExchange(pDX);
25  
26         BYTE    bIndex;
27  
28         for(bIndex = 0; bIndex < 6; ++bIndex)
29         {
30                 DDX_Control(pDX, IDC_BB_HP + bIndex, m_ctrlBB[bIndex]);
31         }
32 }
33  
34  
35 BEGIN_MESSAGE_MAP(CMemPmAbilityPage, CMemPmTabPage)
36         ON_BN_CLICKED(IDC_INDV_MAX, OnBnClickedIndvMax)
296 roytam 37         ON_BN_CLICKED(IDC_BB_85, OnBnClickedBb85)
280 roytam 38         ON_BN_CLICKED(IDC_BB_MAX, OnBnClickedBbMax)
39         ON_BN_CLICKED(IDC_AP_MAX, OnBnClickedApMax)
40         ON_CONTROL_RANGE(EN_CHANGE, IDC_BB_HP, IDC_BB_SDEF, GetBB)
41         ON_CONTROL_RANGE(EN_CHANGE, IDC_INDV_HP, IDC_INDV_SDEF, GetIndv)
42 END_MESSAGE_MAP()
43  
44  
45 // CMemPmAbilityPage 消息处理程序
46 void CMemPmAbilityPage::TransData(BOOL bToControls)
47 {
48         BYTE    bIndex;
49         DWORD   dwNum;
50         CString szText;
51  
52         m_ppc = GetPokemonCodec();
53         if(m_ppc == NULL)
54                 return;
55  
56         if(bToControls)
57         {
58                 DWORD   dwBreedAblSum = 0;
59                 for(bIndex = 0; bIndex < 6; ++bIndex)
60                 {
61                         dwNum = m_ppc->GetIndvAbility(bIndex);
62                         szText.Format(_T("%lu"), dwNum);
63                         SetDlgItemText(IDC_INDV_HP + bIndex, szText);
64  
65                         dwNum = m_ppc->GetBattleBonus(bIndex);
66                         szText.Format(_T("%lu"), dwNum);
67                         SetDlgItemText(IDC_BB_HP + bIndex, szText);
68  
69                         SetBBSum();
70  
71                         dwNum = m_ppc->GetApealPoint(bIndex);
72                         szText.Format(_T("%lu"), dwNum);
73                         SetDlgItemText(IDC_AP_COOL + bIndex, szText);
74                 }
75  
76                 SetBreedAbilities();
77         }
78         else
79         {
80                 for(bIndex = 0; bIndex < 6; ++bIndex)
81                 {
82                         GetDlgItemText(IDC_AP_COOL + bIndex, szText);
83                         dwNum = min(_tcstoul(szText, 0, 0), 0xFF);
84                         m_ppc->SetApealPoint(bIndex, (BYTE)(dwNum));
85                 }
86         }
87 }
88  
89 void CMemPmAbilityPage::SetBreedAbilities()
90 {
91         DWORD   dwAbl;
92         DWORD   dwBreedAblSum = 0;
93         BYTE    bIndex;
94         CString szText;
310 roytam 95         BreedListEntry * bleTmp;
280 roytam 96  
97         if(!m_ppc || !g_MemRom.m_bOpened)
98         {
99                 for(bIndex = 0; bIndex < 6; ++bIndex)
100                 {
101                         SetDlgItemText(IDC_BREED_HP + bIndex, _T(""));
102                 }
103                 SetDlgItemText(IDC_BREED_ABL_SUM, _T(""));
104         }
105  
106         for(bIndex = 0; bIndex < 6; ++bIndex)
107         {
310 roytam 108                 bleTmp = g_MemRom.GetBreedListEntry(m_ppc->GetBreed());
109                 if(bleTmp)
110                 {
111                         dwAbl = (&(bleTmp->bHP))[bIndex];
112                         szText.Format(_T("%lu"), dwAbl);
113                         SetDlgItemText(IDC_BREED_HP + bIndex, szText);
114                         dwBreedAblSum += dwAbl;
115                 }
280 roytam 116         }
117  
118         szText.Format(_T("%lu"), dwBreedAblSum);
119         SetDlgItemText(IDC_BREED_ABL_SUM, szText);
120 }
121  
122 void CMemPmAbilityPage::OnChangeUILang(VOID)
123 {
124 }
125  
126 void CMemPmAbilityPage::OnBnClickedIndvMax()
127 {
128         if(m_ppc)
129         {
130                 m_ppc->SetMaxIndvAbilities();
131                 TransData(TRUE);
132         }
133 }
134  
296 roytam 135 void CMemPmAbilityPage::OnBnClickedBb85()
136 {
137         BYTE    bIndex;
138         CString szText;
139  
140         if(m_ppc)
141         {
142                 szText = _T("85");
143                 for(bIndex = 0; bIndex < 6; ++bIndex)
144                 {
145                         SetDlgItemText(IDC_BB_HP + bIndex, szText);
146                 }
147         }
148 }
149  
280 roytam 150 void CMemPmAbilityPage::OnBnClickedBbMax()
151 {
152         if(m_ppc)
153         {
154                 m_ppc->SetMaxBattleBonuses();
155                 TransData(TRUE);
156         }
157 }
158  
159 void CMemPmAbilityPage::OnBnClickedApMax()
160 {
161         if(m_ppc)
162         {
163                 m_ppc->SetMaxApealPoints();
164                 TransData(TRUE);
165         }
166 }
167  
168 void CMemPmAbilityPage::GetBB(UINT uID)
169 {
170         DWORD   dwIndex;
171         BYTE    bBB;
172         CString szText;
173  
174         if(m_ppc)
175         {
176                 dwIndex = uID - IDC_BB_HP;
177                 if(dwIndex < 6)
178                 {
179                         GetDlgItemText(uID, szText);
180                         bBB = (BYTE)(min(_tcstoul(szText, 0, 0), 0xFF));
181                         m_ppc->SetBattleBonus((BYTE)(dwIndex), bBB);
182                         SetBBSum();
183                 }
184         }
185 }
186  
187 void CMemPmAbilityPage::SetBBSum()
188 {
189         BYTE    bIndex;
190         DWORD   dwSum = 0;
191  
192         if(m_ppc)
193         {
194                 for(bIndex = 0; bIndex < 6; ++bIndex)
195                 {
196                         dwSum += m_ppc->GetBattleBonus(bIndex);
197                         SetDlgItemInt(IDC_BB_SUM, dwSum, FALSE);
198                 }
199         }
200 }
201  
202 void CMemPmAbilityPage::GetIndv(UINT uID)
203 {
204         DWORD   dwIndex;
205         BYTE    bIndv;
206         CString szText;
207  
208         if(m_ppc)
209         {
210                 dwIndex = uID - IDC_INDV_HP;
211                 if(dwIndex < 6)
212                 {
213                         GetDlgItemText(uID, szText);
214                         bIndv = (BYTE)(min(_tcstoul(szText, 0, 0), 0x1F));
215                         m_ppc->SetIndvAbility((BYTE)(dwIndex), bIndv);
216                 }
217         }
218 }