40 files changed, 3409 insertions, 0 deletions
diff --git a/noncore/games/kbill/Bucket.cc b/noncore/games/kbill/Bucket.cc new file mode 100644 index 0000000..4b1d82a --- a/dev/null +++ b/noncore/games/kbill/Bucket.cc @@ -0,0 +1,16 @@ +#include "objects.h" + +int Bucket::clicked (int x, int y) { + return (x > 0 && y > 0 && x < width && y < height); +} + +void Bucket::draw() { + if (game.grabbed != game.BUCKET) ui.draw(picture, 0, 0); +} + +void Bucket::load_pix() { + picture.load("bucket"); + cursor.load("bucket", cursor.OWN_MASK); + width = picture.width; + height = picture.height; +} diff --git a/noncore/games/kbill/Bucket.h b/noncore/games/kbill/Bucket.h new file mode 100644 index 0000000..d8a2144 --- a/dev/null +++ b/noncore/games/kbill/Bucket.h @@ -0,0 +1,17 @@ +#ifndef BUCKET_H +#define BUCKET_H + +#include "Picture.h" +#include "MCursor.h" + +class Bucket { +public: + Picture picture; + MCursor cursor; + int width, height; + void draw(); + int clicked(int x, int y); + void load_pix(); +}; + +#endif diff --git a/noncore/games/kbill/Cable.cc b/noncore/games/kbill/Cable.cc new file mode 100644 index 0000000..6fdb3d1 --- a/dev/null +++ b/noncore/games/kbill/Cable.cc @@ -0,0 +1,94 @@ +#include "objects.h" + +void Cable::setup() { + c1 = game.RAND(0, net.units-1); + do { + c2 = game.RAND(0, net.units-1); + } while (c2 == c1); + active = index = 0; + delay = spark.delay(game.level); + x1 = net.computers[c1].x + net.width/3; + x2 = net.computers[c2].x + net.width/3; + y1 = net.computers[c1].y + net.height/2; + y2 = net.computers[c2].y + net.height/2; +} + +void Cable::update () { + if (active) { + if ((net.computers[c1].os == OS.WINGDOWS) == + (net.computers[c2].os == OS.WINGDOWS)) + active=0; + else if (net.computers[c1].os == OS.WINGDOWS || + net.computers[c2].os == OS.WINGDOWS) + { + int dir, xdist, ydist,c; + float sx, sy; + dir = (net.computers[c2].os == OS.WINGDOWS); + if (dir) + {xdist=x1-x; ydist=y1-y;} + else + {xdist=x2-x; ydist=y2-y;} + sx = xdist >= 0 ? 1.0 : -1.0; + sy = ydist >= 0 ? 1.0 : -1.0; + xdist = abs(xdist); + ydist = abs(ydist); + if (xdist==0 && ydist==0) { + if (dir==0) c=c2; else c=c1; + if (!net.computers[c].busy) { + if (net.computers[c].os == OS.OFF) + net.off--; + else + net.base--; + net.win++; + net.computers[c].os=OS.WINGDOWS; + } + active=0; + } + else if (game.MAX (xdist, ydist) < spark.speed) { + if (dir) + {x = x1; y = y1;} + else + {x = x2; y = y2;} + } + else { + fx+=(xdist*spark.speed*sx)/(xdist+ydist); + fy+=(ydist*spark.speed*sy)/(xdist+ydist); + x = (int)fx; + y = (int)fy; + } + index = 1 - index; + } + } + else { + if ((net.computers[c1].os == OS.WINGDOWS) == + (net.computers[c2].os == OS.WINGDOWS)) + delay = spark.delay(game.level); + else if (net.computers[c1].os == OS.WINGDOWS || + net.computers[c2].os == OS.WINGDOWS) + { + if (delay>0) delay--; + else { + active = 1; + if (net.computers[c1].os == OS.WINGDOWS) + {fx=x=x1; fy=y=y1;} + else + {fx=x=x2; fy=y=y2;} + } + } + } +} + +int Cable::onspark (int locx, int locy) { + if (!active) return 0; + return (abs(locx-x) < spark.width + && abs(locy-y) < spark.height); +} + +void Cable::draw() { + int rx = x - spark.width/2; + int ry = y - spark.height/2; + ui.draw_line(x1,y1,x2,y2); + if (active) + ui.draw(spark.pictures[index], rx, ry); +} + diff --git a/noncore/games/kbill/Cable.h b/noncore/games/kbill/Cable.h new file mode 100644 index 0000000..bb6c31c --- a/dev/null +++ b/noncore/games/kbill/Cable.h @@ -0,0 +1,20 @@ +#ifndef CABLE_H +#define CABLE_H + +class Cable { +public: + int c1, c2; /*computers connected */ + int x1,y1,x2,y2; /*endpoints of line representing cable */ + int x, y; /*current location of spark*/ + float fx, fy; /*needed for line drawing*/ + int delay; /*how much time until spark leaves*/ + int active; /*is spark moving and from which end*/ + int index; + void setup(); + void draw(); + void update(); + int onspark (int locx, int locy); + +}; + +#endif diff --git a/noncore/games/kbill/Computer.cc b/noncore/games/kbill/Computer.cc new file mode 100644 index 0000000..7bd4bd3 --- a/dev/null +++ b/noncore/games/kbill/Computer.cc @@ -0,0 +1,56 @@ +#include "objects.h" + +int Computer::setup(int i) { + int j, counter=0, flag; + do { + if (++counter>4000) return 0; + x = game.RAND(BORDER, game.scrwidth - BORDER - net.width); + y = game.RAND(BORDER, game.scrheight - BORDER - net.height); + flag=1; + /*checks for conflicting computer placement*/ + for (j=0; j<i && flag; j++) + if (game.INTERSECT(x, y, + net.width-bill.list[0].XOFFSET+bill.width, + net.height, net.computers[j].x, + net.computers[j].y, + net.width-bill.list[0].XOFFSET+bill.width, + net.height)) + flag=0; + } while (!flag); + type = game.RAND(1, net.NUM_SYS); + os = determineOS(); + busy=0; + return 1; +} + +int Computer::find_stray() { + int i; + for (i=0; i < bill.MAX_BILLS; i++) { + if (bill.list[i].state != bill.list[i].STRAY) continue; + if (game.INTERSECT(x, y, net.width, net.height, bill.list[i].x, + bill.list[i].y, OS.width, OS.height)) + return i; + } + return -1; +} + +int Computer::oncomputer (int locx, int locy) { + return (abs(locx-x) < net.width && abs(locy-y) < net.height); +} + +int Computer::compatible (int system) { + return (type==system || (type>=PC && system>=OS.PC)); +} + +int Computer::determineOS() { + if (type<PC) return type; + else return game.RAND (OS.PC, OS.NUM_OS); +} + +void Computer::draw() { + ui.draw(net.pictures[type], x, y); + if (os != OS.OFF) + ui.draw(OS.os[os], x + OFFSET, y + OFFSET); +} + + diff --git a/noncore/games/kbill/Computer.h b/noncore/games/kbill/Computer.h new file mode 100644 index 0000000..7edcafb --- a/dev/null +++ b/noncore/games/kbill/Computer.h @@ -0,0 +1,22 @@ +#ifndef COMPUTER_H +#define COMPUTER_H + +class Computer { /*structure for Computers*/ +public: + int type; /*CPU type*/ + int os; /*current OS*/ + int x, y; /*location*/ + int busy; /*is the computer being used?*/ + int setup(int i); + void draw(); + int find_stray(); + int oncomputer (int locx, int locy); + int compatible(int system); + int determineOS(); + static const int TOASTER = 0; /* computer 0 is a toaster */ + static const int PC = 5; /* type>=PC means the computer is a PC*/ + static const int OFFSET = 4; /* offset of screen from 0,0 */ + static const int BORDER = 50; /* BORDER pixels free on all sides*/ +}; + +#endif diff --git a/noncore/games/kbill/Game.cc b/noncore/games/kbill/Game.cc new file mode 100644 index 0000000..624b50b --- a/dev/null +++ b/noncore/games/kbill/Game.cc @@ -0,0 +1,246 @@ +#include "objects.h" + +Horde bill; +Network net; +Library OS; +Bucket bucket; +Spark spark; +//Scorelist scores; +Game game; +UI ui; + +int Game::RAND(int lb, int ub) { + return (rand()%(ub-lb+1) + lb); +} + +int Game::MAX(int x, int y) { + return (x>y ? x : y); +} + +int Game::MIN(int x, int y) { + return (x<y ? x : y); +} + +int Game::INTERSECT(int x1, int y1, int w1, int h1, int x2, int y2, int w2, + int h2) +{ + return (((x2-x1<=w1 && x2-x1>=0) || (x1-x2<=w2 && x1-x2>=0)) + && ((y2-y1<=h1 && y2-y1>=0) || (y1-y2<=h2 && y1-y2>=0))); +} + +void Game::setup_level (unsigned int lev) { + level = lev; + bill.setup(); + grabbed = EMPTY; + ui.set_cursor(DEFAULTC); + net.setup(); + iteration = efficiency = 0; +} + +void Game::start(unsigned int lev) { + state = PLAYING; + score = 0; + ui.restart_timer(); + ui.set_pausebutton(true); + setup_level(lev); +} + +void Game::quit() { + + exit(0); +} + +void Game::update_info() { + static char str[80]; + sprintf (str, "Bill:%d/%d System:%d/%d/%d Level:%d Score:%d", + bill.on_screen, bill.off_screen, net.base, net.off, + net.win, level, score); + ui.draw_str(str, 5, scrheight-5); + efficiency += ((100*net.base-10*net.win)/net.units); +} + +void Game::update_score (int action) { + switch (action){ + case ENDLEVEL: score+=(level*efficiency/iteration); break; + default: score+=(action*action*BILLPOINTS); + } +} + +void Game::warp_to_level (unsigned int lev) { + if (state==PLAYING) { + if (lev <= level) return; + setup_level(lev); + } + else { + if (lev<=0) return; + start(lev); + } +} + +void Game::button_press(int x, int y) { + int i, counter=0, flag=0; + if (state != PLAYING) return; + ui.set_cursor(DOWNC); + if (bucket.clicked(x, y)) { + ui.set_cursor(BUCKETC); + grabbed = BUCKET; + } + for (i=0; i < bill.MAX_BILLS && !flag; i++) { + if (bill.list[i].state == bill.list[i].OFF + || bill.list[i].state == bill.list[i].DYING) + continue; + if (bill.list[i].state == bill.list[i].STRAY && + bill.list[i].clickedstray(x, y)) + { + ui.set_cursor (bill.list[i].cargo); + grabbed = i; + flag = 1; + } + else if (bill.list[i].state != bill.list[i].STRAY && + bill.list[i].clicked(x, y)) + { + if (bill.list[i].state == bill.list[i].AT) + net.computers[bill.list[i].target_c].busy=0; + bill.list[i].index = -1; + bill.list[i].cels = bill.dcels; + bill.list[i].x_offset = -2; + bill.list[i].y_offset = -15; + bill.list[i].state = bill.list[i].DYING; + counter++; + } + } + if (counter) update_score(counter); +} + +void Game::button_release(int x, int y) { + int i; + ui.set_cursor (DEFAULTC); + if (state != PLAYING || grabbed == EMPTY) + return; + if (grabbed == BUCKET) { + grabbed = EMPTY; + for (i=0; i<net.ncables; i++) + if (net.cables[i].onspark(x, y)) { + net.cables[i].active=0; + net.cables[i].delay = spark.delay(level); + } + return; + } + for (i=0; i<net.units; i++) + if (net.computers[i].oncomputer(x, y) + && + net.computers[i].compatible (bill.list[grabbed].cargo) + && + (net.computers[i].os == OS.WINGDOWS || + net.computers[i].os == OS.OFF)) + { + net.base++; + if (net.computers[i].os == OS.WINGDOWS) + net.win--; + else + net.off--; + net.computers[i].os = bill.list[grabbed].cargo; + bill.list[grabbed].state = bill.list[grabbed].OFF; + grabbed = EMPTY; + return; + } + grabbed = EMPTY; +} + +void Game::update() { + switch (state) { + case PLAYING: + ui.clear(); + bucket.draw(); + net.update(); + net.draw(); + bill.update(); + bill.draw(); + update_info(); + if (!(bill.on_screen+bill.off_screen)) { + update_score(ENDLEVEL); + state = BETWEEN; + } + if ((net.base+net.off)<=1) state = END; + break; + case END: + ui.clear(); + net.toasters(); + net.draw(); + ui.refresh(); + ui.popup_dialog(ENDGAME); +/* if (score > scores.score[9]) ui.popup_dialog(ENTERNAME); + scores.update();*/ + ui.popup_dialog(HIGHSCORE); + ui.clear(); + ui.draw_centered(logo); + ui.kill_timer(); + ui.set_pausebutton (false); + state = WAITING; + break; + case BETWEEN: + ui.update_scorebox(level, score); + ui.popup_dialog (SCORE); + state = PLAYING; + setup_level(++level); + break; + } + ui.refresh(); + iteration++; +} + +void Game::main(int argc, char **argv) { + int c; + extern char *optarg; + + level = 0; + ui.initialize(&argc, argv); + while (argv && argv[0] && (c = getopt(argc, argv, "l:L:")) != -1) + switch(c) { + case 'l': + case 'L': level = MAX (1, atoi(optarg)); break; + } + srand(time(NULL)); + ui.make_mainwin(); + ui.graph_init(); + ui.clear(); + logo.load("logo"); + ui.draw_centered(logo); + ui.refresh(); + ui.make_windows(); +// scores.read(); +// scores.update(); + + bill.load_pix(); + OS.load_pix(); + net.load_pix(); + bucket.load_pix(); + spark.load_pix(); + + ui.load_cursors(); + + state = WAITING; + if (level) start(level); + else ui.set_pausebutton(false); + ui.MainLoop(); + exit(0); +} + +int main(int argc, char **argv) { + if (argc>1 && !strcmp(argv[1], "-v")) { + printf ("XBill version 2.0\n\n"); + exit(0); + } + if (argc>1 && !strcmp(argv[1], "-h")) { + printf ("XBill version 2.0\n"); + printf ("Options:\n"); + printf ("-l n, -L n\tStart at level n.\n"); + printf ("-v\t\tPrint version number and exit.\n"); + printf ("-h\t\tPrint help and exit.\n"); + printf ("leaves the window.\n"); + printf ("All standard X Intrinsics options are also "); + printf ("supported.\n\n"); + exit(0); + } + game.main(argc, argv); +} diff --git a/noncore/games/kbill/Game.h b/noncore/games/kbill/Game.h new file mode 100644 index 0000000..4473936 --- a/dev/null +++ b/noncore/games/kbill/Game.h @@ -0,0 +1,55 @@ +#ifndef GAME_H +#define GAME_H + +#include "objects.h" + +class Game { + unsigned state; + int efficiency; +public: + unsigned score, level, iteration; + Picture logo; + int grabbed; + + static const unsigned short scrwidth = 240; + static const unsigned short scrheight = 290; + + static const int PLAYING = 1; + static const int BETWEEN = 2; + static const int END = 3; + static const int WAITING = 4; + + static const int DEFAULTC = 0; /* cursors */ + static const int DOWNC = -1; + static const int BUCKETC = -2; + + static const int ENDGAME = 200; /* dialog window IDs */ + static const int ENTERNAME = 201; + static const int HIGHSCORE = 202; + static const int SCORE = 203; + + static const int ENDLEVEL = -1; /* Codes for updating score */ + static const int BILLPOINTS = 5; + + static const int EMPTY = -2; /* Grabbed object */ + static const int BUCKET = -1; + + int RAND(int lb, int ub); + int MAX(int x, int y); + int MIN(int x, int y); + int INTERSECT(int x1, int y1, int w1, int h1, int x2, int y2, int w2, + int h2); + + void setup_level (unsigned int lev); + void start(unsigned int lev); + void quit(); + void update_info(); + void update_score (int action); + void warp_to_level (unsigned int lev); + void button_press(int x, int y); + void button_release(int x, int y); + void update(); + void main(int argc, char **argv); +}; + +#endif diff --git a/noncore/games/kbill/Horde.cc b/noncore/games/kbill/Horde.cc new file mode 100644 index 0000000..d908037 --- a/dev/null +++ b/noncore/games/kbill/Horde.cc @@ -0,0 +1,64 @@ +#include "objects.h" + +void Horde::setup() { + for (int i=0; i < MAX_BILLS; i++) + list[i].state = list[i].OFF; + off_screen = on (game.level); + on_screen = 0; +} + +/* Launches Bills whenever called */ +void Horde::launch(int max){ + int i, n; + if (!max || !off_screen) return; + n=game.RAND(1, game.MIN(max, off_screen)); + for (i=0; n; n--) { + for (i++; i < MAX_BILLS; i++) + if (list[i].state == list[i].OFF) break; + if (i == MAX_BILLS) return; + list[i++].enter(); + } +} + +int Horde::on (unsigned int lev) { + return game.MIN(8+3*lev, MAX_BILLS); +} + +int Horde::max_at_once (unsigned int lev) { + return game.MIN(2+lev/4, 12); +} + +int Horde::between (unsigned int lev) { + return game.MAX(14-lev/3, 10); +} + +void Horde::load_pix () { + int i; + for (i=0; i < WCELS-1; i++) { + lcels[i].load("billL", i); + rcels[i].load("billR", i); + } + lcels[WCELS-1] = lcels[1]; + rcels[WCELS-1] = rcels[1]; + + for (i=0; i < DCELS; i++) + dcels[i].load("billD", i); + width=dcels[0].width; + height=dcels[0].height; + + for (i=0; i < ACELS; i++) + acels[i].load("billA", i); +} + +void Horde::update() { + int i; + if (!(game.iteration % between(game.level))) + launch(max_at_once(game.level)); + for (i=0; i < MAX_BILLS; i++) list[i].update(); +} + +void Horde::draw() { + int i; + for (i=0; i < MAX_BILLS; i++) list[i].draw(); +} + diff --git a/noncore/games/kbill/Horde.h b/noncore/games/kbill/Horde.h new file mode 100644 index 0000000..a54a620 --- a/dev/null +++ b/noncore/games/kbill/Horde.h @@ -0,0 +1,27 @@ +#ifndef HORDE_H +#define HORDE_H + +#include "Monster.h" +#include "Picture.h" + +class Horde { /*global structure of all bills*/ +public: + static const int MAX_BILLS = 100; /*max Bills per level*/ + static const int WCELS = 4; /* # of bill walking animation frames*/ + static const int DCELS = 5; /* # of bill dying animation frames*/ + static const int ACELS = 13; /* # of bill switching OS frames*/ + Monster list[MAX_BILLS]; /* list of monsters in all states*/ + int width, height; + int on_screen, off_screen; + Picture lcels[WCELS], rcels[WCELS], acels[ACELS], dcels[DCELS]; + void load_pix(); + void setup(); + void launch(int max); + int on(unsigned int lev); + int max_at_once(unsigned int lev); + int between(unsigned int lev); + void update(); + void draw(); +}; + +#endif diff --git a/noncore/games/kbill/Library.cc b/noncore/games/kbill/Library.cc new file mode 100644 index 0000000..bb1e548 --- a/dev/null +++ b/noncore/games/kbill/Library.cc @@ -0,0 +1,13 @@ +#include "objects.h" + +void Library::load_pix() { + int i; + char *name[] = {"wingdows", "apple", "next", "sgi", "sun", "os2", + "bsd", "linux", "redhat", "hurd"}; + for (i=0; i <= NUM_OS; i++) { + os[i].load(name[i]); + if (i) cursor[i].load(name[i], cursor[i].OWN_MASK); + } + width = os[0].width; + height = os[0].height; +} diff --git a/noncore/games/kbill/Library.h b/noncore/games/kbill/Library.h new file mode 100644 index 0000000..eda2fcf --- a/dev/null +++ b/noncore/games/kbill/Library.h @@ -0,0 +1,19 @@ +#ifndef LIBRARY_H +#define LIBRARY_H + +#include "Picture.h" +#include "MCursor.h" + +class Library { /* global structure of all OSes */ +public: + static const int WINGDOWS = 0; /* OS 0 is wingdows */ + static const int OFF = -1; /* OS -1 means the computer is off */ + static const int PC = 5; /* OS >= PC means the OS is a PC OS */ + static const int NUM_OS = 9; /* The number of OSes (not Wingdows) */ + int width, height; /* size of OS picture*/ + Picture os[NUM_OS+1]; /* array of OS pictures*/ + MCursor cursor[NUM_OS+1]; /* array of OS cursors (drag/drop) */ + void load_pix(); +}; + +#endif diff --git a/noncore/games/kbill/MCursor.cc b/noncore/games/kbill/MCursor.cc new file mode 100644 index 0000000..30f7577 --- a/dev/null +++ b/noncore/games/kbill/MCursor.cc @@ -0,0 +1,69 @@ +/*************************************************************************** + MCursor.cc - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "MCursor.h" +#include "objects.h" + +#include <qcursor.h> +#include <qbitmap.h> +#include <qwidget.h> +#include <qstring.h> +#ifdef KDEVER +#include <kapp.h> +#include <kstandarddirs.h> +#endif +#include <iostream.h> +#include <qpe/resource.h> +MCursor::~MCursor() { + delete cursor; +} + +void MCursor::load(const char *name, int masked) { + + #ifdef KDEVER + QString file, mfile; + KStandardDirs dirs; + + + file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + ".xbm"); + + QBitmap bitmap, mask; + if (bitmap.load(file) == FALSE) { + cerr << "cannot open " << file << endl; + exit(1); + } + if (masked == SEP_MASK) { +// mfile.sprintf ("%sbitmaps/%s_mask.xbm", (const char*)dir, name); + mfile = file = dirs.findResource("data","kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm"); + if (mask.load(mfile) == FALSE) { + cerr << "cannot open " << file << endl; + exit(1); + } + } + else + mask = bitmap; + #endif + + QBitmap bitmap, mask; + bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name)); + + if (masked == SEP_MASK) + mask = bitmap = Resource::loadBitmap("kbill/bitmaps/" + QString::fromLocal8Bit(name) + "_mask.xbm"); + else + mask = bitmap; + cursor = new QCursor(bitmap, mask, bitmap.width() / 2, bitmap.height() / 2); +} + diff --git a/noncore/games/kbill/MCursor.h b/noncore/games/kbill/MCursor.h new file mode 100644 index 0000000..5bf195e --- a/dev/null +++ b/noncore/games/kbill/MCursor.h @@ -0,0 +1,37 @@ +/*************************************************************************** + MCursor.h - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef MCURSOR_H +#define MCURSOR_H + +/*#include <X11/Xlib.h> +#include <X11/xpm.h>*/ + +#include <qcursor.h> + +class MCursor { +public: + ~MCursor(); + static const int SEP_MASK = 0; + static const int OWN_MASK = 1; + void load(const char *name, int masked); +private: + QCursor *cursor; + + friend class UI; +}; + +#endif diff --git a/noncore/games/kbill/Makefile b/noncore/games/kbill/Makefile new file mode 100644 index 0000000..419aaaf --- a/dev/null +++ b/noncore/games/kbill/Makefile @@ -0,0 +1,533 @@ +############################################################################# +# Automatically generated from kbill/Makefile.in +# Build options from +############################################################################# + +# Compiling +INTERFACE_DECL_PATH = . +SYSCONF_CXX = g++ +SYSCONF_CC = gcc +DASHCROSS = + +# Compiling with support libraries +SYSCONF_CXXFLAGS_X11 = +SYSCONF_CXXFLAGS_QT = -I$(QTDIR)/include +SYSCONF_CXXFLAGS_OPENGL = -I/usr/X11R6/include + +# Compiling YACC output +SYSCONF_CXXFLAGS_YACC = -Wno-unused -Wno-parentheses + +# Linking with support libraries +SYSCONF_RPATH_X11 = +SYSCONF_RPATH_QT = -Wl,-rpath,$(QTDIR)/lib +SYSCONF_RPATH_OPENGL = -Wl,-rpath,/usr/X11R6/lib + +# Linking with support libraries +# X11 +SYSCONF_LFLAGS_X11 = +SYSCONF_LIBS_X11 = +# Qt, Qt+OpenGL +SYSCONF_LFLAGS_QT = -L$(QTDIR)/lib +SYSCONF_LIBS_QT = -lqte$(QT_THREAD_SUFFIX) +SYSCONF_LIBS_QT_OPENGL = +# OpenGL +SYSCONF_LFLAGS_OPENGL = -L/usr/X11R6/lib +SYSCONF_LIBS_OPENGL = +# Yacc +SYSCONF_LIBS_YACC = + +# Linking applications +SYSCONF_LINK = gcc +SYSCONF_LFLAGS = +SYSCONF_LIBS = + +# Link flags for shared objects +SYSCONF_LFLAGS_SHOBJ = -shared + +# Flags for threading +SYSCONF_CFLAGS_THREAD = -D_REENTRANT +SYSCONF_CXXFLAGS_THREAD = -D_REENTRANT +SYSCONF_LFLAGS_THREAD = +SYSCONF_LIBS_THREAD = -lpthread + +# Meta-object compiler +SYSCONF_MOC = $(QTDIR)/bin/moc + +# UI compiler +SYSCONF_UIC = $(QTDIR)/bin/uic + +# Linking shared libraries +# - Build the $(TARGET) library, eg. lib$(TARGET).so.2.2.2 +# - Place target in $(DESTDIR) - which has a trailing / +# - Usually needs to incorporate $(VER_MAJ), $(VER_MIN) and $(VER_PATCH) +# +SYSCONF_LINK_SHLIB = gcc +SYSCONF_LINK_TARGET_SHARED = lib$(TARGET).so.$(VER_MAJ).$(VER_MIN).$(VER_PATCH) +SYSCONF_LINK_LIB_SHARED = $(SYSCONF_LINK_SHLIB) -shared -Wl,-soname,lib$(TARGET).so.$(VER_MAJ) \ + $(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \ + $(OBJECTS) $(OBJMOC) $(LIBS) && \ + mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \ + cd $(DESTDIR) && \ + rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \ + ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \ + ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ); \ + ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN) + +# Linking static libraries +# - Build the $(TARGET) library, eg. lib$(TARGET).a +# - Place target in $(DESTDIR) - which has a trailing / +# +SYSCONF_AR = ar cqs +SYSCONF_LINK_TARGET_STATIC = lib$(TARGET).a +SYSCONF_LINK_LIB_STATIC = rm -f $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) ; \ + $(SYSCONF_AR) $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS) $(OBJMOC) +# Compiling application source +SYSCONF_CXXFLAGS = -pipe -DQWS -fno-exceptions -fno-rtti -O2 -Wall -W +SYSCONF_CFLAGS = -pipe -O2 -Wall -W +# Default link type (static linking is still be used where required) +SYSCONF_LINK_LIB = $(SYSCONF_LINK_LIB_SHARED) +SYSCONF_LINK_TARGET = $(SYSCONF_LINK_TARGET_SHARED) +# Compiling library source +SYSCONF_CXXFLAGS_LIB = -fPIC +SYSCONF_CFLAGS_LIB = -fPIC +# Compiling shared-object source +SYSCONF_CXXFLAGS_SHOBJ = -fPIC +SYSCONF_CFLAGS_SHOBJ = -fPIC +# Linking Qt +SYSCONF_LIBS_QTLIB = $(SYSCONF_LFLAGS_X11) $(QT_LIBS_MT) $(QT_LIBS_OPT) +# Linking Qt applications +SYSCONF_LIBS_QTAPP = +############################################################################# + +####### Compiler, tools and options + +CXX = $(SYSCONF_CXX) $(QT_CXX_MT) +CXXFLAGS= $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS) +CC = $(SYSCONF_CC) $(QT_C_MT) +CFLAGS = $(SYSCONF_CFLAGS) +INCPATH = -I$(OPIEDIR)/include +LFLAGS = $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT) +LIBS = $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP) +MOC = $(SYSCONF_MOC) +UIC = $(SYSCONF_UIC) + +####### Target + +DESTDIR = $(OPIEDIR)/bin/ +VER_MAJ = 1 +VER_MIN = 0 +VER_PATCH = 0 +TARGET = zBill +TARGET1 = lib$(TARGET).so.$(VER_MAJ) + +####### Files + +HEADERS = kbill.h \ + field.h \ + Bucket.h \ + Cable.h \ + Computer.h \ + Game.h \ + Horde.h \ + Library.h \ + MCursor.h \ + Monster.h \ + Network.h \ + Picture.h \ + Spark.h \ + Strings.h \ + UI.h \ + objects.h \ + inputbox.h +SOURCES = field.cpp \ + Bucket.cc \ + Cable.cc \ + Computer.cc \ + Game.cc \ + Horde.cc \ + Library.cc \ + MCursor.cc \ + Monster.cc \ + Network.cc \ + Picture.cc \ + Spark.cc \ + UI.cpp \ + inputbox.cpp \ + kbill.cpp +OBJECTS = field.o \ + Bucket.o \ + Cable.o \ + Computer.o \ + Game.o \ + Horde.o \ + Library.o \ + MCursor.o \ + Monster.o \ + Network.o \ + Picture.o \ + Spark.o \ + UI.o \ + inputbox.o \ + kbill.o +INTERFACES = +UICDECLS = +UICIMPLS = +SRCMOC = moc_kbill.cpp \ + moc_field.cpp \ + moc_inputbox.cpp +OBJMOC = moc_kbill.o \ + moc_field.o \ + moc_inputbox.o + + +####### Implicit rules + +.SUFFIXES: .cpp .cxx .cc .C .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + + +all: $(DESTDIR)$(TARGET) + +$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) + $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) + +moc: $(SRCMOC) + +tmake: + tmake kbill.pro + +clean: + -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) + -rm -f *~ core + -rm -f allmoc.cpp + +####### Extension Modules + +listpromodules: + @echo + +listallmodules: + @echo + +listaddonpromodules: + @echo + +listaddonentmodules: + @echo + + +REQUIRES= + +####### Sub-libraries + + +###### Combined headers + + + +####### Compile + +field.o: field.cpp \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Bucket.o: Bucket.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Cable.o: Cable.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Computer.o: Computer.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Game.o: Game.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Horde.o: Horde.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Library.o: Library.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +MCursor.o: MCursor.cc \ + MCursor.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h \ + $(OPIEDIR)/include/qpe/resource.h + +Monster.o: Monster.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Network.o: Network.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Picture.o: Picture.cc \ + Picture.h \ + objects.h \ + Horde.h \ + Monster.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h \ + $(OPIEDIR)/include/qpe/resource.h + +Spark.o: Spark.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +UI.o: UI.cpp \ + kbill.h \ + field.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + Strings.h \ + inputbox.h + +inputbox.o: inputbox.cpp \ + inputbox.h + +kbill.o: kbill.cpp \ + kbill.h \ + field.h \ + inputbox.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + Strings.h + +moc_kbill.o: moc_kbill.cpp \ + kbill.h \ + field.h + +moc_field.o: moc_field.cpp \ + field.h + +moc_inputbox.o: moc_inputbox.cpp \ + inputbox.h + +moc_kbill.cpp: kbill.h + $(MOC) kbill.h -o moc_kbill.cpp + +moc_field.cpp: field.h + $(MOC) field.h -o moc_field.cpp + +moc_inputbox.cpp: inputbox.h + $(MOC) inputbox.h -o moc_inputbox.cpp + + + +lupdate: + lupdate kbill.pro + +lrelease: + lrelease kbill.pro + diff --git a/noncore/games/kbill/Makefile.am b/noncore/games/kbill/Makefile.am new file mode 100644 index 0000000..a09ea13 --- a/dev/null +++ b/noncore/games/kbill/Makefile.am @@ -0,0 +1,59 @@ +####### kdevelop will overwrite this part!!! (begin)########## +bin_PROGRAMS = kbill +kbill_SOURCES = inputbox.cpp UI.cc Spark.cc Scorelist.cc Picture.cc Network.cc Monster.cc MCursor.cc Library.cc Horde.cc Game.cc Computer.cc Cable.cc Bucket.cc field.cpp kbill.cpp +kbill_LDADD = $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT) $(LIBSOCKET) $(LIB_KIO) + + +SUBDIRS = docs bitmaps pixmaps + +EXTRA_DIST = kbill.cpp kbill.h kbill.kdelnk kbill.xpm mini-kbill.xpm field.cpp field.h Bucket.cc Bucket.h Cable.cc Cable.h Computer.cc Computer.h Game.cc Game.h Horde.cc Horde.h Library.cc Library.h MCursor.cc MCursor.h Monster.cc \ Monster.h Network.cc Network.h Picture.cc Picture.h Scorelist.cc Scorelist.h Spark.cc Spark.h \ Strings.h UI.cc objects.h inputbox.cpp inputbox.h + +install-data-local: + $(mkinstalldirs) $(kde_appsdir)/Games/ + $(INSTALL_DATA) kbill.kdelnk $(kde_appsdir)/Games/kbill.kdelnk + $(mkinstalldirs) $(kde_icondir)/ + $(INSTALL_DATA) kbill.xpm $(kde_icondir)/kbill.xpm + $(mkinstalldirs) $(kde_minidir)/ + $(INSTALL_DATA) mini-kbill.xpm $(kde_minidir)/kbill.xpm + $(mkinstalldirs) $(kde_datadir)/kbill/ + $(INSTALL_DATA) scores $(kde_datadir)/kbill/scores + +uninstall-local: + -rm -f $(kde_appsdir)/Games/kbill.kdelnk + -rm -f $(kde_icondir)/kbill.xpm + -rm -f $(kde_minidir)/kbill.xpm + -rm -f $(kde_datadir)/kbill/scores + +####### kdevelop will overwrite this part!!! (end)############ +# this 10 paths are KDE specific. Use them: +# kde_htmldir Where your docs should go to. (contains lang subdirs) +# kde_appsdir Where your application file (.kdelnk) should go to. +# kde_icondir Where your icon should go to. +# kde_minidir Where your mini icon should go to. +# kde_datadir Where you install application data. (Use a subdir) +# kde_locale Where translation files should go to.(contains lang subdirs) +# kde_cgidir Where cgi-bin executables should go to. +# kde_confdir Where config files should go to. +# kde_mimedir Where mimetypes should go to. +# kde_toolbardir Where general toolbar icons should go to. +# kde_wallpaperdir Where general wallpapers should go to. + +# set the include path for X, qt and KDE +INCLUDES= $(all_includes) +# claim, which subdirectories you want to install +# you can add here more. This one gets installed +bin_PROGRAMS = kbill + +kbill_METASOURCES = USE_AUTOMOC + +# the library search path. +kbill_LDFLAGS = $(all_libraries) $(KDE_RPATH) + +# them while "make clean", use CLEANFILES +DISTCLEANFILES = $(kbill_METASOURCES) + +# make messages.po. Move this one to ../po/ and "make merge" in po +# the -x is for skipping messages already translated in kdelibs +messages: + $(XGETTEXT) -C -ki18n -x $(KDEDIR)/include/kde.pot `find . -name \*.h -o -name \*.cpp -o -name \*.cc` -o ../po/kbill.pot + diff --git a/noncore/games/kbill/Makefile.in b/noncore/games/kbill/Makefile.in new file mode 100644 index 0000000..281db16 --- a/dev/null +++ b/noncore/games/kbill/Makefile.in @@ -0,0 +1,427 @@ +############################################################################# + +####### Compiler, tools and options + +CXX = $(SYSCONF_CXX) $(QT_CXX_MT) +CXXFLAGS= $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS) +CC = $(SYSCONF_CC) $(QT_C_MT) +CFLAGS = $(SYSCONF_CFLAGS) +INCPATH = -I$(OPIEDIR)/include +LFLAGS = $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT) +LIBS = $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP) +MOC = $(SYSCONF_MOC) +UIC = $(SYSCONF_UIC) + +####### Target + +DESTDIR = $(OPIEDIR)/bin/ +VER_MAJ = 1 +VER_MIN = 0 +VER_PATCH = 0 +TARGET = zBill +TARGET1 = lib$(TARGET).so.$(VER_MAJ) + +####### Files + +HEADERS = kbill.h \ + field.h \ + Bucket.h \ + Cable.h \ + Computer.h \ + Game.h \ + Horde.h \ + Library.h \ + MCursor.h \ + Monster.h \ + Network.h \ + Picture.h \ + Spark.h \ + Strings.h \ + UI.h \ + objects.h \ + inputbox.h +SOURCES = field.cpp \ + Bucket.cc \ + Cable.cc \ + Computer.cc \ + Game.cc \ + Horde.cc \ + Library.cc \ + MCursor.cc \ + Monster.cc \ + Network.cc \ + Picture.cc \ + Spark.cc \ + UI.cpp \ + inputbox.cpp \ + kbill.cpp +OBJECTS = field.o \ + Bucket.o \ + Cable.o \ + Computer.o \ + Game.o \ + Horde.o \ + Library.o \ + MCursor.o \ + Monster.o \ + Network.o \ + Picture.o \ + Spark.o \ + UI.o \ + inputbox.o \ + kbill.o +INTERFACES = +UICDECLS = +UICIMPLS = +SRCMOC = moc_kbill.cpp \ + moc_field.cpp \ + moc_inputbox.cpp +OBJMOC = moc_kbill.o \ + moc_field.o \ + moc_inputbox.o + + +####### Implicit rules + +.SUFFIXES: .cpp .cxx .cc .C .c + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + + +all: $(DESTDIR)$(TARGET) + +$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS) + $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) + +moc: $(SRCMOC) + +tmake: + tmake kbill.pro + +clean: + -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) + -rm -f *~ core + -rm -f allmoc.cpp + +####### Extension Modules + +listpromodules: + @echo + +listallmodules: + @echo + +listaddonpromodules: + @echo + +listaddonentmodules: + @echo + + +REQUIRES= + +####### Sub-libraries + + +###### Combined headers + + + +####### Compile + +field.o: field.cpp \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Bucket.o: Bucket.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Cable.o: Cable.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Computer.o: Computer.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Game.o: Game.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Horde.o: Horde.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Library.o: Library.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +MCursor.o: MCursor.cc \ + MCursor.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h \ + $(OPIEDIR)/include/qpe/resource.h + +Monster.o: Monster.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Network.o: Network.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +Picture.o: Picture.cc \ + Picture.h \ + objects.h \ + Horde.h \ + Monster.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h \ + $(OPIEDIR)/include/qpe/resource.h + +Spark.o: Spark.cc \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + field.h \ + kbill.h + +UI.o: UI.cpp \ + kbill.h \ + field.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + Strings.h \ + inputbox.h + +inputbox.o: inputbox.cpp \ + inputbox.h + +kbill.o: kbill.cpp \ + kbill.h \ + field.h \ + inputbox.h \ + objects.h \ + Horde.h \ + Monster.h \ + Picture.h \ + Network.h \ + Computer.h \ + Cable.h \ + Library.h \ + MCursor.h \ + Bucket.h \ + Spark.h \ + Game.h \ + UI.h \ + $(OPIEDIR)/include/qpe/qpeapplication.h \ + Strings.h + +moc_kbill.o: moc_kbill.cpp \ + kbill.h \ + field.h + +moc_field.o: moc_field.cpp \ + field.h + +moc_inputbox.o: moc_inputbox.cpp \ + inputbox.h + +moc_kbill.cpp: kbill.h + $(MOC) kbill.h -o moc_kbill.cpp + +moc_field.cpp: field.h + $(MOC) field.h -o moc_field.cpp + +moc_inputbox.cpp: inputbox.h + $(MOC) inputbox.h -o moc_inputbox.cpp + + diff --git a/noncore/games/kbill/Monster.cc b/noncore/games/kbill/Monster.cc new file mode 100644 index 0000000..72bf39b --- a/dev/null +++ b/noncore/games/kbill/Monster.cc @@ -0,0 +1,226 @@ +#include "objects.h" + +void Monster::get_border() { + int i=game.RAND(0,3); + if (i%2==0) target_x=game.RAND(0, game.scrwidth-bill.width); + else target_y=game.RAND(0, game.scrheight-bill.height); + switch (i) { + case 0: target_y=-bill.height-16; break; + case 1: target_x=game.scrwidth+1; break; + case 2: target_y=game.scrwidth+1; break; + case 3: target_x=-bill.width-2; break; + } +} + +/* Adds a bill to the in state*/ +void Monster::enter(){ + state = IN; + get_border(); + x = target_x; y=target_y; + index = 0; + cels = bill.lcels; + cargo = OS.WINGDOWS; + x_offset = -2; + y_offset = -15; + target_c = game.RAND(0, net.units-1); + target_x = net.computers[target_c].x+net.width-XOFFSET; + target_y = net.computers[target_c].y+YOFFSET; + bill.on_screen++; bill.off_screen--; +} + +/* Moves bill toward his target - returns whether or not he moved */ +int Monster::move (int mode) { + int xdist = target_x - x; + int ydist = target_y - y; + int step = step_size(game.level); + int dx, dy; + int signx = xdist >= 0 ? 1 : -1; + int signy = ydist >= 0 ? 1 : -1; + xdist = abs(xdist); + ydist = abs(ydist); + if (!xdist && !ydist) return 0; + else if (xdist<step && ydist<step) { + x = target_x; + y = target_y; + } + else { + dx = (xdist*step*signx)/(xdist+ydist); + dy = (ydist*step*signy)/(xdist+ydist); + switch(mode) { + case SLOW: break; + case FAST: dx = 5*dx/4; dy = 5*dy/4; break; + } + x+=dx; + y+=dy; + if (dx<0) + cels = bill.lcels; + else if (dx>0) + cels = bill.rcels; + } + return 1; +} + +void Monster::draw() { + switch (state) { + case IN: + case OUT: + case DYING: draw_std(); break; + case AT: draw_at(); break; + case STRAY: draw_stray(); break; + default: break; + } +} + +/* Update Bill's position */ +void Monster::update_in() { + int moved = move(SLOW); + if (!moved && (net.computers[target_c].os != OS.WINGDOWS) + && !(net.computers[target_c].busy)) + { + net.computers[target_c].busy=1; + cels = bill.acels; + index=0; + state = AT; + return; + } + else if (!moved) { + int i; + do { + i=game.RAND(0, net.units-1); + } while (i == target_c); + target_c = i; + target_x = net.computers[target_c].x + net.width-XOFFSET; + target_y = net.computers[target_c].y + YOFFSET; + } + index++; + index%=bill.WCELS; + y_offset+=(8*(index%2)-4); +} + +/* Update Bill standing at a computer */ +void Monster::update_at() { + int sys; + if (index==0 && net.computers[target_c].os == OS.OFF) { + index=6; + sys = net.computers[target_c].find_stray(); + if (sys<0) cargo = -1; + else { + cargo = bill.list[sys].cargo; + bill.list[sys].state = OFF; + } + } + else index++; + if (index == 13) { + y_offset = -15; + x_offset = -2; + get_border(); + index = 0; + cels = bill.lcels; + state = OUT; + net.computers[target_c].busy=0; + return; + } + y_offset = bill.height - OS.height; + switch (index) { + case 1 : + case 2 : x -= 8; x_offset +=8; break; + case 3 : x -= 10; x_offset +=10; break; + case 4 : x += 3; x_offset -=3; break; + case 5 : x += 2; x_offset -=2; break; + case 6 : + if (net.computers[target_c].os != OS.OFF) { + net.base--; net.off++; + cargo = net.computers[target_c].os; + } + else { + x-=21; x_offset+=21; + } + net.computers[target_c].os = OS.OFF; + y_offset = -15; + x += 20; + x_offset -=20; + break; + case 7 : sy = y_offset; sx = -2; break; + case 8 : sy = -15; sx = -2; break; + case 9 : sy = -7; sx = -7; x -= 8; x_offset +=8; break; + case 10 : sy = 0; sx = -7; x -= 15; x_offset +=15; break; + case 11 : sy = 0; sx = -7; + net.computers[target_c].os = OS.WINGDOWS; + net.off--; net.win++; + break; + case 12 : x += 11; x_offset -=11; + } +} + +/* Updates Bill fleeing with his ill gotten gain */ +void Monster::update_out() { + if (game.INTERSECT(x, y, bill.width, bill.height, 0, 0, game.scrwidth, + game.scrheight)) + { + move(FAST); + index++; + index%=bill.WCELS; + y_offset+=(8*(index%2)-4); + } + else { + state = OFF; + bill.on_screen--; bill.off_screen++; + } +} + + +/* Updates Bill who is dying */ +void Monster::update_dying() { + if (index < bill.DCELS-1){ + y_offset += (index*GRAVITY); + index++; + } + else { + y+=y_offset; + if (cargo<0 || cargo == OS.WINGDOWS) state = OFF; + else state = STRAY; + bill.on_screen--; + } +} + +void Monster::update() { + switch (state) { + case IN: update_in(); break; + case AT: update_at(); break; + case OUT: update_out(); break; + case DYING: update_dying(); break; + default: break; + } +} + +int Monster::clicked(int locx, int locy) { + return (locx>x && locx<x+bill.width && locy>y && locy<y+bill.height); +} + +int Monster::clickedstray(int locx, int locy) { + return (locx>x && locx<x+OS.width && locy>y && locy<y+OS.height); +} + +int Monster::step_size(unsigned int lev) { + return game.MIN(14+lev, 18); +} + +void Monster::draw_std() { + if (cargo>=0) + ui.draw(OS.os[cargo], x + x_offset, y + y_offset); + ui.draw(cels[index], x, y); +} + +void Monster::draw_at() { + if (index>6 && index<12) + ui.draw(OS.os[0], x + sx, y + sy); + if (cargo>=0) + ui.draw(OS.os[cargo], x + x_offset, y + y_offset); + ui.draw(cels[index], net.computers[target_c].x, + net.computers[target_c].y); +} + +void Monster::draw_stray() { + if (game.grabbed==-1 || x != bill.list[game.grabbed].x) + ui.draw(OS.os[cargo], x, y); +} diff --git a/noncore/games/kbill/Monster.h b/noncore/games/kbill/Monster.h new file mode 100644 index 0000000..84a8961 --- a/dev/null +++ b/noncore/games/kbill/Monster.h @@ -0,0 +1,53 @@ +#ifndef BILL_H +#define BILL_H + +#include "Picture.h" + +class Monster { /*structure for Bills*/ +public: + int state; /*what is it doing?*/ + int index; /*index to animation frame*/ + Picture *cels; /*pointer to array of animation frames*/ + int x, y; /*location*/ + int target_x; /*target x position*/ + int target_y; /*target y position*/ + int target_c; /*target computer*/ + int cargo; /*which OS carried*/ + int x_offset; /*accounts for width differences*/ + int y_offset; /*'bounce' factor for OS carried*/ + int sx, sy; /*used for drawing extra OS during switch*/ + + static const int SLOW = 0; /* speeds of moving bills */ + static const int FAST = 1; + + static const int OFF = 0; /* Bill's states */ + static const int IN = 1; + static const int AT = 2; + static const int OUT = 3; + static const int DYING = 4; + static const int STRAY = 5; + + static const int GRAVITY = 3; /*speed at which os drops*/ + + static const int XOFFSET = 20; /*offset from right of computer*/ + static const int YOFFSET = 3; /*offset from top of computer*/ + + void get_border(); + void enter(); + int move(int mode); + void draw(); + void draw_std(); + void draw_at(); + void draw_stray(); + void update(); + void update_in(); + void update_at(); + void update_out(); + void update_dying(); + int clicked(int locx, int locy); + int clickedstray(int locx, int locy); + int step_size(unsigned int lev); + +}; + +#endif diff --git a/noncore/games/kbill/Network.cc b/noncore/games/kbill/Network.cc new file mode 100644 index 0000000..d163b16 --- a/dev/null +++ b/noncore/games/kbill/Network.cc @@ -0,0 +1,49 @@ +#include "objects.h" + +/*sets up network for each level*/ +void Network::setup() { + int i; + units = on (game.level); + for (i=0; i<units; i++) + if (!net.computers[i].setup(i)) { + units = i-1; + break; + } + base = units; + off = win = 0; + ncables = game.MIN(game.level, units/2); + for (i=0; i<ncables; i++) cables[i].setup(); +} + +/*redraws the computers at their location with the proper image*/ +void Network::draw () { + int i; + for (i=0; i<ncables; i++) cables[i].draw(); + for (i=0; i<units; i++) computers[i].draw(); +} + +void Network::update () { + for (int i=0; i<ncables; i++) cables[i].update(); +} + +void Network::toasters () { + for (int i=0; i<units; i++) { + computers[i].type = computers[i].TOASTER; + computers[i].os = OS.OFF; + } + ncables=0; +} + +int Network::on(int lev) { + return game.MIN(8+lev, MAX_COMPUTERS); +} + +void Network::load_pix () { + int i; + char *name[] = {"toaster", "maccpu", "nextcpu", "sgicpu", "suncpu", + "os2cpu", "bsdcpu"}; + for (i=0; i <= NUM_SYS; i++) + pictures[i].load(name[i]); + width = pictures[0].width; + height = pictures[0].height; +} diff --git a/noncore/games/kbill/Network.h b/noncore/games/kbill/Network.h new file mode 100644 index 0000000..03ff148 --- a/dev/null +++ b/noncore/games/kbill/Network.h @@ -0,0 +1,27 @@ +#ifndef NETWORK_H +#define NETWORK_H + +#include "Computer.h" +#include "Cable.h" + +class Network { /*structure for global network of computers*/ +public: + static const int MAX_COMPUTERS = 20; /* max computers on screen */ + static const int NUM_SYS = 6; /* number of computer types */ + Picture pictures[NUM_SYS+1]; /* array of cpu pictures */ + int width, height; /* size of cpu picture */ + int units; /* number of cpus in network */ + int win, base, off; /* number in each state */ + Computer computers[MAX_COMPUTERS]; /* array of cpu info */ + Cable cables[MAX_COMPUTERS]; + int ncables; + void setup(); + void load_pix(); + void draw(); + void update(); + void toasters(); + int on(int lev); + +}; + +#endif diff --git a/noncore/games/kbill/Picture.cc b/noncore/games/kbill/Picture.cc new file mode 100644 index 0000000..79e19ba --- a/dev/null +++ b/noncore/games/kbill/Picture.cc @@ -0,0 +1,72 @@ +/*************************************************************************** + Picture.cc - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "Picture.h" +#include "objects.h" + +#include <iostream.h> + +#include <qstring.h> +#include <qpe/resource.h> +#ifdef KDEVER +#include <kapp.h> +#include <kstandarddirs.h> +#include <kdebug.h> +#endif +void Picture::load(const char *name, int index) { + //QString dir = KApplication::kde_datadir(), file; +// QString dir = locate("data",""),file; +// dir += "/kbill/"; +// if (index>=0) +// file.sprintf ("%spixmaps/%s_%d.xpm", (const char *)dir, name, index); +// else +// file.sprintf("%spixmaps/%s.xpm", (const char *)dir, name); +#ifdef KDEVER + KStandardDirs dirs; + QString file; + + if (index>=0) { + //kdDebug() << "Here"; + QString sindex; + sindex.setNum(index); + // kdDebug() << "kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm"; + file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + "_" + sindex + ".xpm"); + } else { + file = dirs.findResource("data","kbill/pixmaps/" + QString::fromLocal8Bit(name) + ".xpm"); + } + kdDebug() << file << endl; + pix = new QPixmap(); + if (pix->load(file) == FALSE) + cerr << "cannot open " << file << endl; + width = pix->width(); + height = pix->height(); +#endif +QString sindex; +pix = new QPixmap(); +sindex.setNum(index); +if (index>=0) +pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name) +"_"+ sindex)); +else +pix->load(Resource::findPixmap("kbill/pixmaps/" + QString::fromLocal8Bit(name))); + + width = pix->width(); + height = pix->height(); + +} + +QPixmap* Picture::getPixmap() { + return pix; +} diff --git a/noncore/games/kbill/Picture.h b/noncore/games/kbill/Picture.h new file mode 100644 index 0000000..c423251 --- a/dev/null +++ b/noncore/games/kbill/Picture.h @@ -0,0 +1,32 @@ +/*************************************************************************** + Picture.h - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef PICTURE_H +#define PICTURE_H + +#include <qpixmap.h> + +class Picture { +public: int width, height; + void load(const char *name, int index=-1); + QPixmap* getPixmap(); +private: + QPixmap *pix; + + friend class UI; +}; + +#endif diff --git a/noncore/games/kbill/Scorelist.cc b/noncore/games/kbill/Scorelist.cc new file mode 100644 index 0000000..8825373 --- a/dev/null +++ b/noncore/games/kbill/Scorelist.cc @@ -0,0 +1,75 @@ +#include <qstring.h> +#ifdef KDEVER +#include <kapplication.h> +#include <kstandarddirs.h> +#endif +#include "objects.h" + +FILE *Scorelist::open_file(char *mode) { +// QString file; +// file.sprintf("%s/kbill/scores", (const char *)locate("data","")); +// //kdDebug() << locate("data","") << endl; +// return fopen (file, mode); +} + +void Scorelist::read() { +// FILE *scorefile = open_file("r"); +// int i; +// if (scorefile) { +// for (i=0; i<10; i++) { +// fgets (name[i], 21, scorefile); +// fscanf (scorefile, "%d%d\n", &(level[i]), &(score[i])); +// } +// fclose(scorefile); +// } +// else +// for (i=0; i<10; i++) { +// strcpy(name[i], "me"); +// level[i] = score[i] = 0; +// } +} + +void Scorelist::write() { +// int i, j; +// FILE *scorefile = open_file("w"); +// if (!scorefile) return; +// for (i=0; i<10; i++) { +// fputs(name[i], scorefile); +// for (j=strlen(name[i]); j<25; j++) +// fputc(' ', scorefile); +// fprintf (scorefile, " %d %d\n", level[i], score[i]); +// } +// fclose(scorefile); +} + +/* Add new high score to list */ +void Scorelist::recalc (char *str) { +// int i; +// if (score[9] >= game.score) return; +// for (i=9; i>0; i--) { +// if (score[i-1] < game.score) { +// strcpy (name[i], name[i-1]); +// level[i] = level[i-1]; +// score[i] = score[i-1]; +// } +// else break; +// } +// strcpy (name[i], str); +// level[i] = game.level; +// score[i] = game.score; +} + +void Scorelist::update() { +// char str[500], temp[40]; +// int i, j; +// strcpy (str,"High Scores:\n\n"); +// strcat (str, "Name Level Score\n"); +// for (i=0; i<10; i++) { +// strcat (str, name[i]); +// for (j=strlen(name[i]); j<21; j++) strcat (str, " "); +// sprintf (temp, "%5d %7d\n", level[i], score[i]); +// strcat (str, temp); +// } +// ui.update_hsbox(str); +} + diff --git a/noncore/games/kbill/Scorelist.h b/noncore/games/kbill/Scorelist.h new file mode 100644 index 0000000..0c8b0dd --- a/dev/null +++ b/noncore/games/kbill/Scorelist.h @@ -0,0 +1,16 @@ +#ifndef SCORELIST_H +#define SCORELIST_H + +class Scorelist { +public: + char name[10][21]; + unsigned level[10]; + unsigned score[10]; + FILE *open_file(char *mode); + void read(); + void write(); + void recalc(char *str); + void update(); +}; + +#endif diff --git a/noncore/games/kbill/Spark.cc b/noncore/games/kbill/Spark.cc new file mode 100644 index 0000000..74c42fa --- a/dev/null +++ b/noncore/games/kbill/Spark.cc @@ -0,0 +1,13 @@ +#include "objects.h" + +int Spark::delay(unsigned int lev) { + return game.MAX (20-lev, 0); +} + +void Spark::load_pix() { + int i; + for (i=0; i<2; i++) + pictures[i].load("spark", i); + width = pictures[0].width; + height = pictures[0].height; +} diff --git a/noncore/games/kbill/Spark.h b/noncore/games/kbill/Spark.h new file mode 100644 index 0000000..4fbe6c8 --- a/dev/null +++ b/noncore/games/kbill/Spark.h @@ -0,0 +1,16 @@ +#ifndef SPARK_H +#define SPARK_H + +#include "Picture.h" + +class Spark { +public: + Picture pictures[2]; + int width, height; + void draw(); + void load_pix(); + static const int speed = 5; + int delay(unsigned int lev); +}; + +#endif diff --git a/noncore/games/kbill/Strings.h b/noncore/games/kbill/Strings.h new file mode 100644 index 0000000..45509d1 --- a/dev/null +++ b/noncore/games/kbill/Strings.h @@ -0,0 +1,58 @@ +#ifndef STRINGS_H +#define STRINGS_H + +#define storystr \ +" The Story:\n\ +\n\ +Yet again, the fate of the world rests\n\ +in your hands! An evil computer hacker,\n\ +known only by his handle 'Bill', has\n\ +created the ultimate computer virus. A\n\ +virus so powerful that it has the power\n\ +to transmute an ordinary computer into\n\ +a toaster oven. (oooh!) 'Bill' has\n\ +cloned himself into a billion-jillion\n\ +micro-Bills. Their sole purpose is to\n\ +deliver the nefarious virus, which has\n\ +been cleverly diguised as a popular\n\ +operating system.\n\ +\n\ +As System Administrator/Exterminator,\n\ +your job is to keep Bill from succeeding\n\ +at his task." + +#define rulesstr \ +" The Rules:\n\ +\n\ +kBill has been painstakingly designed and\n\ +researched in order to make it as easy to use\n\ +for the whole family as it is for little Sally.\n\ +Years - nay - days of beta testing and \n\ +consulting with the cheapest of human interface\n\ +designers have resulted in a game that is easy\n\ +to use, yet nothing at all like a Macintosh.\n\ +\n\ +I. Whack the Bills (click)\n\ +II. Restart the computer (click)\n\ +III. Pick up stolen OSes & return(drag)\n\ + them to their respective computers\n\ +IV. Drag the bucket to extinguish sparks\n\ +V. Scoring is based on total uptime,\n\ + with bonuses for killing Bills.\n\ +\n\ +As for the rest, you can probably figure\n\ +it out. We did, so it can't be too hard." + +#define endgamestr \ +"Module kBill has caused a\n\ +segmentation fault at memory\n\ +address 097E:F1A0. Core dumped.\n\ +We apologize for the inconvenience." + +#define warpstr "Warp to level?" +#define quitstr "Quit Game?" +#define newgamestr "New Game?" +#define pausestr "Game paused.\n Press OK to continue." +#define enternamestr "You earned a high score.\nEnter your name:" + +#endif diff --git a/noncore/games/kbill/UI.cpp b/noncore/games/kbill/UI.cpp new file mode 100644 index 0000000..fac731a --- a/dev/null +++ b/noncore/games/kbill/UI.cpp @@ -0,0 +1,175 @@ +/*************************************************************************** + UI.cc - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "kbill.h" +#include "objects.h" +#include "Strings.h" +#ifdef KDEVER +#include <kapplication.h> +#endif +#include <qpixmap.h> +#include <qmessagebox.h> +#include <qnamespace.h> + +#include "inputbox.h" + +/**************************/ +/* Timer control routines */ +/**************************/ + +UI::~UI() { + paint.end(); + delete pix; +} + +void UI::restart_timer() { + field->startTimer(); +} + +void UI::kill_timer() { + field->stopTimer(); +} + +/*******************/ +/* Window routines */ +/*******************/ + +void UI::initialize(int *argc, char **argv) { + #ifdef KDEVER + app = new KApplication(*argc, argv, "kbill"); + #endif + app = new QPEApplication(*argc, argv); +} + +void UI::graph_init() { + pix = new QPixmap(Game::scrwidth, Game::scrheight); + paint.begin(pix, field); + paint.setPen(QPen(Qt::black, 3)); +} + +void UI::make_mainwin() { + main = new KBill(); + app->showMainWidget(main,true); + main->showMaximized(); + field = main->getField(); +} + +void UI::popup_dialog (int dialog) { + kill_timer(); + switch (dialog) { + case Game::ENDGAME: + QMessageBox::message(("Endgame"), (endgamestr)); + break; + case Game::HIGHSCORE: + // QMessageBox::message(("HighScore"), highscorestr); + break; + case Game::ENTERNAME: { + InputBox b(main, 0, ("Enter Name"), (enternamestr)); + bool state = b.exec() == 2; + char str[20], *nl; + strcpy(str, b.getText()); + if (!str[0] || state) + strcpy(str, "Anonymous"); + else if ((nl = strchr(str, '\n'))) + *nl = '\0'; + if (strlen(str) > 20) + str[20] = 0; /* truncate string if too long */ +// scores.recalc(str); + } + break; + case Game::SCORE: + QMessageBox::message(("Score"), scorestr); + break; + } + restart_timer(); +} + +/*********************/ +/* Graphics routines */ +/*********************/ + +void UI::set_cursor(int cursor) { + QCursor *cur; + switch (cursor) { + case Game::BUCKETC: + cur = bucket.cursor.cursor; + break; + case Game::DOWNC: + cur = downcursor.cursor; + break; + case Game::DEFAULTC: + cur = defaultcursor.cursor; + break; + default: + cur = OS.cursor[cursor].cursor; + } + field->setCursor(*cur); +} + +void UI::load_cursors() { + defaultcursor.load("hand_up", MCursor::SEP_MASK); + field->setCursor(*defaultcursor.cursor); + downcursor.load("hand_down", MCursor::SEP_MASK); +} + +void UI::clear() { + paint.eraseRect(0, 0, field->width(), field->height()); +} + +void UI::refresh() { + paint.flush(); + field->setPixmap(pix); + field->repaint(FALSE); +} + +void UI::draw (Picture pict, int x, int y) { + paint.drawPixmap(x, y, *pict.pix); +} + +void UI::draw_centered (Picture pict) { + draw(pict, (field->width() - pict.width) / 2, (field->height() - pict.height) / 2); +} + +void UI::draw_line(int x1, int y1, int x2, int y2) { + paint.drawLine(x1, y1, x2, y2); + +} + +void UI::draw_str(char *str, int x, int y) { + paint.drawText(x, y, str); +} + + +/******************/ +/* Other routines */ +/******************/ + +void UI::set_pausebutton (int action) { + main->file->setItemEnabled(main->pauseid, action); +} + + +int UI::MainLoop() { + return app->exec(); +} + +void UI::update_hsbox(char *str) { + highscorestr = str; +} + +void UI::update_scorebox(int level, int score) { + scorestr.sprintf ("%s %d:\n%s: %d", ("After Level"), level, ("Your score"), score); +} diff --git a/noncore/games/kbill/UI.h b/noncore/games/kbill/UI.h new file mode 100644 index 0000000..8eaf6fd --- a/dev/null +++ b/noncore/games/kbill/UI.h @@ -0,0 +1,73 @@ +/*************************************************************************** + UI.h - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef UI_H +#define UI_H + +#include <qpe/qpeapplication.h> +#include <qobject.h> +#include <qpixmap.h> +#include <qpainter.h> +#include <qstring.h> + +#include "Picture.h" +#include "MCursor.h" + +#include "field.h" +#include "kbill.h" + +class UI { +public: + ~UI(); + void restart_timer(); + void kill_timer(); + + void initialize(int *argc, char **argv); + void make_mainwin(); + void make_windows() {}; + void popup_dialog (int dialog); + + void set_cursor (int cursor); + void load_cursors(); + void graph_init(); + void clear(); + void refresh(); + void draw (Picture picture, int x, int y); + void draw_centered (Picture picture); + void draw_line (int x1, int y1, int x2, int y2); + void draw_str (char *str, int x, int y); + + void set_pausebutton (int action); + int MainLoop(); + + void update_scorebox(int level, int score); + void update_hsbox(char *str); +private: + MCursor defaultcursor, downcursor; + + QPEApplication *app; + QTimer* timer; + + Field* field; + KBill* main; + + QPixmap *pix; + QPainter paint; + + QString scorestr, highscorestr; +}; + +#endif diff --git a/noncore/games/kbill/field.cpp b/noncore/games/kbill/field.cpp new file mode 100644 index 0000000..a1b3560 --- a/dev/null +++ b/noncore/games/kbill/field.cpp @@ -0,0 +1,84 @@ +/*************************************************************************** + field.cpp - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <qpainter.h> + +#include "objects.h" + +#include "field.h" + +Field::Field(QWidget *parent, const char *name ) : QWidget(parent,name) { + setFixedSize(game.scrwidth, game.scrheight); + setBackgroundColor(white); + timer = new QTimer(this); + + playing = false; + + connect(timer, SIGNAL(timeout()), SLOT(Timer())); +} + +Field::~Field(){ + delete timer; +} + +void Field::setPixmap(QPixmap *pix) { + this->pix = pix; +} + +// -------------------------------------------------------- + +void Field::mousePressEvent(QMouseEvent *e){ + game.button_press(e->x(), e->y()); +} + +void Field::mouseReleaseEvent(QMouseEvent *e){ + game.button_release(e->x(), e->y()); +} + +void Field::enterEvent(QEvent *) { + if (playing && !timer->isActive()) { + playing = true; + timer->start(250, FALSE); + } +} + +void Field::leaveEvent(QEvent *) { + if (timer->isActive() && playing) { + playing = true; + timer->stop(); + } +} + +void Field::stopTimer() { + playing = false; + if (timer->isActive()) + timer->stop(); +} + +void Field::startTimer() { + playing = true; + if (!timer->isActive()) + timer->start(250, FALSE); +} + +void Field::Timer(){ + game.update(); +} + +void Field::paintEvent(QPaintEvent *) { + bitBlt(this, 0, 0, pix); +}
\ No newline at end of file diff --git a/noncore/games/kbill/field.h b/noncore/games/kbill/field.h new file mode 100644 index 0000000..9f355ed --- a/dev/null +++ b/noncore/games/kbill/field.h @@ -0,0 +1,48 @@ +/*************************************************************************** + field.h - description + ------------------- + begin : Thu Dec 30 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef FIELD_H +#define FIELD_H + +#include <qwidget.h> +#include <qpixmap.h> +#include <qpainter.h> +#include <qtimer.h> + +class Field : public QWidget { + Q_OBJECT +public: + Field(QWidget *parent=0, const char *name=0); + ~Field(); + void stopTimer(); + void startTimer(); + void setPixmap(QPixmap *pix); +protected: + void mouseReleaseEvent(QMouseEvent *e); + void mousePressEvent(QMouseEvent *e); + void enterEvent(QEvent *); + void leaveEvent(QEvent *); + void paintEvent(QPaintEvent *); +public slots: + void Timer(); +private: + QTimer* timer; + QPixmap *pix; + bool playing; +}; + +#endif diff --git a/noncore/games/kbill/inputbox.cpp b/noncore/games/kbill/inputbox.cpp new file mode 100644 index 0000000..b191ea8 --- a/dev/null +++ b/noncore/games/kbill/inputbox.cpp @@ -0,0 +1,51 @@ +/*************************************************************************** + inputbox.cpp - description + ------------------- + begin : Sat Jan 1 2000 + copyright : (C) 2000 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "inputbox.h" +#include <qdialog.h> +InputBox::InputBox(QWidget *parent, const char *name, const char *caption, const char *text) : QDialog(parent, name, TRUE) { +// setCaption(caption); +// +// question = new QLabel(this); +// question->setText(text); +// question->setGeometry(10, 10, 240, 50); +// +// input = new QLineEdit(this); +// input->setGeometry(10, 60, 240, 30); +// input->setFocus(); +// input->setMaxLength(19); +// +// ok = new QPushButton( "Ok", this ); +// ok->setGeometry(10, 100, 100,30 ); +// ok->setDefault(TRUE); +// connect( ok, SIGNAL(clicked()), SLOT(accept()) ); +// +// cancel = new QPushButton( "Cancel", this ); +// cancel->setGeometry(150, 100, 100,30 ); +// connect( cancel, SIGNAL(clicked()), SLOT(reject()) ); +} + +InputBox::~InputBox(){ + delete ok; + delete cancel; + delete question; + delete input; +} + +QString InputBox::getText() const{ + return input->text(); +} diff --git a/noncore/games/kbill/inputbox.h b/noncore/games/kbill/inputbox.h new file mode 100644 index 0000000..0a64048 --- a/dev/null +++ b/noncore/games/kbill/inputbox.h @@ -0,0 +1,39 @@ +/*************************************************************************** + inputbox.h - description + ------------------- + begin : Sat Jan 1 2000 + copyright : (C) 2000 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef INPUTBOX_H +#define INPUTBOX_H + +#include <qdialog.h> +#include <qpushbutton.h> +#include <qlabel.h> + +#include <qstring.h> +#include <qlineedit.h> +class InputBox : public QDialog { + Q_OBJECT +public: + InputBox(QWidget *parent=0, const char *name=0, const char *caption = 0, const char *text=0); + ~InputBox(); + QString getText() const; +private: + QPushButton *ok, *cancel; + QLabel *question; + QLineEdit *input; +}; + +#endif diff --git a/noncore/games/kbill/kbill.cpp b/noncore/games/kbill/kbill.cpp new file mode 100644 index 0000000..568df95 --- a/dev/null +++ b/noncore/games/kbill/kbill.cpp @@ -0,0 +1,118 @@ +/*************************************************************************** + kbill.cpp - description + ------------------- + begin : Thu Dec 30 16:55:55 CET 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <qmessagebox.h> +#include <qmenubar.h> +#include "kbill.h" +#include "inputbox.h" + +#include "objects.h" +#include "Strings.h" + +KBill::KBill() : QMainWindow() { + setCaption("kBill"); + file = new QPopupMenu(); + file->insertItem(("New game"), this, SLOT(NewGame())); + pauseid = file->insertItem(("Pause game"), this, SLOT(Pause())); + //these are dissabled until I fix them + //file->insertItem(("Warp to level..."), this, SLOT(WarpTo())); + //file->insertItem(("View high scores"), this, SLOT(ViewHighScores())); + file->insertItem(("Quit game"), this, SLOT(Quit())); + + help = new QPopupMenu(); + help->insertItem(("Story of kBill"), this, SLOT(Story())); + help->insertItem(("Rules"), this, SLOT(Rules())); + + + menu = new QMenuBar(this); + menu->insertItem(("&File"), file); + menu->insertSeparator(); + menu->insertItem(("&Help"), help); + + field = new Field(this); + //setView(field); + //setMainWidget(field); + //setMenu(menu); +} + +KBill::~KBill() { +} + +Field* KBill::getField() { + return field; +} + +// ----------------------------------------------------------------------- + +void KBill::Quit() { + field->stopTimer(); + qApp->quit(); + +} + +void KBill::About(){ +// field->stopTimer(); +// AboutBox about(this); +// about.exec(); +// field->startTimer(); +} + +void KBill::NewGame() { + field->stopTimer(); +// if (KMsgBox::yesNo(this, i18n("New Game"), i18n(newgamestr), KMsgBox::QUESTION) == 1) + game.start(1); +// else + field->startTimer(); +} + +void KBill::Pause() { + field->stopTimer(); + QMessageBox::message(("Pause Game"), (pausestr), 0); + field->startTimer(); +} + +void KBill::WarpTo() { +/* field->stopTimer(); + InputBox b(this, 0, "Warp To Level", warpstr); + bool status = b.exec() == 1; + field->startTimer(); + if (status) { + bool ok; + int level = b.getText().toUInt(&ok); + if (ok) { + field->startTimer(); + game.warp_to_level(level); + return; + } + }*/ +} + +void KBill::ViewHighScores() { + //ui.popup_dialog(Game::HIGHSCORE); +} + +void KBill::Story() { + field->stopTimer(); + QMessageBox::message( ("Story"), (storystr), 0); + field->startTimer(); +} + +void KBill::Rules() { + field->stopTimer(); + QMessageBox::message(("Rules"), (rulesstr), 0); + field->startTimer(); +} diff --git a/noncore/games/kbill/kbill.h b/noncore/games/kbill/kbill.h new file mode 100644 index 0000000..fbc0c6c --- a/dev/null +++ b/noncore/games/kbill/kbill.h @@ -0,0 +1,54 @@ +/*************************************************************************** + kbill.h - description + ------------------- + begin : Thu Dec 30 16:55:55 CET 1999 + copyright : (C) 1999 by Jurrien Loonstra + email : j.h.loonstra@st.hanze.nl + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef KBILL_H +#define KBILL_H + + + +#include <qmainwindow.h> +#include <qwidget.h> +#include <qpopupmenu.h> + +#include "field.h" + +class KBill : public QMainWindow +{ + Q_OBJECT + public: + KBill(); + ~KBill(); + Field* getField(); + private: + QMenuBar *menu; + QPopupMenu *file, *help; + Field *field; + int pauseid; + protected slots: + void Quit(); + void About(); + void NewGame(); + void Pause(); + void WarpTo(); + void Story(); + void Rules(); + void ViewHighScores(); + + friend class UI; +}; + +#endif diff --git a/noncore/games/kbill/kbill.pro b/noncore/games/kbill/kbill.pro new file mode 100644 index 0000000..2091dd0 --- a/dev/null +++ b/noncore/games/kbill/kbill.pro @@ -0,0 +1,13 @@ +TEMPLATE = app +CONFIG = qt warn_on release +DESTDIR = $(OPIEDIR)/bin +HEADERS = kbill.h field.h Bucket.h Cable.h Computer.h Game.h Horde.h \ +Library.h MCursor.h Monster.h Network.h Picture.h Spark.h Strings.h \ +UI.h objects.h inputbox.h +SOURCES = field.cpp Bucket.cc Cable.cc Computer.cc Game.cc Horde.cc \ +Library.cc MCursor.cc Monster.cc Network.cc Picture.cc \ +Spark.cc UI.cpp inputbox.cpp kbill.cpp +TARGET = kbill +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include +LIBS += -lqpe diff --git a/noncore/games/kbill/kbill.xpm b/noncore/games/kbill/kbill.xpm new file mode 100644 index 0000000..1a17dd8 --- a/dev/null +++ b/noncore/games/kbill/kbill.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char* icon_xpm[] = { +"50 50 16 1", +"_ c #ffffff", +"` c #ffff94", +"a c #f7ffff", +"b c #f7f7de", +"c c #debd5a", +"d c #deb552", +"e c #adcee7", +"f c #8ca573", +"g c #6bb5ef", +"h c #634263", +"i c #523152", +"j c #42b5ef", +"k c #313963", +"l c #0073b5", +"m c #004a8c", +"n c #000000", +"__________________________________________________", +"__________________________gegg____________________", +"____________gjlllllggellllllllllljg_______________", +"_____jlllllllllllgaeaaaaagggjjjljllll_____________", +"____ljjljjgaejjjgaeaaaaaealjgjjgljjjlll___________", +"___lljjjjgaejjjgaea_beeeehgljjjljjjjjgeel_________", +"___lljjljaejjjgaeaabbb`bcdiigejjjjjjjeaaall_______", +"__glejllagljjgaeaabbb`bcdddiilkjjjjjjaaaaella_____", +"__glgjgagllllaea__bb`bcddddddlcijijjgaa_agjl______", +"__lljgagllljagaa_bb`bcdddddddlfdidijeaaeeljl______", +"__ljgaellllaeaa_eb`bcddddddddlfiddij_eaagjjjl_____", +"__lgaejjljagaa_`b`bcdddddddddlfddddf_aaajjjjjl____", +"__lggjjjgagaaaeb`bcddddddddddlfddddbeaaejjjjjl____", +"__llljjgaeaaaeb`bcdddddddddddlfdddd_faajjjjjjl____", +"__ljllgaaaaage`bcdddddddnnnndlfddd`__aajjjjjjl____", +"__ljjlaaaaageebcnnnndddn____nlfdddb`bagjjjjjjl____", +"__ljgaeaaaeagecn____ndn_____nlfddc_`aejjjjjjjl____", +"__lgaeeaaeaeelkn____ndn______kknn`e_ejjjjjjjjl____", +"__laeaaaeaeallln_____nn______kgbiafbgljjjjjjjl____", +"__leeaagaeajjkin_____nn______kg_hagajmljjjjjjl____", +"__eeaaeeeajjjiin_____n_n_____kmiee_eijmljjjjjl____", +"__eaaeaeejjjji_nn___n_bn____ngli_h__iljmljjjjl____", +"__gaeeealjjjjib_bnnn_b_bnnnn_klf___iimjjmljjjl____", +"__jgeeajlljjjiiii``ibib_b_b_ielab_bimmmjjmljjl____", +"__jegaljjljjjjji```i_bib_b_i`ela___immmmjjmljl____", +"__leellljlljjjjji```i_b_b_i``eleeeiimmmmmjjmjj____", +"__galllljjlljjjjk````i_b_ii`_elb_fijmmmmmmljeg____", +"__llllllljlljjjjlk``i`iii``_bagb_ijjjmmmmmmlaj____", +"__llllllljjljjjjlli`i`i``h_b__g_ejjjjjjmmmmggl____", +"__llllllljjlljjjjli`i`i`h_b__bebgljjjjjjmmmamg____", +"__ljlllllljjljjjjji``ii`bb__b_aammljjjjjjmlele____", +"__lljlllllljlljjjji``ihbb__b__gfmmmljjjjjjelgg____", +"__ljjlllllljjljjjji```bf__b__bjkmmmmljjjjgameg____", +"__ljjjlllllljlljjji``_f__b__bbmkmmmmmljjjeeeaa____", +"__lljjllllllljlljji`_b__b___b`mimmmmmmljjaeaag____", +"__lljjjlllllljlljjgbeaaee__fiimmlmmmmmmmeeeaam____", +"__lljjjjlllllljljgaea_b___b```mkjmmmmmmmagaaam____", +"__lljjjjlllllljljbeaab__a`````mkijmmmmmmelaaemj___", +"__lljjjjjlllllljbeaab__bhiii`imkijjlmmmelggejle___", +"__gljjjjjlllllgaeaaebbb`ijjiiikiijjjlmmamaejgl____", +"__eljjjjjjllllaaaa__bfiilliiiikmjjllmmggmeejlj____", +"__aeejgjjjllleeaa__bfiiillkkmmlmmlllllajeeejme____", +"__ajljjjllllegaaaaagliilllmlllljlmljjgejaelmljjjj_", +"___ajmlllllaeaaaaaejjjjjlmlllllljlmllelmgljjljjjje", +"_jlljlmmmmeeaaaaeellllllmmljjlllllllmglljjjjjljjge", +"jjjjjjllllmllmmmmmmmmmmllllmmmmmmlllljjjjjjjjljge_", +"__gljljjjjjjjjjjjjllllljjllllllljjljjjjjjjjjjljg__", +"___jlljjjjjjjjjjjjjjjjjjjlljjjjjjjljjjjjjjjg______", +"___________gjjjggjggjjjjjjlljjjjjjj_______________", +"_________________________ggljjg___________________"}; diff --git a/noncore/games/kbill/mini-kbill.xpm b/noncore/games/kbill/mini-kbill.xpm new file mode 100644 index 0000000..8554383 --- a/dev/null +++ b/noncore/games/kbill/mini-kbill.xpm @@ -0,0 +1,248 @@ +/* XPM */ +static char*xbill[]={ +"16 16 229 2", +".G c #648b97", +"bB c #83cbf2", +"## c #eaebcd", +"be c #4ea5d7", +".h c #89c1e4", +"aV c #5c5c6b", +"#c c #63b5e1", +"#y c #fcfcfc", +"bx c #bde5f9", +"bH c #c0e5f9", +"b# c #0965a4", +"#m c #5f7987", +"ai c #327ab2", +"aP c #0376b7", +"bG c #addcf4", +"#Y c #c9bf89", +"bE c #49b5ed", +".J c #f0fafc", +"#p c #4ab5ed", +"#K c #a69c99", +"bh c #2897d4", +"a8 c #79a5bb", +"#O c #f0f3ec", +"a6 c #b9daee", +"bw c #add6ed", +"aS c #eaf1e6", +"#H c #39ace8", +".p c #e9f4f5", +"bm c #066bac", +"#2 c #afbcc4", +".E c #e6cb76", +"aQ c #3d99cf", +"#. c #e0ba58", +"#N c #709bb3", +"#D c #40b3ed", +"#8 c #087bbc", +"aA c #1588c8", +".9 c #709178", +".K c #50a4d5", +"aB c #5eb1e1", +".A c #399cd3", +"#3 c #2e71a8", +".k c #5ab0de", +".Y c #3eaee9", +".w c #e8f3f8", +"by c #a4d9f7", +".Q c #e8f5f3", +"bz c #83cdf4", +"aK c #a4c6de", +"bA c #88cdf4", +"a4 c #2c9cd9", +"aj c #81b7dd", +"#L c #cbc7bf", +".0 c #a5cee6", +"#n c #b0a171", +"az c #178ac9", +".# c #fcfefe", +"bv c #9ed0f2", +"aZ c #87bfe5", +"#g c #c2def0", +".g c #8dc2e3", +".q c #d7e8ed", +".i c #edf6fc", +"aC c #e3eee9", +"#9 c #0578b9", +".3 c #d9eefa", +".z c #65b2df", +"a5 c #298cc4", +"#F c #aed2ed", +".S c #e6cb77", +"al c #0073b5", +"aa c #3483b9", +"a9 c #2d6497", +"ah c #349eda", +"bc c #6db1dc", +"bF c #7dcaf1", +"#d c #a8d0e7", +"ae c #e2eff2", +"a7 c #f4fcfe", +"bt c #41b3ee", +"aw c #bdddf3", +"#u c #465270", +"#e c #a5d5f1", +".5 c #beab69", +"aI c #2971a9", +"av c #87c0e3", +"#S c #62b4e0", +"#J c #ada779", +"an c #2194d2", +".n c #3ca5df", +"au c #0b65a6", +"bn c #107aba", +"aT c #b2afae", +".o c #a2d0ed", +"#B c #8cadca", +".2 c #b6e0f7", +"#h c #547d90", +"aW c #3f73a4", +"b. c #105a95", +"#b c #42b5ef", +"aR c #d1e9f1", +"aG c #185a95", +".y c #3d9fd8", +"a1 c #fdfeff", +"ax c #a3cde4", +"#o c #c6e0db", +"aN c #30a3df", +"bg c #81c7ee", +"af c #5da0ca", +"aY c #3f7fb3", +"#E c #c5e6f9", +"aX c #0f6faf", +".X c #cce9f7", +"aO c #38abe7", +"#G c #57addc", +"aD c #ecf3f4", +".x c #cce5f6", +"#t c #70c6f1", +".R c #f2f4ca", +"a. c #2699d7", +"bd c #64acd9", +".O c #3ea0d6", +"#x c #a6a6a4", +".7 c #bb9b4f", +"#q c #cce3f0", +"#v c #cacaca", +".s c #47b2ec", +"#j c #a59b82", +".L c #f0f7fb", +".c c #afd7ed", +"bu c #2da0dc", +"#5 c #1471b0", +"ag c #3bade8", +"as c #aac6cf", +"#a c #94d4f5", +"bC c #7fccf3", +".e c #d1e7f7", +"aH c #004a8c", +".v c #aed2e9", +"ap c #e6e19b", +"#r c #d8eaf5", +".u c #359fd9", +".l c #2b9bd8", +".H c #5097c0", +"ac c #b4a585", +".U c #79977c", +"ba c #0f74b4", +"#7 c #a4cde5", +"#0 c #c8be9a", +"aU c #667383", +"bk c #73b1d8", +".V c #c19a52", +".a c #f5f9fc", +".b c #edf5fb", +"aM c #b9d9ee", +"ao c #4594c8", +".4 c #d6e5d5", +"bD c #2691d0", +"#Q c #1d7bb9", +".D c #f8f7c9", +".M c #a6cfe6", +"#w c #b4b4b4", +".d c #a7cfe6", +"aF c #7a8d85", +".W c #b0c5c7", +"bI c #f5fbfd", +"a2 c #f6fbfd", +".1 c #2b98d5", +".I c #66bded", +".N c #83c5ef", +"#i c #cac9c8", +"am c #1386c5", +"#l c #fafafa", +"#U c #3791c5", +"br c #1b86c5", +"#C c #1d86c5", +"bp c #066cad", +"ar c #fcfcf5", +"bi c #1379b9", +"aq c #d8daca", +".Z c #92cae8", +"#W c #1b8ecd", +"#A c #abaabd", +".P c #84c2e6", +".8 c #9f8a5a", +"ab c #bdb07b", +".j c #fbfdfe", +".6 c #cca64b", +"ay c #2fa2de", +"#z c #6184a8", +".T c #deb552", +"#k c #a9a6a0", +".r c #5f9ccb", +"#R c #1f88c6", +"a3 c #55adde", +"#X c #8aa592", +"#1 c #a5cddb", +"#4 c #014c8e", +"ak c #2a9dda", +".t c #2d9dda", +"bb c #1a83c2", +".f c #afd3e8", +"ad c #efece6", +"#Z c #c3b8b6", +"aL c #feffff", +"Qt c #ffffff", +".B c #a2d4f1", +"aJ c #c0dff1", +"#6 c #97d0f0", +"bo c #0871b2", +"#P c #566489", +"bs c #35a4df", +"#s c #bcdbf0", +"#V c #1386c6", +".F c #b79154", +".m c #72b7e1", +"at c #114c83", +"#f c #e3f2f9", +"bq c #0e79ba", +"#M c #9b9794", +"bf c #b1dff7", +"#T c #b3d6ec", +"a# c #39ace7", +"#I c #6a85a6", +".C c #f1f8f5", +"bl c #4c95c7", +"a0 c #62aedc", +"bj c #4b9dcf", +"aE c #f0f2cc", +"Qt.#.a.b.c.d.e.f.g.h.c.iQtQtQtQt", +".j.k.l.m.n.o.p.q.r.s.t.u.v.wQtQt", +".x.y.z.A.B.C.D.E.F.G.H.I.J.K.LQt", +".M.N.O.P.Q.R.S.T.T.U.V.W.X.Y.ZQt", +".0.1.2.3.4.5.6.7.8.9#.###a#b#cQt", +"#d#e#f#g#h#i#j#k#l#m#n#o#p#b#cQt", +"#q#r#s#t#u#v#w#x#y#z#A#B#C#D#cQt", +"#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#SQt", +"#T#U#V#W#b#X#Y#Z#0#1#2#3#4#5#6Qt", +"#7#8#9a.a#aaabacadaeafagahaiajQt", +".0akalamanaoapaqarasatauagavawQt", +"axayazalaAaBaCaDaEaFaGaHaIaJaKaL", +"aMaNaOaPaQaRaSaTaUaVaWaXaYaZa0a1", +"a2a3a4a5a6a7a8a9b.b#babbbcbdbebf", +"bgbhbibjbkblbmbnbobpbqbrbsbtbubv", +".jbwbxbybzbAbBbCbDbEbFbGbxbHbIa1"}; diff --git a/noncore/games/kbill/objects.h b/noncore/games/kbill/objects.h new file mode 100644 index 0000000..2184ce7 --- a/dev/null +++ b/noncore/games/kbill/objects.h @@ -0,0 +1,26 @@ +#ifndef OBJECTS_H +#define OBJECTS_H + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <time.h> + +#include "Horde.h" +#include "Network.h" +#include "Library.h" +#include "Bucket.h" +#include "Spark.h" +#include "Game.h" +#include "UI.h" + +extern Horde bill; +extern Network net; +extern Library OS; +extern Bucket bucket; +extern Spark spark; +extern Game game; +extern UI ui; + +#endif |