summaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/arena.c50
-rw-r--r--src/base/arena.h7
2 files changed, 52 insertions, 5 deletions
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);