diff options
Diffstat (limited to 'src/T2DLL/SpeedDlg.cpp')
| -rw-r--r-- | src/T2DLL/SpeedDlg.cpp | 110 | 
1 files changed, 110 insertions, 0 deletions
diff --git a/src/T2DLL/SpeedDlg.cpp b/src/T2DLL/SpeedDlg.cpp new file mode 100644 index 0000000..ba623bf --- /dev/null +++ b/src/T2DLL/SpeedDlg.cpp @@ -0,0 +1,110 @@ +#include "SpeedDlg.h" +#include "CT2App.h" +#include "T2DlgItem.h" +#include "T2MainWindow.h" +#include "T2MWControl.h" +#include "T2TowerDoc.h" +#include "T2WorldDef.h" + +SpeedDlg::SpeedDlg() { +    mDeleteOnClose = true; +} + +/*virtual*/ SpeedDlg::~SpeedDlg() { +} + +void SpeedDlg::Setup(T2TowerDoc *inDoc, HINSTANCE inInstance, CWnd *inParentWnd, const POINT &inPt, T2ImageObj *inImageObj) { +    mDocument = inDoc; +    mCurrentSpeed = mDocument->towerDoc_vf2A4(); + +    T2DLGTEMPLATE tmpl; +    tmpl.resID = 7010; +    tmpl.pt = inPt; +    tmpl.moduleHandle = inInstance; + +    Realize(inParentWnd, &tmpl, inDoc, inImageObj, inDoc->mWorldDef->GetPalette(), false, inParentWnd, 200, true); +    ShowWindow(SW_HIDE); +} + +static const int speedValues[] = {125, 25, 20, 5, 1}; + +void SpeedDlg::Revert() { +    T2DlgItem *theRadio; + +    if (mCurrentIndex != -1) { +        theRadio = GetT2DlgItem(105 + mCurrentIndex); +        theRadio->SetValue(0); +    } + +    mCurrentIndex = 1; +    mCurrentSpeed = speedValues[mCurrentIndex]; + +    theRadio = GetT2DlgItem(105 + mCurrentIndex); +    theRadio->SetValue(1); +} + +void SpeedDlg::Save() { +    mDocument->towerDoc_vf2A8(mCurrentSpeed); +} + +/*virtual*/ void SpeedDlg::OnT2Create() { +    mCurrentIndex = -1; + +    T2DlgItem *theRadio; +    T2DlgItem *theText; + +    for (int i = 0; i < 5; i++) { +        if (mCurrentSpeed == speedValues[i]) { +            mCurrentIndex = i; +            theRadio = GetT2DlgItem(105 + mCurrentIndex); +            theRadio->SetValue(1); +            break; +        } +    } + +    if (mCurrentIndex != 4) { +        theText = GetT2DlgItem(104); +        theRadio = GetT2DlgItem(109); + +        theText->ShowWindow(SW_HIDE); +        theRadio->ShowWindow(SW_HIDE); +    } +} + +/*virtual*/ int SpeedDlg::OnT2DialogCommand(UINT cmd, long data) { +    int result = 1; +    WORD w = LOWORD(cmd); + +    T2DlgItem *theRadio; +    T2DlgItem *theText; + +    switch (w) { +        case 105: +        case 106: +        case 107: +        case 108: +        case 109: +            mCurrentSpeed = speedValues[w - 105]; +            if (mCurrentIndex != -1) { +                theRadio = GetT2DlgItem(105 + mCurrentIndex); +                theRadio->SetValue(0); +            } +            mCurrentIndex = w - 105; +            theRadio = GetT2DlgItem(105 + mCurrentIndex); +            theRadio->SetValue(1); +            break; + +        case 110: +            theText = GetT2DlgItem(104); +            theRadio = GetT2DlgItem(109); + +            theText->ShowWindow(SW_SHOW); +            theRadio->ShowWindow(SW_SHOW); +            break; + +        default: +            result = T2Dialog::OnT2DialogCommand(cmd, data); +    } + +    return result; +}  | 
