From e12753d2ec9db83ec08bb9db63902a82fb245cdd Mon Sep 17 00:00:00 2001 From: "Tomas Chvatal (scarabeus)" Date: Wed, 22 Oct 2008 22:50:54 +0200 Subject: X --- src/client/radar.c~ | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/client/radar.c~ (limited to 'src/client/radar.c~') diff --git a/src/client/radar.c~ b/src/client/radar.c~ new file mode 100644 index 0000000..afa48d4 --- /dev/null +++ b/src/client/radar.c~ @@ -0,0 +1,121 @@ + +#include +#include +#include + +#include "main.h" +#include "list.h" +#include "tux.h" +#include "arena.h" + +#include "interface.h" +#include "image.h" +#include "radar.h" + +static image_t *g_radar; +static list_t *listRadar; + +typedef struct radar_item_struct +{ + int id; + int x, y; + int type; +} radar_item_t; + +static radar_item_t* newRadarItem(int id, int x, int y, int type) +{ + radar_item_t *new; + + new = malloc( sizeof(radar_item_t) ); + new->id = id; + new->x = x; + new->y = y; + new->type = type; + + return new; +} + +static void destroyRadarItem(radar_item_t *p) +{ + assert( p != NULL ); + free(p); +} + +void addToRadar(int id, int x, int y, int type) +{ + int i; + + for( i = 0 ; i < listRadar->count ; i++ ) + { + radar_item_t *thisRadarItem; + + thisRadarItem = (radar_item_t *)listRadar->list[i]; + + if( thisRadarItem->id == id ) + { + thisRadarItem->x = x; + thisRadarItem->y = y; + thisRadarItem->type = type; + return; + } + } + + addList(listRadar, newRadarItem(id, x, y, type) ); +} + +void delFromRadar(int id) +{ + int i; + + for( i = 0 ; i < listRadar->count ; i++ ) + { + radar_item_t *thisRadarItem; + + thisRadarItem = (radar_item_t *)listRadar->list[i]; + + if( thisRadarItem->id == id ) + { + delListItem(listRadar, i, destroyRadarItem); + return; + } + } +} + +void initRadar() +{ + assert( isImageInicialized() == TRUE ); + assert( isInterfaceInicialized() == TRUE ); + + g_radar = addImageData("radar.png", IMAGE_NO_ALPHA, "radar", IMAGE_GROUP_USER); + listRadar = newList(); +} + +void drawRadar(arena_t *arena) +{ + int i; + + drawImage(g_radar, RADAR_LOCATION_X, RADAR_LOCATION_Y, 0, 0, RADAR_SIZE_X+2, RADAR_SIZE_Y+2); + + for( i = 0 ; i < listRadar->count ; i++ ) + { + radar_item_t *thisRadarItem; + int x, y; + + thisRadarItem = (radar_item_t *)listRadar->list[i]; + + x = ( ( (float)RADAR_SIZE_X) / ( (float)arena->w ) ) * ( (float)thisRadarItem->x ); + y = ( ( (float)RADAR_SIZE_Y) / ( (float)arena->h ) ) * ( (float)thisRadarItem->y ); + + if( x >= 0 && x <= RADAR_SIZE_X && y >= 0 && y <= RADAR_SIZE_Y ) + { + drawImage(g_radar, + RADAR_LOCATION_X+1+x, RADAR_LOCATION_Y+1+y, + 2*thisRadarItem->type, RADAR_SIZE_Y+2, 2, 2); + } + } +} + +void quitRadar() +{ + destroyListItem(listRadar, destroyRadarItem); +} -- cgit v1.2.3