From bfeb067c8acfb5f1797fdc886ac71ca1b10ccf57 Mon Sep 17 00:00:00 2001 From: mark Date: Sun, 14 Apr 2002 17:08:03 +0000 Subject: Import of kbill --- (limited to 'noncore/games/kbill/UI.cpp') 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 +#endif +#include +#include +#include + +#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); +} -- cgit v0.9.0.2