diff options
Diffstat (limited to 'src/layer.c')
| -rwxr-xr-x | src/layer.c | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/src/layer.c b/src/layer.c deleted file mode 100755 index 07ec40f..0000000 --- a/src/layer.c +++ /dev/null @@ -1,153 +0,0 @@ - -#include <stdlib.h> -#include <assert.h> - -#include "main.h" -#include "interface.h" -#include "list.h" -#include "layer.h" -#include "image.h" -#include "tux.h" -#include "screen_world.h" - -static list_t *listLayer; - -static bool_t isLayerInit = FALSE; - -bool_t isLayerInicialized() -{ - return isLayerInit; -} - -/* - * Inicializuje globalny zoznam vsrtiev - */ -void initLayer() -{ - listLayer = newList(); -} - -/* - * Prida novu polozku do zoznamu vrstiev - * *img - obrazok, ktory obsahuje polozka - * x y w h - suradnca kam sa obrazok vykresli a jeho rozmery - * px py pw ph - suradnica casti obrazka *img ktora sa ma zobrazit - * layer - vrstva na ktorej sa zobrazi obrazok - */ -void addLayer(SDL_Surface *img, - int x,int y, int px,int py, - int w,int h, int player) -{ - layer_t *new; - layer_t *this; - int i; - - assert( img != NULL ); - - new = malloc( sizeof(layer_t) ); - new->x = x; - new->y = y; - new->w = w; - new->h = h; - new->px = px; - new->py = py; - new->layer = player; - new->image = img; - - if( listLayer->count == 0 ) - { - addList(listLayer, new); - return; - } - - i = 0; - this = (layer_t *)listLayer->list[0]; - - //vyhladaj svoju vrstvu - while( i < listLayer->count && this->layer < new->layer ) - { - this = (layer_t *)listLayer->list[++i]; - } - - //porovnaj s vyskami na tvojej vrstve, - //ak neexistuje, rovno to tam hod - this = (layer_t *)listLayer->list[i]; - - while( i < listLayer->count && this->y+this->h < new->y+new->h && new->layer == this->layer ) - { - this = (layer_t *)listLayer->list[++i]; - } - - insList(listLayer, i, new); - isLayerInit = TRUE; -} - -/* - * Vykresli vsetky polozky na obrazovku - * poukadane podla vrstvy a suradnice Y+H - * po dokresleni sa zoznam uvolni. - */ -void drawLayer() -{ - layer_t *this; - int i; - - for( i = 0 ; i < listLayer->count ; i++ ) - { - this = (layer_t *)listLayer->list[i]; - - drawImage(this->image, - this->x, this->y, - this->px, this->py, - this->w, this->h); - } - - destroyListItem(listLayer, free); - listLayer = newList(); -} - -void drawLayerCenter(int x, int y) -{ - layer_t *this; - int screen_x, screen_y; - int i; - - getCenterScreen(&screen_x, &screen_y, x, y); - - for( i = 0 ; i < listLayer->count ; i++ ) - { - this = (layer_t *)listLayer->list[i]; - - if( (this->x - screen_x) + this->w < 0 || (this->x - screen_x) > WINDOW_SIZE_X || - (this->y - screen_y) + this->h < 0 || (this->y - screen_y) > WINDOW_SIZE_Y ) - { - continue; - } - - drawImage(this->image, - this->x - screen_x, this->y - screen_y, - this->px, this->py, - this->w, this->h); - - //printf("%d %d\n", this->x - screen_x, this->y - screen_y); - } - - destroyListItem(listLayer, free); - listLayer = newList(); -} - -void flushLayer() -{ - destroyListItem(listLayer, free); - listLayer = newList(); -} - -/* - * Odstrani zoznam vrtsiev z pamete. - */ -void quitLayer() -{ - destroyListItem(listLayer, free); - isLayerInit = FALSE; -} - |