From b56004caaa4e1c2b682e5f3391239321acc41b8a Mon Sep 17 00:00:00 2001 From: oroborus Date: Fri, 22 Aug 2008 16:37:04 +0000 Subject: - moznost nastavit ako sa ma screen splitnut tuxanci-svn --split-vertical alebo tuxanci-svn --split-horizontal git-svn-id: http://opensvn.csie.org/tuxanci_ng@239 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/base/arena.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- src/base/arena.h | 7 ++++++- 2 files changed, 52 insertions(+), 5 deletions(-) (limited to 'src/base') diff --git a/src/base/arena.c b/src/base/arena.c index 1284e95..3a72eba 100644 --- a/src/base/arena.c +++ b/src/base/arena.c @@ -18,6 +18,7 @@ #endif static arena_t *currentArena; +static int splitType; void setCurrentArena(arena_t *p) { @@ -29,6 +30,23 @@ arena_t* getCurrentArena() return currentArena; } +void initArena() +{ + splitType = SCREEN_SPLIT_VERTICAL; + + if( getParam("--split-vertical") ) + { + splitType = SCREEN_SPLIT_VERTICAL; + printf("SCREEN_SPLIT_VERTICAL\n"); + } + + if( getParam("--split-horizontal") ) + { + splitType = SCREEN_SPLIT_HORIZONTAL; + printf("SCREEN_SPLIT_HORIZONTAL\n"); + } +} + arena_t* newArena(int w, int h) { arena_t *new; @@ -191,12 +209,28 @@ static void drawSplitArenaForTux(arena_t *arena, tux_t *tux, int location_x, int { int screen_x, screen_y; - getCenterScreen(&screen_x, &screen_y, tux->x, tux->y, WINDOW_SIZE_X/2, WINDOW_SIZE_Y); - + switch( splitType ) + { + case SCREEN_SPLIT_HORIZONTAL : + getCenterScreen(&screen_x, &screen_y, tux->x, tux->y, WINDOW_SIZE_X, WINDOW_SIZE_Y/2); + break; + case SCREEN_SPLIT_VERTICAL : + getCenterScreen(&screen_x, &screen_y, tux->x, tux->y, WINDOW_SIZE_X/2, WINDOW_SIZE_Y); + break; + } + drawBackground(arena, screen_x, screen_y); drawObjects(arena, screen_x, screen_y); - drawLayerSplit(location_x, location_y, screen_x, screen_y, WINDOW_SIZE_X/2, WINDOW_SIZE_Y); + switch( splitType ) + { + case SCREEN_SPLIT_HORIZONTAL : + drawLayerSplit(location_x, location_y, screen_x, screen_y, WINDOW_SIZE_X, WINDOW_SIZE_Y/2); + break; + case SCREEN_SPLIT_VERTICAL : + drawLayerSplit(location_x, location_y, screen_x, screen_y, WINDOW_SIZE_X/2, WINDOW_SIZE_Y); + break; + } } void drawSplitArena(arena_t *arena) @@ -207,7 +241,15 @@ void drawSplitArena(arena_t *arena) if( tux != NULL ) { - drawSplitArenaForTux(arena, tux, WINDOW_SIZE_X/2, 0); + switch( splitType ) + { + case SCREEN_SPLIT_HORIZONTAL : + drawSplitArenaForTux(arena, tux, 0, WINDOW_SIZE_Y/2); + break; + case SCREEN_SPLIT_VERTICAL : + drawSplitArenaForTux(arena, tux, WINDOW_SIZE_X/2, 0); + break; + } } tux = getControlTux(TUX_CONTROL_KEYBOARD_LEFT); diff --git a/src/base/arena.h b/src/base/arena.h index 392738b..1a326c3 100644 --- a/src/base/arena.h +++ b/src/base/arena.h @@ -13,6 +13,9 @@ #define random rand #endif +#define SCREEN_SPLIT_HORIZONTAL 1 +#define SCREEN_SPLIT_VERTICAL 2 + #include "list.h" #include "space.h" @@ -24,8 +27,9 @@ typedef struct arena_struct image_t *background; #endif int w, h; + list_t *listTimer; - //list_t *listTux; + space_t *spaceShot; space_t *spaceTux; space_t *spaceItem; @@ -37,6 +41,7 @@ typedef struct arena_struct extern void setCurrentArena(arena_t *p); extern arena_t* getCurrentArena(); +extern void initArena(); extern arena_t* newArena(int w, int h); extern int conflictSpace(int x1,int y1,int w1,int h1,int x2,int y2,int w2,int h2); extern int isFreeSpace(arena_t *arena, int x, int y, int w, int h); -- cgit v1.2.3