123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #include "StdInc.h"
- #include "CStackQueue.h"
- #include "CBattleInterface.h"
- #include "../../lib/BattleState.h"
- #include "../Graphics.h"
- #include "../SDL_Extensions.h"
- #include "../CPlayerInterface.h"
- #include "../CBitmapHandler.h"
- #include "../../CCallback.h"
- #include "../UIFramework/CGuiHandler.h"
- void CStackQueue::update()
- {
- stacksSorted.clear();
- owner->curInt->cb->getStackQueue(stacksSorted, QUEUE_SIZE);
- for (int i = 0; i < QUEUE_SIZE ; i++)
- {
- stackBoxes[i]->setStack(stacksSorted[i]);
- }
- }
- CStackQueue::CStackQueue(bool Embedded, CBattleInterface * _owner)
- :embedded(Embedded), owner(_owner)
- {
- OBJ_CONSTRUCTION_CAPTURING_ALL;
- if(embedded)
- {
- box = NULL;
- bg = NULL;
- pos.w = QUEUE_SIZE * 37;
- pos.h = 32; //height of small creature img
- pos.x = screen->w/2 - pos.w/2;
- pos.y = (screen->h - 600)/2 + 10;
- }
- else
- {
- box = BitmapHandler::loadBitmap("CHRROP.pcx");
- bg = BitmapHandler::loadBitmap("DIBOXPI.pcx");
- pos.w = 600;
- pos.h = bg->h;
- }
- stackBoxes.resize(QUEUE_SIZE);
- for (int i = 0; i < QUEUE_SIZE; i++)
- {
- stackBoxes[i] = new StackBox(box);
- stackBoxes[i]->pos.x += 6 + (embedded ? 37 : 79)*i;
- }
- }
- CStackQueue::~CStackQueue()
- {
- SDL_FreeSurface(box);
- }
- void CStackQueue::showAll( SDL_Surface *to )
- {
- blitBg(to);
- CIntObject::showAll(to);
- }
- void CStackQueue::blitBg( SDL_Surface * to )
- {
- if(bg)
- {
- for (int w = 0; w < pos.w; w += bg->w)
- {
- blitAtLoc(bg, w, 0, to);
- }
- }
- }
- void CStackQueue::StackBox::showAll( SDL_Surface *to )
- {
- assert(my);
- if(bg)
- {
- graphics->blueToPlayersAdv(bg, my->owner);
- //SDL_UpdateRect(bg, 0, 0, 0, 0);
- SDL_Rect temp_rect = genRect(bg->h, bg->w, pos.x, pos.y);
- CSDL_Ext::blit8bppAlphaTo24bpp(bg, NULL, to, &temp_rect);
- //blitAt(bg, pos, to);
- blitAt(graphics->bigImgs[my->getCreature()->idNumber], pos.x +9, pos.y + 1, to);
- printAtMiddleLoc(makeNumberShort(my->count), pos.w/2, pos.h - 12, FONT_MEDIUM, zwykly, to);
- }
- else
- {
- blitAt(graphics->smallImgs[-2], pos, to);
- blitAt(graphics->smallImgs[my->getCreature()->idNumber], pos, to);
- const SDL_Color &ownerColor = (my->owner == 255 ? *graphics->neutralColor : graphics->playerColors[my->owner]);
- CSDL_Ext::drawBorder(to, pos, int3(ownerColor.r, ownerColor.g, ownerColor.b));
- printAtMiddleLoc(makeNumberShort(my->count), pos.w/2, pos.h - 8, FONT_TINY, zwykly, to);
- }
- }
- void CStackQueue::StackBox::setStack( const CStack *nStack )
- {
- my = nStack;
- }
- CStackQueue::StackBox::StackBox(SDL_Surface *BG)
- :my(NULL), bg(BG)
- {
- if(bg)
- {
- pos.w = bg->w;
- pos.h = bg->h;
- }
- else
- {
- pos.w = pos.h = 32;
- }
- pos.y += 2;
- }
- CStackQueue::StackBox::~StackBox()
- {
- }
- void CStackQueue::StackBox::hover( bool on )
- {
- }
|