mirror of
https://github.com/vcmi/vcmi.git
synced 2025-09-16 09:26:28 +02:00
* partially implemented puzzle map
This commit is contained in:
@@ -1118,12 +1118,12 @@ void CTerrainRect::show(SDL_Surface * to)
|
|||||||
CGI->mh->terrainRect
|
CGI->mh->terrainRect
|
||||||
(LOCPLINT->adventureInt->position, LOCPLINT->adventureInt->anim,
|
(LOCPLINT->adventureInt->position, LOCPLINT->adventureInt->anim,
|
||||||
&LOCPLINT->cb->getVisibilityMap(), true, LOCPLINT->adventureInt->heroAnim,
|
&LOCPLINT->cb->getVisibilityMap(), true, LOCPLINT->adventureInt->heroAnim,
|
||||||
to, &pos, moveX, moveY);
|
to, &pos, moveX, moveY, false);
|
||||||
else
|
else
|
||||||
CGI->mh->terrainRect
|
CGI->mh->terrainRect
|
||||||
(LOCPLINT->adventureInt->position, LOCPLINT->adventureInt->anim,
|
(LOCPLINT->adventureInt->position, LOCPLINT->adventureInt->anim,
|
||||||
&LOCPLINT->cb->getVisibilityMap(), true, LOCPLINT->adventureInt->heroAnim,
|
&LOCPLINT->cb->getVisibilityMap(), true, LOCPLINT->adventureInt->heroAnim,
|
||||||
to, &pos, 0, 0);
|
to, &pos, 0, 0, false);
|
||||||
|
|
||||||
//SDL_BlitSurface(teren,&genRect(pos.h,pos.w,0,0),screen,&genRect(547,594,7,6));
|
//SDL_BlitSurface(teren,&genRect(pos.h,pos.w,0,0),screen,&genRect(547,594,7,6));
|
||||||
//SDL_FreeSurface(teren);
|
//SDL_FreeSurface(teren);
|
||||||
@@ -1899,6 +1899,9 @@ CAdventureOptions::CAdventureOptions()
|
|||||||
scenInfo = new AdventureMapButton("","", boost::bind(&CGuiHandler::popIntTotally, &GH, this), 24, 198, "ADVINFO.DEF",SDLK_i);
|
scenInfo = new AdventureMapButton("","", boost::bind(&CGuiHandler::popIntTotally, &GH, this), 24, 198, "ADVINFO.DEF",SDLK_i);
|
||||||
scenInfo->callback += CAdventureOptions::showScenarioInfo;
|
scenInfo->callback += CAdventureOptions::showScenarioInfo;
|
||||||
//viewWorld = new AdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
//viewWorld = new AdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
||||||
|
|
||||||
|
puzzle = new AdventureMapButton("","", boost::bind(&CGuiHandler::popIntTotally, &GH, this), 24, 81, "ADVPUZ.DEF");;
|
||||||
|
puzzle->callback += CAdventureOptions::showPuzzleMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
CAdventureOptions::~CAdventureOptions()
|
CAdventureOptions::~CAdventureOptions()
|
||||||
@@ -1908,4 +1911,9 @@ CAdventureOptions::~CAdventureOptions()
|
|||||||
void CAdventureOptions::showScenarioInfo()
|
void CAdventureOptions::showScenarioInfo()
|
||||||
{
|
{
|
||||||
GH.pushInt(new CScenarioInfo(LOCPLINT->cb->getMapHeader(), LOCPLINT->cb->getStartInfo()));
|
GH.pushInt(new CScenarioInfo(LOCPLINT->cb->getMapHeader(), LOCPLINT->cb->getStartInfo()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CAdventureOptions::showPuzzleMap()
|
||||||
|
{
|
||||||
|
GH.pushInt(new CPuzzleWindow());
|
||||||
|
}
|
||||||
|
@@ -34,6 +34,7 @@ public:
|
|||||||
CAdventureOptions();
|
CAdventureOptions();
|
||||||
~CAdventureOptions();
|
~CAdventureOptions();
|
||||||
static void showScenarioInfo();
|
static void showScenarioInfo();
|
||||||
|
static void showPuzzleMap();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2442,7 +2442,7 @@ void CBattleInterface::showPieceOfWall(SDL_Surface * to, int hex)
|
|||||||
if(!siegeH)
|
if(!siegeH)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
static const std::map<int, int> hexToPart = boost::assign::map_list_of(12, 8)(16, 1)(29, 7)(62, 12)(78, 6)(112, 10)(147, 5)(165, 11)(182, 4);
|
static const std::map<int, int> hexToPart = boost::assign::map_list_of(12, 8)(16, 1)(29, 7)(50, 2)(62, 12)(78, 6)(112, 10)(147, 5)(165, 11)(182, 4);
|
||||||
|
|
||||||
std::map<int, int>::const_iterator it = hexToPart.find(hex);
|
std::map<int, int>::const_iterator it = hexToPart.find(hex);
|
||||||
if(it != hexToPart.end())
|
if(it != hexToPart.end())
|
||||||
|
@@ -238,6 +238,7 @@ struct SettingsGrammar : public grammar<SettingsGrammar>
|
|||||||
| "width=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::advmapW)]
|
| "width=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::advmapW)]
|
||||||
| "height=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::advmapH)]
|
| "height=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::advmapH)]
|
||||||
| "smoothMove=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::smoothMove)]
|
| "smoothMove=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::smoothMove)]
|
||||||
|
| "puzzleSepia=" >> uint_p[SetAdventureProp_a(&AdventureMapConfig::puzzleSepia)]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
| str_p("background=") >> fname[SetAdventureStr(&AdventureMapConfig::mainGraphic)]
|
| str_p("background=") >> fname[SetAdventureStr(&AdventureMapConfig::mainGraphic)]
|
||||||
|
@@ -44,6 +44,7 @@ namespace config
|
|||||||
//advmap
|
//advmap
|
||||||
int advmapX, advmapY, advmapW, advmapH;
|
int advmapX, advmapY, advmapW, advmapH;
|
||||||
bool smoothMove;
|
bool smoothMove;
|
||||||
|
bool puzzleSepia;
|
||||||
//general properties
|
//general properties
|
||||||
std::string mainGraphic;
|
std::string mainGraphic;
|
||||||
//buttons
|
//buttons
|
||||||
|
@@ -4157,3 +4157,100 @@ CShipyardWindow::CShipyardWindow(const std::vector<si32> &cost, int state, const
|
|||||||
printAtMiddle(CGI->generaltexth->jktexts[13], 165, 28, GEORXX, tytulowy, bg); //Build A New Ship
|
printAtMiddle(CGI->generaltexth->jktexts[13], 165, 28, GEORXX, tytulowy, bg); //Build A New Ship
|
||||||
printAtMiddle(CGI->generaltexth->jktexts[14], 165, 218, GEOR16, zwykly, bg); //Resource cost:
|
printAtMiddle(CGI->generaltexth->jktexts[14], 165, 218, GEOR16, zwykly, bg); //Resource cost:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPuzzleWindow::CPuzzleWindow()
|
||||||
|
:animCount(0)
|
||||||
|
{
|
||||||
|
SDL_Surface * back = BitmapHandler::loadBitmap("PUZZLE.BMP", false);
|
||||||
|
//make transparency black
|
||||||
|
back->format->palette->colors[0].b = back->format->palette->colors[0].r = back->format->palette->colors[0].g = 0;
|
||||||
|
//the rest
|
||||||
|
background = SDL_ConvertSurface(back, screen->format, back->flags);
|
||||||
|
SDL_FreeSurface(back);
|
||||||
|
pos = genRect(background->h, background->w, (conf.cc.resx - background->w) / 2, (conf.cc.resy - background->h) / 2);
|
||||||
|
quitb = new AdventureMapButton(CGI->generaltexth->allTexts[599], "", boost::bind(&CGuiHandler::popIntTotally, &GH, this), pos.x+670, pos.y+538, "IOK6432.DEF", SDLK_RETURN);
|
||||||
|
resdatabar = new CResDataBar();
|
||||||
|
resdatabar->pos.x = pos.x+3; resdatabar->pos.y = pos.y+575;
|
||||||
|
|
||||||
|
//printing necessary thinks to background
|
||||||
|
|
||||||
|
CGI->mh->terrainRect
|
||||||
|
(int3(14, 15, 0), LOCPLINT->adventureInt->anim,
|
||||||
|
&LOCPLINT->cb->getVisibilityMap(), true, LOCPLINT->adventureInt->heroAnim,
|
||||||
|
background, &genRect(544, 591, 8, 8), 0, 0, true);
|
||||||
|
|
||||||
|
|
||||||
|
float discoveryRatio = 0.5f;
|
||||||
|
int faction = 3;
|
||||||
|
|
||||||
|
std::vector<SPuzzleInfo> puzzlesToPrint;
|
||||||
|
|
||||||
|
for(int g=0; g<PUZZLES_PER_FACTION; ++g)
|
||||||
|
{
|
||||||
|
if(CGI->heroh->puzzleInfo[faction][g].whenUncovered >= PUZZLES_PER_FACTION * discoveryRatio)
|
||||||
|
{
|
||||||
|
puzzlesToPrint.push_back(CGI->heroh->puzzleInfo[faction][g]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SDL_Surface *buf = BitmapHandler::loadBitmap(CGI->heroh->puzzleInfo[faction][g].filename);
|
||||||
|
puzzlesToPullBack.push_back( std::make_pair(buf, &CGI->heroh->puzzleInfo[faction][g]) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int b = 0; b < puzzlesToPrint.size(); ++b)
|
||||||
|
{
|
||||||
|
SDL_Surface * puzzle = BitmapHandler::loadBitmap(puzzlesToPrint[b].filename);
|
||||||
|
|
||||||
|
blitAt(puzzle, puzzlesToPrint[b].x, puzzlesToPrint[b].y, background);
|
||||||
|
|
||||||
|
SDL_FreeSurface(puzzle);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
CPuzzleWindow::~CPuzzleWindow()
|
||||||
|
{
|
||||||
|
delete quitb;
|
||||||
|
delete resdatabar;
|
||||||
|
SDL_FreeSurface(background);
|
||||||
|
for(int g = 0; g < puzzlesToPullBack.size(); ++g)
|
||||||
|
SDL_FreeSurface( puzzlesToPullBack[g].first );
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPuzzleWindow::activate()
|
||||||
|
{
|
||||||
|
quitb->activate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPuzzleWindow::deactivate()
|
||||||
|
{
|
||||||
|
quitb->deactivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPuzzleWindow::show(SDL_Surface * to)
|
||||||
|
{
|
||||||
|
blitAt(background, pos.x, pos.y, to);
|
||||||
|
quitb->show(to);
|
||||||
|
resdatabar->draw(to);
|
||||||
|
|
||||||
|
//blitting disappearing puzzles
|
||||||
|
for(int g=0; g<2; ++g)
|
||||||
|
if(animCount != 255)
|
||||||
|
++animCount;
|
||||||
|
|
||||||
|
if(animCount != 255)
|
||||||
|
{
|
||||||
|
for(int b = 0; b < puzzlesToPullBack.size(); ++b)
|
||||||
|
{
|
||||||
|
int xPos = puzzlesToPullBack[b].second->x,
|
||||||
|
yPos = puzzlesToPullBack[b].second->y;
|
||||||
|
SDL_Surface *from = puzzlesToPullBack[b].first;
|
||||||
|
|
||||||
|
SDL_SetAlpha(from, SDL_SRCALPHA, 255 - animCount);
|
||||||
|
blitAt(from, xPos, yPos, to);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//disappearing puzzles blitted
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -60,6 +60,8 @@ class CPlayerInterface;
|
|||||||
class CHeroWindow;
|
class CHeroWindow;
|
||||||
class CArtifact;
|
class CArtifact;
|
||||||
class CArtifactsOfHero;
|
class CArtifactsOfHero;
|
||||||
|
class CResDataBar;
|
||||||
|
struct SPuzzleInfo;
|
||||||
|
|
||||||
class CInfoWindow : public CSimpleWindow //text + comp. + ok button
|
class CInfoWindow : public CSimpleWindow //text + comp. + ok button
|
||||||
{ //window able to delete its components when closed
|
{ //window able to delete its components when closed
|
||||||
@@ -735,4 +737,23 @@ public:
|
|||||||
~CShipyardWindow();
|
~CShipyardWindow();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CPuzzleWindow : public CIntObject
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
SDL_Surface * background;
|
||||||
|
AdventureMapButton * quitb;
|
||||||
|
CResDataBar * resdatabar;
|
||||||
|
|
||||||
|
std::vector<std::pair<SDL_Surface *, SPuzzleInfo *> > puzzlesToPullBack;
|
||||||
|
ui8 animCount;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void activate();
|
||||||
|
void deactivate();
|
||||||
|
void show(SDL_Surface * to);
|
||||||
|
|
||||||
|
CPuzzleWindow();
|
||||||
|
~CPuzzleWindow();
|
||||||
|
};
|
||||||
|
|
||||||
#endif //__GUICLASSES_H__
|
#endif //__GUICLASSES_H__
|
||||||
|
442
config/puzzle_map.txt
Normal file
442
config/puzzle_map.txt
Normal file
@@ -0,0 +1,442 @@
|
|||||||
|
//description of puzzle's positions and order of discovering. x pos -> y pos -> when discovered
|
||||||
|
//Castle
|
||||||
|
7 8 39
|
||||||
|
7 30 41
|
||||||
|
7 102 1
|
||||||
|
7 156 23
|
||||||
|
7 202 6
|
||||||
|
7 320 13
|
||||||
|
16 8 39
|
||||||
|
22 406 2
|
||||||
|
70 301 22
|
||||||
|
72 194 11
|
||||||
|
101 332 8
|
||||||
|
106 8 9
|
||||||
|
106 31 29
|
||||||
|
114 60 7
|
||||||
|
126 329 17
|
||||||
|
128 191 21
|
||||||
|
152 347 27
|
||||||
|
154 239 31
|
||||||
|
157 429 34
|
||||||
|
166 470 4
|
||||||
|
185 127 30
|
||||||
|
212 335 36
|
||||||
|
214 191 48
|
||||||
|
217 226 43
|
||||||
|
235 147 35
|
||||||
|
245 77 16
|
||||||
|
266 384 42
|
||||||
|
288 288 45
|
||||||
|
298 8 26
|
||||||
|
321 177 46
|
||||||
|
346 67 38
|
||||||
|
354 459 20
|
||||||
|
355 397 25
|
||||||
|
375 162 28
|
||||||
|
382 255 32
|
||||||
|
408 32 37
|
||||||
|
408 111 14
|
||||||
|
421 147 19
|
||||||
|
422 466 12
|
||||||
|
426 8 15
|
||||||
|
436 238 24
|
||||||
|
458 336 44
|
||||||
|
486 8 40
|
||||||
|
487 144 33
|
||||||
|
517 145 18
|
||||||
|
520 68 5
|
||||||
|
524 234 10
|
||||||
|
525 327 3
|
||||||
|
//Rampart
|
||||||
|
7 8 2
|
||||||
|
7 101 13
|
||||||
|
7 195 20
|
||||||
|
7 310 6
|
||||||
|
7 378 22
|
||||||
|
7 449 21
|
||||||
|
61 8 19
|
||||||
|
97 42 8
|
||||||
|
98 201 24
|
||||||
|
108 308 36
|
||||||
|
115 461 1
|
||||||
|
129 366 7
|
||||||
|
134 8 4
|
||||||
|
157 188 25
|
||||||
|
160 309 39
|
||||||
|
162 441 11
|
||||||
|
164 126 28
|
||||||
|
174 390 33
|
||||||
|
178 188 46
|
||||||
|
187 258 41
|
||||||
|
190 24 38
|
||||||
|
215 272 45
|
||||||
|
255 443 9
|
||||||
|
265 323 40
|
||||||
|
277 45 47
|
||||||
|
278 383 27
|
||||||
|
292 196 43
|
||||||
|
294 266 48
|
||||||
|
310 8 17
|
||||||
|
330 493 16
|
||||||
|
339 8 12
|
||||||
|
339 167 29
|
||||||
|
344 108 35
|
||||||
|
361 239 31
|
||||||
|
363 385 44
|
||||||
|
398 310 42
|
||||||
|
400 130 23
|
||||||
|
404 436 32
|
||||||
|
421 127 26
|
||||||
|
429 8 37
|
||||||
|
430 106 30
|
||||||
|
462 393 14
|
||||||
|
469 270 10
|
||||||
|
486 8 3
|
||||||
|
499 481 15
|
||||||
|
511 255 34
|
||||||
|
516 48 18
|
||||||
|
525 169 5
|
||||||
|
//Tower
|
||||||
|
7 8 1
|
||||||
|
7 52 13
|
||||||
|
7 243 8
|
||||||
|
7 486 22
|
||||||
|
26 391 7
|
||||||
|
27 31 23
|
||||||
|
27 89 31
|
||||||
|
28 303 20
|
||||||
|
28 336 25
|
||||||
|
37 234 33
|
||||||
|
59 77 6
|
||||||
|
76 462 15
|
||||||
|
91 245 34
|
||||||
|
114 31 19
|
||||||
|
118 323 42
|
||||||
|
132 87 36
|
||||||
|
163 370 40
|
||||||
|
171 255 21
|
||||||
|
192 8 28
|
||||||
|
212 483 38
|
||||||
|
228 95 44
|
||||||
|
231 205 46
|
||||||
|
293 380 10
|
||||||
|
297 190 43
|
||||||
|
297 260 48
|
||||||
|
298 8 17
|
||||||
|
298 89 35
|
||||||
|
312 462 29
|
||||||
|
320 261 45
|
||||||
|
340 17 37
|
||||||
|
350 121 12
|
||||||
|
350 174 41
|
||||||
|
355 371 27
|
||||||
|
357 469 3
|
||||||
|
376 289 11
|
||||||
|
388 8 4
|
||||||
|
407 45 47
|
||||||
|
421 284 30
|
||||||
|
436 159 39
|
||||||
|
445 8 18
|
||||||
|
445 211 26
|
||||||
|
463 422 24
|
||||||
|
477 29 2
|
||||||
|
497 153 5
|
||||||
|
499 108 14
|
||||||
|
503 281 16
|
||||||
|
537 418 9
|
||||||
|
556 215 32
|
||||||
|
//Inferno
|
||||||
|
7 8 30
|
||||||
|
7 16 2
|
||||||
|
7 95 12
|
||||||
|
7 271 27
|
||||||
|
7 308 8
|
||||||
|
7 464 1
|
||||||
|
16 164 26
|
||||||
|
41 378 39
|
||||||
|
50 471 13
|
||||||
|
51 101 17
|
||||||
|
80 260 35
|
||||||
|
81 48 4
|
||||||
|
91 143 47
|
||||||
|
115 8 25
|
||||||
|
141 360 28
|
||||||
|
153 269 41
|
||||||
|
164 55 44
|
||||||
|
173 101 36
|
||||||
|
173 492 6
|
||||||
|
187 160 48
|
||||||
|
194 388 19
|
||||||
|
200 373 20
|
||||||
|
204 282 45
|
||||||
|
239 469 11
|
||||||
|
240 8 32
|
||||||
|
271 163 43
|
||||||
|
276 255 46
|
||||||
|
296 428 3
|
||||||
|
297 281 16
|
||||||
|
306 8 10
|
||||||
|
317 17 15
|
||||||
|
327 84 29
|
||||||
|
348 142 40
|
||||||
|
348 342 21
|
||||||
|
370 405 22
|
||||||
|
401 103 18
|
||||||
|
407 40 31
|
||||||
|
421 508 7
|
||||||
|
453 215 33
|
||||||
|
455 377 34
|
||||||
|
460 170 38
|
||||||
|
475 319 42
|
||||||
|
488 412 37
|
||||||
|
504 8 24
|
||||||
|
515 67 5
|
||||||
|
517 211 14
|
||||||
|
532 305 23
|
||||||
|
556 335 9
|
||||||
|
//Necropolis
|
||||||
|
7 8 22
|
||||||
|
7 188 1
|
||||||
|
7 329 20
|
||||||
|
7 403 24
|
||||||
|
8 8 47
|
||||||
|
14 138 30
|
||||||
|
15 8 9
|
||||||
|
34 374 31
|
||||||
|
55 82 25
|
||||||
|
55 150 38
|
||||||
|
57 281 8
|
||||||
|
94 188 36
|
||||||
|
108 344 6
|
||||||
|
119 424 13
|
||||||
|
124 256 37
|
||||||
|
131 8 7
|
||||||
|
139 92 11
|
||||||
|
145 371 29
|
||||||
|
148 42 21
|
||||||
|
175 200 44
|
||||||
|
200 291 45
|
||||||
|
201 66 42
|
||||||
|
210 482 18
|
||||||
|
247 98 28
|
||||||
|
250 227 48
|
||||||
|
262 8 15
|
||||||
|
293 373 32
|
||||||
|
303 286 46
|
||||||
|
318 173 43
|
||||||
|
345 444 2
|
||||||
|
356 8 5
|
||||||
|
357 386 17
|
||||||
|
362 38 40
|
||||||
|
382 8 19
|
||||||
|
382 119 35
|
||||||
|
421 164 27
|
||||||
|
422 249 4
|
||||||
|
428 52 14
|
||||||
|
429 101 10
|
||||||
|
443 132 41
|
||||||
|
452 239 34
|
||||||
|
465 441 23
|
||||||
|
469 300 39
|
||||||
|
476 20 3
|
||||||
|
537 249 33
|
||||||
|
547 430 12
|
||||||
|
559 140 26
|
||||||
|
558 8 16
|
||||||
|
//Dungeon
|
||||||
|
7 8 31
|
||||||
|
7 125 1
|
||||||
|
7 353 33
|
||||||
|
7 394 6
|
||||||
|
30 101 36
|
||||||
|
33 219 16
|
||||||
|
57 171 13
|
||||||
|
62 8 47
|
||||||
|
63 90 41
|
||||||
|
83 471 10
|
||||||
|
94 117 21
|
||||||
|
99 8 5
|
||||||
|
113 258 32
|
||||||
|
156 146 28
|
||||||
|
165 288 42
|
||||||
|
172 388 44
|
||||||
|
177 36 39
|
||||||
|
194 235 46
|
||||||
|
204 502 3
|
||||||
|
236 320 23
|
||||||
|
238 8 20
|
||||||
|
245 75 25
|
||||||
|
247 396 29
|
||||||
|
247 459 14
|
||||||
|
253 152 48
|
||||||
|
301 233 43
|
||||||
|
323 8 12
|
||||||
|
323 178 45
|
||||||
|
328 342 30
|
||||||
|
329 428 19
|
||||||
|
339 8 26
|
||||||
|
357 141 27
|
||||||
|
374 8 15
|
||||||
|
374 236 34
|
||||||
|
392 439 35
|
||||||
|
400 291 40
|
||||||
|
401 103 18
|
||||||
|
422 381 37
|
||||||
|
436 8 17
|
||||||
|
438 336 24
|
||||||
|
449 131 9
|
||||||
|
453 161 11
|
||||||
|
471 267 38
|
||||||
|
477 64 22
|
||||||
|
480 456 8
|
||||||
|
485 8 2
|
||||||
|
536 197 4
|
||||||
|
541 22 7
|
||||||
|
//Stronghold
|
||||||
|
7 8 6
|
||||||
|
7 229 14
|
||||||
|
7 405 15
|
||||||
|
7 465 10
|
||||||
|
12 8 9
|
||||||
|
32 245 21
|
||||||
|
32 277 33
|
||||||
|
36 337 19
|
||||||
|
39 15 36
|
||||||
|
47 115 23
|
||||||
|
49 178 25
|
||||||
|
70 8 1
|
||||||
|
101 35 41
|
||||||
|
111 311 44
|
||||||
|
123 156 45
|
||||||
|
138 423 32
|
||||||
|
140 224 43
|
||||||
|
144 136 11
|
||||||
|
149 452 18
|
||||||
|
158 475 5
|
||||||
|
191 68 7
|
||||||
|
202 12 39
|
||||||
|
218 349 34
|
||||||
|
219 285 42
|
||||||
|
222 96 28
|
||||||
|
262 8 8
|
||||||
|
279 166 48
|
||||||
|
279 425 22
|
||||||
|
303 314 27
|
||||||
|
320 109 16
|
||||||
|
326 146 47
|
||||||
|
333 160 46
|
||||||
|
362 26 4
|
||||||
|
365 441 17
|
||||||
|
380 297 38
|
||||||
|
392 242 29
|
||||||
|
427 275 40
|
||||||
|
445 85 2
|
||||||
|
446 424 30
|
||||||
|
459 347 37
|
||||||
|
463 53 24
|
||||||
|
484 210 20
|
||||||
|
488 8 26
|
||||||
|
489 303 35
|
||||||
|
529 8 31
|
||||||
|
529 421 3
|
||||||
|
558 87 13
|
||||||
|
563 261 12
|
||||||
|
//Fortress
|
||||||
|
7 8 36
|
||||||
|
7 152 25
|
||||||
|
7 306 34
|
||||||
|
7 388 23
|
||||||
|
7 434 15
|
||||||
|
23 417 37
|
||||||
|
32 232 38
|
||||||
|
42 137 39
|
||||||
|
47 440 8
|
||||||
|
56 19 47
|
||||||
|
71 8 1
|
||||||
|
87 219 30
|
||||||
|
90 26 41
|
||||||
|
104 397 33
|
||||||
|
116 345 40
|
||||||
|
134 215 11
|
||||||
|
175 168 19
|
||||||
|
191 428 13
|
||||||
|
200 326 24
|
||||||
|
216 98 18
|
||||||
|
221 398 20
|
||||||
|
225 235 46
|
||||||
|
239 8 9
|
||||||
|
245 40 7
|
||||||
|
248 208 48
|
||||||
|
261 439 5
|
||||||
|
262 134 26
|
||||||
|
297 352 22
|
||||||
|
309 99 16
|
||||||
|
320 262 43
|
||||||
|
323 404 10
|
||||||
|
326 200 45
|
||||||
|
331 20 17
|
||||||
|
345 178 21
|
||||||
|
353 8 3
|
||||||
|
358 290 42
|
||||||
|
381 399 14
|
||||||
|
400 65 12
|
||||||
|
428 160 35
|
||||||
|
448 293 29
|
||||||
|
451 94 27
|
||||||
|
453 424 2
|
||||||
|
462 397 32
|
||||||
|
465 8 4
|
||||||
|
486 163 44
|
||||||
|
492 184 31
|
||||||
|
517 304 6
|
||||||
|
549 8 28
|
||||||
|
//Conflux
|
||||||
|
7 8 1
|
||||||
|
7 54 6
|
||||||
|
7 227 16
|
||||||
|
7 426 9
|
||||||
|
15 48 22
|
||||||
|
45 375 32
|
||||||
|
48 249 28
|
||||||
|
86 500 15
|
||||||
|
93 55 37
|
||||||
|
99 245 7
|
||||||
|
101 354 27
|
||||||
|
104 175 35
|
||||||
|
107 14 21
|
||||||
|
124 296 38
|
||||||
|
134 8 4
|
||||||
|
181 466 26
|
||||||
|
182 200 40
|
||||||
|
189 381 33
|
||||||
|
192 40 8
|
||||||
|
192 364 11
|
||||||
|
201 124 48
|
||||||
|
203 330 42
|
||||||
|
228 293 45
|
||||||
|
235 39 25
|
||||||
|
242 335 44
|
||||||
|
275 488 5
|
||||||
|
278 202 46
|
||||||
|
290 80 13
|
||||||
|
291 115 20
|
||||||
|
308 225 43
|
||||||
|
310 158 39
|
||||||
|
312 24 12
|
||||||
|
317 8 2
|
||||||
|
323 443 10
|
||||||
|
327 253 41
|
||||||
|
330 36 36
|
||||||
|
349 330 34
|
||||||
|
349 426 17
|
||||||
|
407 191 47
|
||||||
|
421 430 31
|
||||||
|
428 246 23
|
||||||
|
467 90 29
|
||||||
|
481 13 30
|
||||||
|
489 346 18
|
||||||
|
504 113 19
|
||||||
|
504 190 24
|
||||||
|
507 8 14
|
||||||
|
542 436 3
|
@@ -16,7 +16,7 @@ GUISettings
|
|||||||
{
|
{
|
||||||
AdventureMap
|
AdventureMap
|
||||||
{
|
{
|
||||||
AdvMap: x=7 y=6 width=593 height=547 smoothMove=1;
|
AdvMap: x=7 y=6 width=593 height=547 smoothMove=1 puzzleSepia=1;
|
||||||
InfoBox: x=605 y=389;
|
InfoBox: x=605 y=389;
|
||||||
gem0: x=6 y=508 graphic=agemLL.def;
|
gem0: x=6 y=508 graphic=agemLL.def;
|
||||||
gem1: x=556 y=508 graphic=agemLR.def;
|
gem1: x=556 y=508 graphic=agemLR.def;
|
||||||
@@ -44,7 +44,7 @@ GUISettings
|
|||||||
{
|
{
|
||||||
AdventureMap
|
AdventureMap
|
||||||
{
|
{
|
||||||
AdvMap: x=7 y=6 width=817 height=547 smoothMove=1;
|
AdvMap: x=7 y=6 width=817 height=547 smoothMove=1 puzzleSepia=1;
|
||||||
InfoBox: x=829 y=389;
|
InfoBox: x=829 y=389;
|
||||||
gem0: x=6 y=508 graphic=agemLL.def;
|
gem0: x=6 y=508 graphic=agemLL.def;
|
||||||
gem1: x=780 y=508 graphic=agemLR.def;
|
gem1: x=780 y=508 graphic=agemLR.def;
|
||||||
@@ -73,7 +73,7 @@ GUISettings
|
|||||||
{
|
{
|
||||||
AdventureMap
|
AdventureMap
|
||||||
{
|
{
|
||||||
AdvMap: x=7 y=6 width=817 height=715 smoothMove=1;
|
AdvMap: x=7 y=6 width=817 height=715 smoothMove=1 puzzleSepia=1;
|
||||||
InfoBox: x=829 y=557;
|
InfoBox: x=829 y=557;
|
||||||
gem0: x=6 y=676 graphic=agemLL.def;
|
gem0: x=6 y=676 graphic=agemLL.def;
|
||||||
gem1: x=780 y=676 graphic=agemLR.def;
|
gem1: x=780 y=676 graphic=agemLR.def;
|
||||||
@@ -101,7 +101,7 @@ GUISettings
|
|||||||
{
|
{
|
||||||
AdventureMap
|
AdventureMap
|
||||||
{
|
{
|
||||||
AdvMap: x=7 y=6 width=1073 height=971 smoothMove=1;
|
AdvMap: x=7 y=6 width=1073 height=971 smoothMove=1 puzzleSepia=1;
|
||||||
InfoBox: x=1085 y=557;
|
InfoBox: x=1085 y=557;
|
||||||
gem0: x=6 y=932 graphic=agemLL.def;
|
gem0: x=6 y=932 graphic=agemLL.def;
|
||||||
gem1: x=1036 y=932 graphic=agemLR.def;
|
gem1: x=1036 y=932 graphic=agemLR.def;
|
||||||
@@ -129,7 +129,7 @@ GUISettings
|
|||||||
{
|
{
|
||||||
AdventureMap
|
AdventureMap
|
||||||
{
|
{
|
||||||
AdvMap: x=7 y=6 width=1395 height=1147 smoothMove=1;
|
AdvMap: x=7 y=6 width=1395 height=1147 smoothMove=1 puzzleSepia=1;
|
||||||
InfoBox: x=1406 y=989;
|
InfoBox: x=1406 y=989;
|
||||||
gem0: x=6 y=1108 graphic=agemLL.def;
|
gem0: x=6 y=1108 graphic=agemLL.def;
|
||||||
gem1: x=1356 y=1108 graphic=agemLR.def;
|
gem1: x=1356 y=1108 graphic=agemLR.def;
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "CLodHandler.h"
|
#include "CLodHandler.h"
|
||||||
#include "../lib/VCMI_Lib.h"
|
#include "../lib/VCMI_Lib.h"
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
extern CLodHandler * bitmaph;
|
extern CLodHandler * bitmaph;
|
||||||
void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
void loadToIt(std::string &dest, std::string &src, int &iter, int mode);
|
||||||
|
|
||||||
@@ -186,6 +188,49 @@ void CHeroHandler::loadObstacles()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CHeroHandler::loadPuzzleInfo()
|
||||||
|
{
|
||||||
|
std::ifstream inp;
|
||||||
|
inp.open("config" PATHSEPARATOR "puzzle_map.txt", std::ios_base::in|std::ios_base::binary);
|
||||||
|
if(!inp.is_open())
|
||||||
|
{
|
||||||
|
tlog1<<"missing file: config/puzzle_map.txt"<<std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int MAX_DUMP = 10000;
|
||||||
|
char dump[MAX_DUMP+1];
|
||||||
|
|
||||||
|
inp.getline(dump, MAX_DUMP);
|
||||||
|
|
||||||
|
for(int fct = 0; fct < F_NUMBER; ++fct)
|
||||||
|
{
|
||||||
|
std::string dmp;
|
||||||
|
inp >> dmp;
|
||||||
|
|
||||||
|
for(int g=0; g<PUZZLES_PER_FACTION; ++g)
|
||||||
|
{
|
||||||
|
SPuzzleInfo spi;
|
||||||
|
inp >> spi.x;
|
||||||
|
inp >> spi.y;
|
||||||
|
inp >> spi.whenUncovered;
|
||||||
|
spi.number = g;
|
||||||
|
|
||||||
|
//filename calculation
|
||||||
|
std::ostringstream suffix;
|
||||||
|
suffix << std::setfill('0') << std::setw(2);
|
||||||
|
suffix << g << ".BMP";
|
||||||
|
|
||||||
|
static const std::string factionToInfix[F_NUMBER] = {"CAS", "TOW", "RAM", "INF", "NEC", "DUN", "STR", "FOR", "ELE"};
|
||||||
|
spi.filename = "PUZ" + factionToInfix[fct] + suffix.str();
|
||||||
|
|
||||||
|
puzzleInfo[fct].push_back(spi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inp.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CHeroHandler::loadHeroes()
|
void CHeroHandler::loadHeroes()
|
||||||
{
|
{
|
||||||
VLC->heroh = this;
|
VLC->heroh = this;
|
||||||
|
@@ -89,6 +89,21 @@ struct DLL_EXPORT CObstacleInfo
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DLL_EXPORT SPuzzleInfo
|
||||||
|
{
|
||||||
|
ui16 number; //type of puzzle
|
||||||
|
si16 x, y; //position
|
||||||
|
ui16 whenUncovered; //determines the sequnce of discovering (the lesser it is the sooner puzzle will be discovered)
|
||||||
|
std::string filename; //file with graphic of this puzzle
|
||||||
|
|
||||||
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
|
{
|
||||||
|
h & number & x & y & whenUncovered & filename;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const int PUZZLES_PER_FACTION = 48;
|
||||||
|
|
||||||
class DLL_EXPORT CHeroHandler
|
class DLL_EXPORT CHeroHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -117,6 +132,9 @@ public:
|
|||||||
|
|
||||||
void loadObstacles(); //loads info about obstacles
|
void loadObstacles(); //loads info about obstacles
|
||||||
|
|
||||||
|
std::vector<SPuzzleInfo> puzzleInfo[F_NUMBER]; //descriptions of puzzles
|
||||||
|
void loadPuzzleInfo();
|
||||||
|
|
||||||
unsigned int level(ui64 experience); //calculates level corresponding to given experience amount
|
unsigned int level(ui64 experience); //calculates level corresponding to given experience amount
|
||||||
ui64 reqExp(unsigned int level); //calculates experience resuired for given level
|
ui64 reqExp(unsigned int level); //calculates experience resuired for given level
|
||||||
|
|
||||||
@@ -130,7 +148,7 @@ public:
|
|||||||
|
|
||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & heroClasses & heroes & expPerLevel & ballistics & wallPositions & obstacles & nativeTerrains;
|
h & heroClasses & heroes & expPerLevel & ballistics & wallPositions & obstacles & nativeTerrains & puzzleInfo;
|
||||||
if(!h.saving)
|
if(!h.saving)
|
||||||
{
|
{
|
||||||
//restore class pointers
|
//restore class pointers
|
||||||
|
@@ -175,6 +175,7 @@ void LibClasses::init()
|
|||||||
heroh->loadHeroes();
|
heroh->loadHeroes();
|
||||||
heroh->loadObstacles();
|
heroh->loadObstacles();
|
||||||
heroh->loadWallPositions();
|
heroh->loadWallPositions();
|
||||||
|
heroh->loadPuzzleInfo();
|
||||||
tlog0 <<"\tHero handler: "<<pomtime.getDif()<<std::endl;
|
tlog0 <<"\tHero handler: "<<pomtime.getDif()<<std::endl;
|
||||||
|
|
||||||
arth = new CArtHandler;
|
arth = new CArtHandler;
|
||||||
|
117
mapHandler.cpp
117
mapHandler.cpp
@@ -29,6 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
extern SDL_Surface * screen;
|
extern SDL_Surface * screen;
|
||||||
|
#define ADVOPT (conf.go()->ac)
|
||||||
|
|
||||||
std::string nameFromType (int typ)
|
std::string nameFromType (int typ)
|
||||||
{
|
{
|
||||||
@@ -500,7 +501,7 @@ void CMapHandler::init()
|
|||||||
// top_tile top left tile to draw. Not necessarily visible.
|
// top_tile top left tile to draw. Not necessarily visible.
|
||||||
// extRect, extRect = map window on screen
|
// extRect, extRect = map window on screen
|
||||||
// moveX, moveY: when a hero is in movement indicates how to shift the map. Range is -31 to + 31.
|
// moveX, moveY: when a hero is in movement indicates how to shift the map. Range is -31 to + 31.
|
||||||
void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY)
|
void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, const std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY, bool puzzleMode)
|
||||||
{
|
{
|
||||||
// Width and height of the portion of the map to process. Units in tiles.
|
// Width and height of the portion of the map to process. Units in tiles.
|
||||||
unsigned int dx = tilesW;
|
unsigned int dx = tilesW;
|
||||||
@@ -712,6 +713,10 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
if(obj->ID != HEROI_TYPE && !obj->coveringAt(obj->pos.x - (top_tile.x + bx), top_tile.y + by - obj->pos.y + 5))
|
if(obj->ID != HEROI_TYPE && !obj->coveringAt(obj->pos.x - (top_tile.x + bx), top_tile.y + by - obj->pos.y + 5))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
//don't print flaggable objects in puzzle mode
|
||||||
|
if(puzzleMode && obj->tempOwner != 254)
|
||||||
|
continue;
|
||||||
|
|
||||||
SDL_Rect sr;
|
SDL_Rect sr;
|
||||||
sr.x = srx;
|
sr.x = srx;
|
||||||
sr.y = sry;
|
sr.y = sry;
|
||||||
@@ -830,36 +835,39 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
// objects printed
|
// objects printed
|
||||||
|
|
||||||
// printing shadow
|
// printing shadow
|
||||||
srx = srx_init;
|
if(!puzzleMode)
|
||||||
|
|
||||||
for (int bx = 0; bx<dx; bx++, srx+=32)
|
|
||||||
{
|
{
|
||||||
// Skip column if not in map
|
srx = srx_init;
|
||||||
if (top_tile.x+bx < 0 || top_tile.x+bx >= map->width)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
sry = sry_init;
|
for (int bx = 0; bx<dx; bx++, srx+=32)
|
||||||
|
|
||||||
for (int by = 0; by<dy; by++, sry+=32)
|
|
||||||
{
|
{
|
||||||
// Skip tile if not in map
|
// Skip column if not in map
|
||||||
if (top_tile.y+by < 0 || top_tile.y+by >= map->height)
|
if (top_tile.x+bx < 0 || top_tile.x+bx >= map->width)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
SDL_Rect sr;
|
sry = sry_init;
|
||||||
|
|
||||||
sr.x = srx;
|
for (int by = 0; by<dy; by++, sry+=32)
|
||||||
sr.y = sry;
|
|
||||||
sr.h = sr.w = 32;
|
|
||||||
|
|
||||||
if (top_tile.x+bx >= 0 &&
|
|
||||||
top_tile.y+by >= 0 &&
|
|
||||||
top_tile.x+bx < CGI->mh->map->width &&
|
|
||||||
top_tile.y+by < CGI->mh->map->height &&
|
|
||||||
!(*visibilityMap)[top_tile.x+bx][top_tile.y+by][top_tile.z])
|
|
||||||
{
|
{
|
||||||
SDL_Surface * hide = getVisBitmap(top_tile.x+bx, top_tile.y+by, *visibilityMap, top_tile.z);
|
// Skip tile if not in map
|
||||||
CSDL_Ext::blit8bppAlphaTo24bpp(hide, &rtile, extSurf, &sr);
|
if (top_tile.y+by < 0 || top_tile.y+by >= map->height)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SDL_Rect sr;
|
||||||
|
|
||||||
|
sr.x = srx;
|
||||||
|
sr.y = sry;
|
||||||
|
sr.h = sr.w = 32;
|
||||||
|
|
||||||
|
if (top_tile.x+bx >= 0 &&
|
||||||
|
top_tile.y+by >= 0 &&
|
||||||
|
top_tile.x+bx < CGI->mh->map->width &&
|
||||||
|
top_tile.y+by < CGI->mh->map->height &&
|
||||||
|
!(*visibilityMap)[top_tile.x+bx][top_tile.y+by][top_tile.z])
|
||||||
|
{
|
||||||
|
SDL_Surface * hide = getVisBitmap(top_tile.x+bx, top_tile.y+by, *visibilityMap, top_tile.z);
|
||||||
|
CSDL_Ext::blit8bppAlphaTo24bpp(hide, &rtile, extSurf, &sr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -956,6 +964,67 @@ void CMapHandler::terrainRect(int3 top_tile, unsigned char anim, std::vector< st
|
|||||||
// grid
|
// grid
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//applying sepia / gray effect
|
||||||
|
if(puzzleMode)
|
||||||
|
{
|
||||||
|
if(ADVOPT.puzzleSepia)
|
||||||
|
{
|
||||||
|
const int sepiaDepth = 20;
|
||||||
|
const int sepiaIntensity = 30;
|
||||||
|
|
||||||
|
for(int xp = extRect->x; xp < extRect->x + extRect->w; ++xp)
|
||||||
|
{
|
||||||
|
for(int yp = extRect->y; yp < extRect->y + extRect->h; ++yp)
|
||||||
|
{
|
||||||
|
unsigned char * pixels = (unsigned char*)extSurf->pixels + yp * extSurf->pitch + xp * extSurf->format->BytesPerPixel;
|
||||||
|
|
||||||
|
int b = pixels[0];
|
||||||
|
int g = pixels[1];
|
||||||
|
int r = pixels[2];
|
||||||
|
int gry = (r + g + b) / 3;
|
||||||
|
|
||||||
|
r = g = b = gry;
|
||||||
|
r = r + (sepiaDepth * 2);
|
||||||
|
g = g + sepiaDepth;
|
||||||
|
|
||||||
|
if (r>255) r=255;
|
||||||
|
if (g>255) g=255;
|
||||||
|
if (b>255) b=255;
|
||||||
|
|
||||||
|
// Darken blue color to increase sepia effect
|
||||||
|
b -= sepiaIntensity;
|
||||||
|
|
||||||
|
// normalize if out of bounds
|
||||||
|
if (b<0) b=0;
|
||||||
|
if (b>255) b=255;
|
||||||
|
|
||||||
|
pixels[0] = b;
|
||||||
|
pixels[1] = g;
|
||||||
|
pixels[2] = r;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int xp = extRect->x; xp < extRect->x + extRect->w; ++xp)
|
||||||
|
{
|
||||||
|
for(int yp = extRect->y; yp < extRect->y + extRect->h; ++yp)
|
||||||
|
{
|
||||||
|
unsigned char * pixels = (unsigned char*)extSurf->pixels + yp * extSurf->pitch + xp * extSurf->format->BytesPerPixel;
|
||||||
|
|
||||||
|
int b = pixels[0];
|
||||||
|
int g = pixels[1];
|
||||||
|
int r = pixels[2];
|
||||||
|
int gry = (r + g + b) / 3;
|
||||||
|
|
||||||
|
pixels[0] = pixels[1] = pixels[2] = gry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//sepia / gray effect applied
|
||||||
|
|
||||||
SDL_SetClipRect(extSurf, &prevClip); //restoring clip_rect
|
SDL_SetClipRect(extSurf, &prevClip); //restoring clip_rect
|
||||||
|
|
||||||
SDL_FreeSurface(rSurf);
|
SDL_FreeSurface(rSurf);
|
||||||
|
@@ -136,7 +136,7 @@ public:
|
|||||||
void roadsRiverTerrainInit();
|
void roadsRiverTerrainInit();
|
||||||
void prepareFOWDefs();
|
void prepareFOWDefs();
|
||||||
|
|
||||||
void terrainRect(int3 top_tile, unsigned char anim, std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY);
|
void terrainRect(int3 top_tile, unsigned char anim, const std::vector< std::vector< std::vector<unsigned char> > > * visibilityMap, bool otherHeroAnim, unsigned char heroAnim, SDL_Surface * extSurf, const SDL_Rect * extRect, int moveX, int moveY, bool puzzleMode);
|
||||||
void updateWater();
|
void updateWater();
|
||||||
unsigned char getHeroFrameNum(unsigned char dir, bool isMoving) const; //terrainRect helper function
|
unsigned char getHeroFrameNum(unsigned char dir, bool isMoving) const; //terrainRect helper function
|
||||||
void validateRectTerr(SDL_Rect * val, const SDL_Rect * ext); //terrainRect helper
|
void validateRectTerr(SDL_Rect * val, const SDL_Rect * ext); //terrainRect helper
|
||||||
|
Reference in New Issue
Block a user