# HG changeset patch # User Mallory MOLLO # Date 1233272795 -3600 # Node ID d826857f3574efd32608499beb0a8f0c3f61aaca # Parent ff607e8ddd3eea1a004cc364f5302d1834eef01e Add: SuperTux 0.1.3 diff -r ff607e8ddd3e -r d826857f3574 supertux/receipt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supertux/receipt Fri Jan 30 00:46:35 2009 +0100 @@ -0,0 +1,32 @@ +# SliTaz package receipt. + +PACKAGE="supertux" +VERSION="0.1.3" +CATEGORY="games" +SHORT_DESC="SuperTux is a classic 2D jump'n run sidescroller game in a style similar to the original SuperMario games." +MAINTAINER="mallory@skyrock.com" +DEPENDS="libSDL libsdl-image libsdl-mixer" +BUILD_DEPENDS="libSDL-dev libsdl-image-dev libsdl-mixer-dev" +TARBALL="$PACKAGE-$VERSION.tar.bz2" +WEB_SITE="http://supertux.lethargik.org/" +WGET_URL="http://download.berlios.de/supertux/$TARBALL" + +# Rules to configure and make the package. +compile_rules() +{ + cd $src + cp ../stuff/menu.h src + ./configure --prefix=/usr --infodir=/usr/share/info \ + --mandir=/usr/share/man $CONFIGURE_ARGS && \ + make && make DESTDIR=$PWD/_pkg install +} + +# Rules to gen a SliTaz package suitable for Tazpkg. +genpkg_rules() +{ + mkdir -p $fs/usr + cp -a $_pkg/usr/bin $fs/usr + echo Copying data... + cp -a $_pkg/usr/share $fs/usr +} + diff -r ff607e8ddd3e -r d826857f3574 supertux/stuff/menu.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supertux/stuff/menu.h Fri Jan 30 00:46:35 2009 +0100 @@ -0,0 +1,247 @@ +// $Id: menu.h 1053 2004-05-09 18:08:02Z tobgle $ +// +// SuperTux +// Copyright (C) 2004 Tobias Glaesser +// +// 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. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef SUPERTUX_MENU_H +#define SUPERTUX_MENU_H + +#include +#include +#include "texture.h" +#include "timer.h" +#include "type.h" +#include "mousecursor.h" + +/* IDs for menus */ + +enum MainMenuIDs { + MNID_STARTGAME, + MNID_CONTRIB, + MNID_OPTIONMENU, + MNID_LEVELEDITOR, + MNID_CREDITS, + MNID_QUITMAINMENU + }; + +enum OptionsMenuIDs { + MNID_OPENGL, + MNID_FULLSCREEN, + MNID_SOUND, + MNID_MUSIC, + MNID_SHOWFPS + }; + +enum GameMenuIDs { + MNID_CONTINUE, + MNID_ABORTLEVEL + }; + +enum WorldMapMenuIDs { + MNID_RETURNWORLDMAP, + MNID_QUITWORLDMAP + }; + +enum LevelEditorMainMenuIDs { + MNID_RETURNLEVELEDITOR, + MNID_SUBSETSETTINGS, + MNID_QUITLEVELEDITOR + }; + +enum LevelEditorSubsetSettingsIDs { + MNID_SUBSETTITLE, + MNID_SUBSETDESCRIPTION, + MNID_SUBSETSAVECHANGES + }; + +enum LevelEditorSubsetNewIDs { + MNID_SUBSETNAME, + MNID_CREATESUBSET +}; + +enum LevelEditorSettingsMenuIDs { + MNID_NAME, + MNID_AUTHOR, + MNID_SONG, + MNID_BGIMG, + MNID_PARTICLE, + MNID_LENGTH, + MNID_TIME, + MNID_GRAVITY, + MNID_BGSPEED, + MNID_TopRed, + MNID_TopGreen, + MNID_TopBlue, + MNID_BottomRed, + MNID_BottomGreen, + MNID_BottomBlue, + MNID_APPLY + }; + +bool confirm_dialog(std::string text); + +/* Kinds of menu items */ +enum MenuItemKind { + MN_ACTION, + MN_GOTO, + MN_TOGGLE, + MN_BACK, + MN_DEACTIVE, + MN_TEXTFIELD, + MN_NUMFIELD, + MN_CONTROLFIELD, + MN_STRINGSELECT, + MN_LABEL, + MN_HL, /* horizontal line */ +}; + +class Menu; + +class MenuItem +{ +public: + MenuItemKind kind; + int toggled; + char *text; + char *input; + int *int_p; // used for setting keys (can be used for more stuff...) + int id; // item id + string_list_type* list; + Menu* target_menu; + + void change_text (const char *text); + void change_input(const char *text); + + static MenuItem* create(MenuItemKind kind, const char *text, int init_toggle, Menu* target_menu, int id, int* int_p); + + std::string get_input_with_symbol(bool active_item); // returns the text with an input symbol +private: + bool input_flickering; + Timer input_flickering_timer; +}; + +class Menu +{ +private: + static std::vector last_menus; + static Menu* current_; + + static void push_current(Menu* pmenu); + static void pop_current(); + +public: + /** Set the current menu, if pmenu is NULL, hide the current menu */ + static void set_current(Menu* pmenu); + + /** Return the current active menu or NULL if none is active */ + static Menu* current() { return current_; } + +private: + /* Action done on the menu */ + enum MenuAction { + MENU_ACTION_NONE = -1, + MENU_ACTION_UP, + MENU_ACTION_DOWN, + MENU_ACTION_LEFT, + MENU_ACTION_RIGHT, + MENU_ACTION_HIT, + MENU_ACTION_INPUT, + MENU_ACTION_REMOVE + }; + + /** Number of the item that got 'hit' (ie. pressed) in the last + event()/action() call, -1 if none */ + int hit_item; + + // position of the menu (ie. center of the menu, not top/left) + int pos_x; + int pos_y; + + /** input event for the menu (up, down, left, right, etc.) */ + MenuAction menuaction; + + /* input implementation variables */ + int delete_character; + char mn_input_char; + +public: + Timer effect; + int arrange_left; + int active_item; + + std::vector item; + + Menu(); + ~Menu(); + + void additem(MenuItem* pmenu_item); + void additem(MenuItemKind kind, const std::string& text, int init_toggle, Menu* target_menu, int id = -1, int *int_p = NULL); + + void action (); + + /** Remove all entries from the menu */ + void clear(); + + /** Return the index of the menu item that was 'hit' (ie. the user + clicked on it) in the last event() call */ + int check (); + + MenuItem& get_item(int index) { return item[index]; } + MenuItem& get_item_by_id(int id); + + int get_active_item_id(); + + bool isToggled(int id); + + void get_controlfield_key_into_input(MenuItem *item); + + void draw (); + void draw_item(int index, int menu_width, int menu_height); + void set_pos(int x, int y, float rw = 0, float rh = 0); + + /** translate a SDL_Event into a menu_action */ + void event(SDL_Event& event); + + int get_width() const; + int get_height() const; + + bool is_toggled(int id) const; +}; + +extern Surface* checkbox; +extern Surface* checkbox_checked; +extern Surface* back; +extern Surface* arrow_left; +extern Surface* arrow_right; + +extern Menu* contrib_menu; +extern Menu* contrib_subset_menu; +extern Menu* main_menu; +extern Menu* game_menu; +extern Menu* worldmap_menu; +extern Menu* options_menu; +extern Menu* options_keys_menu; +extern Menu* options_joystick_menu; +extern Menu* highscore_menu; +extern Menu* load_game_menu; +extern Menu* save_game_menu; + +#endif /*SUPERTUX_MENU_H*/ + +/* Local Variables: */ +/* mode: c++ */ +/* End: */