~flosoft/s25rttr/trunk

« back to all changes in this revision

Viewing changes to src/iwBaseWarehouse.cpp

  • Committer: FloSoft
  • Date: 2014-04-25 15:35:50 UTC
  • Revision ID: flosoft@siedler25.org-20140425153550-9muu4vodhlqu58m0
committing subversion revision 9357 by FloSoft
astyle

modified:
s25client/trunk/
s25client/trunk/contrib/lua/lin32/include/
s25client/trunk/contrib/lua/lin64/include/
s25client/trunk/contrib/lua/mac/include/
s25client/trunk/contrib/lua/win32/include/
s25client/trunk/contrib/lua/win64/include/
s25client/trunk/driver/audio/SDL/src/
s25client/trunk/driver/src/
s25client/trunk/driver/video/GLFW/src/
s25client/trunk/driver/video/SDL/src/
s25client/trunk/driver/video/WinAPI/src/
s25client/trunk/src/
s25client/trunk/win32/
s25client/trunk/win32/prebuild-mutex/src/

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// $Id: iwBaseWarehouse.cpp 7711 2011-12-31 00:08:36Z marcus $
 
1
// $Id: iwBaseWarehouse.cpp 9357 2014-04-25 15:35:25Z FloSoft $
2
2
//
3
3
// Copyright (c) 2005 - 2011 Settlers Freaks (sf-team at siedler25.org)
4
4
//
37
37
///////////////////////////////////////////////////////////////////////////////
38
38
// Makros / Defines
39
39
#if defined _WIN32 && defined _DEBUG && defined _MSC_VER
40
 
        #define new new(_NORMAL_BLOCK, THIS_FILE, __LINE__)
41
 
        #undef THIS_FILE
42
 
        static char THIS_FILE[] = __FILE__;
 
40
#define new new(_NORMAL_BLOCK, THIS_FILE, __LINE__)
 
41
#undef THIS_FILE
 
42
static char THIS_FILE[] = __FILE__;
43
43
#endif
44
44
 
45
45
///////////////////////////////////////////////////////////////////////////////
48
48
 *
49
49
 *  @author OLiver
50
50
 */
51
 
iwBaseWarehouse::iwBaseWarehouse(GameWorldViewer * const gwv,const char *const title,
52
 
                                                                 unsigned char page_count, 
53
 
                                                                 nobBaseWarehouse *wh)
54
 
 : iwWares(wh->CreateGUIID(),0xFFFE, 0xFFFE, 167, 416, title, page_count, true, NormalFont, wh->GetInventory()), gwv(gwv), wh(wh)
 
51
iwBaseWarehouse::iwBaseWarehouse(GameWorldViewer* const gwv, const char* const title,
 
52
                                 unsigned char page_count,
 
53
                                 nobBaseWarehouse* wh)
 
54
    : iwWares(wh->CreateGUIID(), 0xFFFE, 0xFFFE, 167, 416, title, page_count, true, NormalFont, wh->GetInventory()), gwv(gwv), wh(wh)
55
55
{
56
 
        // Basisinitialisierungs�nderungen
57
 
        background = LOADER.GetImageN("resource", 41);
58
 
 
59
 
        // Auswahl f�r Auslagern/Einlagern Verbieten-Kn�pfe
60
 
        ctrlOptionGroup *group = AddOptionGroup(10, ctrlOptionGroup::CHECK);
61
 
        // Einlagern
62
 
        group->AddImageButton(0, 16, 335, 32, 32, TC_GREY, LOADER.GetImageN("io_new", 4), _("Collect"));
63
 
        // Auslagern
64
 
        group->AddImageButton(1, 52, 335, 32, 32, TC_GREY, LOADER.GetImageN("io", 211), _("Take out of store"));
65
 
        // Einlagern verbieten
66
 
        group->AddImageButton(2, 86, 335, 32, 32, TC_GREY, LOADER.GetImageN("io", 212), _("Stop storage"));
67
 
        // nix tun ausw�hlen
68
 
        group->SetSelection(0);
69
 
 
70
 
        // Alle ausw�hlen bzw setzen!
71
 
        AddImageButton(11, 122, 335, 32, 32,TC_GREY, LOADER.GetImageN("io", 223), _("Select all"));
72
 
        // "Gehe Zu Ort"
73
 
        AddImageButton(13, 122, 369, 32, 32,TC_GREY, LOADER.GetImageN("io", 107), _("Go to place"));
74
 
 
75
 
        // Ein/Auslager Overlays entsprechend setzen
76
 
        // bei Replays die reellen Einstellungen nehmen, weils die visuellen da logischweise nich gibt!
77
 
        ctrlImage * image;
78
 
        for(unsigned char category = 0;category<2;++category)
79
 
        {
80
 
                unsigned count = (category == 0)?35:32;
81
 
                for(unsigned i = 0;i<count;++i)
82
 
                {
83
 
                        // Einlagern verbieten-Bild (de)aktivieren
84
 
                        image = GetCtrl<ctrlGroup>(100+category)->GetCtrl<ctrlImage>(400+i);
85
 
                        if(image)
86
 
                                image->SetVisible(GAMECLIENT.IsReplayModeOn()?wh->CheckRealInventorySettings(category,2,i):
87
 
                                wh->CheckVisualInventorySettings(category,2,i));
88
 
 
89
 
                        // Auslagern-Bild (de)aktivieren
90
 
                        image = GetCtrl<ctrlGroup>(100+category)->GetCtrl<ctrlImage>(500+i);
91
 
                        if(image)
92
 
                                image->SetVisible(GAMECLIENT.IsReplayModeOn()?wh->CheckRealInventorySettings(category,4,i):
93
 
                                wh->CheckVisualInventorySettings(category,4,i));
94
 
 
95
 
                        // Einlagern-Bild (de)aktivieren
96
 
                        image = GetCtrl<ctrlGroup>(100+category)->GetCtrl<ctrlImage>(700+i);
97
 
                        if(image)
98
 
                                image->SetVisible(GAMECLIENT.IsReplayModeOn()?wh->CheckRealInventorySettings(category,8,i):
99
 
                                wh->CheckVisualInventorySettings(category,8,i));
100
 
                }
101
 
        }
102
 
 
103
 
        // Lagerhaus oder Hafengeb�ude?
104
 
        if(wh->GetGOT() == GOT_NOB_STOREHOUSE || wh->GetGOT() == GOT_NOB_HARBORBUILDING)
105
 
        {
106
 
 
107
 
                // Abbrennbutton hinzuf�gen
108
 
                // "Bl�ttern" in Bretter stauchen und verschieben
109
 
                GetCtrl<ctrlButton>(0)->SetWidth(32);
110
 
                GetCtrl<ctrlButton>(0)->Move(86,369,true);
111
 
 
112
 
                AddImageButton(1, 52, 369, 32, 32, TC_GREY, LOADER.GetImageN("io",  23), _("Demolish house"));
113
 
        }
 
56
    // Basisinitialisierungs�nderungen
 
57
    background = LOADER.GetImageN("resource", 41);
 
58
 
 
59
    // Auswahl f�r Auslagern/Einlagern Verbieten-Kn�pfe
 
60
    ctrlOptionGroup* group = AddOptionGroup(10, ctrlOptionGroup::CHECK);
 
61
    // Einlagern
 
62
    group->AddImageButton(0, 16, 335, 32, 32, TC_GREY, LOADER.GetImageN("io_new", 4), _("Collect"));
 
63
    // Auslagern
 
64
    group->AddImageButton(1, 52, 335, 32, 32, TC_GREY, LOADER.GetImageN("io", 211), _("Take out of store"));
 
65
    // Einlagern verbieten
 
66
    group->AddImageButton(2, 86, 335, 32, 32, TC_GREY, LOADER.GetImageN("io", 212), _("Stop storage"));
 
67
    // nix tun ausw�hlen
 
68
    group->SetSelection(0);
 
69
 
 
70
    // Alle ausw�hlen bzw setzen!
 
71
    AddImageButton(11, 122, 335, 32, 32, TC_GREY, LOADER.GetImageN("io", 223), _("Select all"));
 
72
    // "Gehe Zu Ort"
 
73
    AddImageButton(13, 122, 369, 32, 32, TC_GREY, LOADER.GetImageN("io", 107), _("Go to place"));
 
74
 
 
75
    // Ein/Auslager Overlays entsprechend setzen
 
76
    // bei Replays die reellen Einstellungen nehmen, weils die visuellen da logischweise nich gibt!
 
77
    ctrlImage* image;
 
78
    for(unsigned char category = 0; category < 2; ++category)
 
79
    {
 
80
        unsigned count = (category == 0) ? 35 : 32;
 
81
        for(unsigned i = 0; i < count; ++i)
 
82
        {
 
83
            // Einlagern verbieten-Bild (de)aktivieren
 
84
            image = GetCtrl<ctrlGroup>(100 + category)->GetCtrl<ctrlImage>(400 + i);
 
85
            if(image)
 
86
                image->SetVisible(GAMECLIENT.IsReplayModeOn() ? wh->CheckRealInventorySettings(category, 2, i) :
 
87
                                  wh->CheckVisualInventorySettings(category, 2, i));
 
88
 
 
89
            // Auslagern-Bild (de)aktivieren
 
90
            image = GetCtrl<ctrlGroup>(100 + category)->GetCtrl<ctrlImage>(500 + i);
 
91
            if(image)
 
92
                image->SetVisible(GAMECLIENT.IsReplayModeOn() ? wh->CheckRealInventorySettings(category, 4, i) :
 
93
                                  wh->CheckVisualInventorySettings(category, 4, i));
 
94
 
 
95
            // Einlagern-Bild (de)aktivieren
 
96
            image = GetCtrl<ctrlGroup>(100 + category)->GetCtrl<ctrlImage>(700 + i);
 
97
            if(image)
 
98
                image->SetVisible(GAMECLIENT.IsReplayModeOn() ? wh->CheckRealInventorySettings(category, 8, i) :
 
99
                                  wh->CheckVisualInventorySettings(category, 8, i));
 
100
        }
 
101
    }
 
102
 
 
103
    // Lagerhaus oder Hafengeb�ude?
 
104
    if(wh->GetGOT() == GOT_NOB_STOREHOUSE || wh->GetGOT() == GOT_NOB_HARBORBUILDING)
 
105
    {
 
106
 
 
107
        // Abbrennbutton hinzuf�gen
 
108
        // "Bl�ttern" in Bretter stauchen und verschieben
 
109
        GetCtrl<ctrlButton>(0)->SetWidth(32);
 
110
        GetCtrl<ctrlButton>(0)->Move(86, 369, true);
 
111
 
 
112
        AddImageButton(1, 52, 369, 32, 32, TC_GREY, LOADER.GetImageN("io",  23), _("Demolish house"));
 
113
    }
114
114
}
115
115
 
116
116
 
117
117
void iwBaseWarehouse::Msg_Group_ButtonClick(const unsigned int group_id, const unsigned int ctrl_id)
118
118
{
119
 
        switch(group_id)
120
 
        {
121
 
        default: // an Basis weiterleiten
122
 
                {
123
 
                        iwWares::Msg_Group_ButtonClick(group_id,ctrl_id);
124
 
                } break;
125
 
        case 100: // Waren
126
 
        case 101: // Figuren
127
 
                {
128
 
                        ctrlOptionGroup *optiongroup = GetCtrl<ctrlOptionGroup>(10);
 
119
    switch(group_id)
 
120
    {
 
121
        default: // an Basis weiterleiten
 
122
        {
 
123
            iwWares::Msg_Group_ButtonClick(group_id, ctrl_id);
 
124
        } break;
 
125
        case 100: // Waren
 
126
        case 101: // Figuren
 
127
        {
 
128
            ctrlOptionGroup* optiongroup = GetCtrl<ctrlOptionGroup>(10);
129
129
 
130
 
                        unsigned int data = 0;
131
 
                        switch(optiongroup->GetSelection())
132
 
                        {
133
 
                        case 0: data = 8; break;
134
 
                        case 1: data = 4; break;
135
 
                        case 2: data = 2; break;
136
 
                        }
137
 
                        if(data != 0)
138
 
                        {
139
 
                                // Nicht bei Replays setzen
140
 
                                if(GAMECLIENT.AddGC(new gc::ChangeInventorySetting(wh->GetX(),wh->GetY(),page,data,ctrl_id - 100)))
141
 
                                        // optisch schonmal setzen
142
 
                                        ChangeOverlay(ctrl_id - 100, data);;
143
 
                        }
144
 
                } break;
145
 
        }
 
130
            unsigned int data = 0;
 
131
            switch(optiongroup->GetSelection())
 
132
            {
 
133
                case 0: data = 8; break;
 
134
                case 1: data = 4; break;
 
135
                case 2: data = 2; break;
 
136
            }
 
137
            if(data != 0)
 
138
            {
 
139
                // Nicht bei Replays setzen
 
140
                if(GAMECLIENT.AddGC(new gc::ChangeInventorySetting(wh->GetX(), wh->GetY(), page, data, ctrl_id - 100)))
 
141
                    // optisch schonmal setzen
 
142
                    ChangeOverlay(ctrl_id - 100, data);;
 
143
            }
 
144
        } break;
 
145
    }
146
146
}
147
147
 
148
148
void iwBaseWarehouse::Msg_ButtonClick(const unsigned int ctrl_id)
149
149
{
150
 
        switch(ctrl_id)
151
 
        {
152
 
        case 1: // Geb�ude abrei�en
153
 
                {
154
 
                        // Abrei�en?
155
 
                        Close();
156
 
                        WindowManager::inst().Show(new iwDemolishBuilding(gwv, wh));
157
 
                } break;
158
 
        case 11: // "Alle ausw�hlen"
159
 
                {
160
 
                        if(this->page < 2)
161
 
                        {
162
 
                                ctrlOptionGroup *optiongroup = GetCtrl<ctrlOptionGroup>(10);
163
 
                                unsigned int data = 0;
164
 
                                switch(optiongroup->GetSelection())
165
 
                                {
166
 
                                case 0: data = 8; break;
167
 
                                case 1: data = 4; break;
168
 
                                case 2: data = 2; break;
169
 
                                }
170
 
                                if(data != 0)
171
 
                                {
172
 
                                        // Nicht bei Replays setzen
173
 
                                        if(GAMECLIENT.AddGC(new gc::ChangeAllInventorySettings(wh->GetX(),wh->GetY(),page,data)))
174
 
                                        {
175
 
                                                // optisch setzen
176
 
                                                unsigned short count = ((page == 0)?WARE_TYPES_COUNT:JOB_TYPES_COUNT);
177
 
                                                for(unsigned char i = 0; i < count; ++i)
178
 
                                                        ChangeOverlay(i, data);
179
 
                                        }
180
 
                                }
 
150
    switch(ctrl_id)
 
151
    {
 
152
        case 1: // Geb�ude abrei�en
 
153
        {
 
154
            // Abrei�en?
 
155
            Close();
 
156
            WindowManager::inst().Show(new iwDemolishBuilding(gwv, wh));
 
157
        } break;
 
158
        case 11: // "Alle ausw�hlen"
 
159
        {
 
160
            if(this->page < 2)
 
161
            {
 
162
                ctrlOptionGroup* optiongroup = GetCtrl<ctrlOptionGroup>(10);
 
163
                unsigned int data = 0;
 
164
                switch(optiongroup->GetSelection())
 
165
                {
 
166
                    case 0: data = 8; break;
 
167
                    case 1: data = 4; break;
 
168
                    case 2: data = 2; break;
 
169
                }
 
170
                if(data != 0)
 
171
                {
 
172
                    // Nicht bei Replays setzen
 
173
                    if(GAMECLIENT.AddGC(new gc::ChangeAllInventorySettings(wh->GetX(), wh->GetY(), page, data)))
 
174
                    {
 
175
                        // optisch setzen
 
176
                        unsigned short count = ((page == 0) ? WARE_TYPES_COUNT : JOB_TYPES_COUNT);
 
177
                        for(unsigned char i = 0; i < count; ++i)
 
178
                            ChangeOverlay(i, data);
 
179
                    }
 
180
                }
181
181
 
182
 
                        }
183
 
                } break;
184
 
        case 12: // "Hilfe"
185
 
                {
186
 
                        WindowManager::inst().Show(new iwHelp(GUI_ID(CGI_HELPBUILDING+wh->GetBuildingType()),_(BUILDING_NAMES[wh->GetBuildingType()]),
187
 
                                _(BUILDING_HELP_STRINGS[wh->GetBuildingType()])));
188
 
                } break;
189
 
        case 13: // "Gehe Zu Ort"
190
 
                {
191
 
                        gwv->MoveToMapObject(wh->GetX(), wh->GetY());
192
 
                } break;
193
 
        default: // an Basis weiterleiten
194
 
                {
195
 
                        iwWares::Msg_ButtonClick(ctrl_id);
196
 
                } break;
197
 
        }
 
182
            }
 
183
        } break;
 
184
        case 12: // "Hilfe"
 
185
        {
 
186
            WindowManager::inst().Show(new iwHelp(GUI_ID(CGI_HELPBUILDING + wh->GetBuildingType()), _(BUILDING_NAMES[wh->GetBuildingType()]),
 
187
                                                  _(BUILDING_HELP_STRINGS[wh->GetBuildingType()])));
 
188
        } break;
 
189
        case 13: // "Gehe Zu Ort"
 
190
        {
 
191
            gwv->MoveToMapObject(wh->GetX(), wh->GetY());
 
192
        } break;
 
193
        default: // an Basis weiterleiten
 
194
        {
 
195
            iwWares::Msg_ButtonClick(ctrl_id);
 
196
        } break;
 
197
    }
198
198
}
199
199
 
200
200
 
204
204
 *
205
205
 *  @param[in] i    Item-Nr (0-29)
206
206
 *  @param[in] what Welcher Status soll ge�ndert werden (2 = Einlagern verbieten, 4 = Auslagern)
207
 
 * 
 
207
 *
208
208
 *  @author FloSoft
209
209
 */
210
210
void iwBaseWarehouse::ChangeOverlay(unsigned int i, unsigned int what)
211
211
{
212
 
        ctrlImage *image;
213
 
 
214
 
        // Status �ndern
215
 
        wh->ChangeVisualInventorySettings(page,what,i);
216
 
 
217
 
        // Einlagern verbieten-Bild (de)aktivieren
218
 
        image = GetCtrl<ctrlGroup>(100+this->page)->GetCtrl<ctrlImage>(400+i);
219
 
        if(image)
220
 
                image->SetVisible(wh->CheckVisualInventorySettings(page,2,i));
221
 
 
222
 
        // Auslagern-Bild (de)aktivieren
223
 
        image = GetCtrl<ctrlGroup>(100+this->page)->GetCtrl<ctrlImage>(500+i);
224
 
        if(image)
225
 
                image->SetVisible(wh->CheckVisualInventorySettings(page,4,i));
226
 
 
227
 
        // Einlagern-Bild (de)aktivieren
228
 
        image = GetCtrl<ctrlGroup>(100+this->page)->GetCtrl<ctrlImage>(700+i);
229
 
        if(image)
230
 
                image->SetVisible(wh->CheckVisualInventorySettings(page,8,i));
 
212
    ctrlImage* image;
 
213
 
 
214
    // Status �ndern
 
215
    wh->ChangeVisualInventorySettings(page, what, i);
 
216
 
 
217
    // Einlagern verbieten-Bild (de)aktivieren
 
218
    image = GetCtrl<ctrlGroup>(100 + this->page)->GetCtrl<ctrlImage>(400 + i);
 
219
    if(image)
 
220
        image->SetVisible(wh->CheckVisualInventorySettings(page, 2, i));
 
221
 
 
222
    // Auslagern-Bild (de)aktivieren
 
223
    image = GetCtrl<ctrlGroup>(100 + this->page)->GetCtrl<ctrlImage>(500 + i);
 
224
    if(image)
 
225
        image->SetVisible(wh->CheckVisualInventorySettings(page, 4, i));
 
226
 
 
227
    // Einlagern-Bild (de)aktivieren
 
228
    image = GetCtrl<ctrlGroup>(100 + this->page)->GetCtrl<ctrlImage>(700 + i);
 
229
    if(image)
 
230
        image->SetVisible(wh->CheckVisualInventorySettings(page, 8, i));
231
231
}