wok-current rev 2114

Add: SuperTux 0.1.3
author Mallory MOLLO <mallory@skyrock.com>
date Fri Jan 30 00:46:35 2009 +0100 (2009-01-30)
parents ff607e8ddd3e
children a6b13b5d9e03
files supertux/receipt supertux/stuff/menu.h
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/supertux/receipt	Fri Jan 30 00:46:35 2009 +0100
     1.3 @@ -0,0 +1,32 @@
     1.4 +# SliTaz package receipt.
     1.5 +
     1.6 +PACKAGE="supertux"
     1.7 +VERSION="0.1.3"
     1.8 +CATEGORY="games"
     1.9 +SHORT_DESC="SuperTux is a classic 2D jump'n run sidescroller game in a style similar to the original SuperMario games."
    1.10 +MAINTAINER="mallory@skyrock.com"
    1.11 +DEPENDS="libSDL libsdl-image libsdl-mixer"
    1.12 +BUILD_DEPENDS="libSDL-dev libsdl-image-dev libsdl-mixer-dev"
    1.13 +TARBALL="$PACKAGE-$VERSION.tar.bz2"
    1.14 +WEB_SITE="http://supertux.lethargik.org/"
    1.15 +WGET_URL="http://download.berlios.de/supertux/$TARBALL"
    1.16 +
    1.17 +# Rules to configure and make the package.
    1.18 +compile_rules()
    1.19 +{
    1.20 +	cd $src
    1.21 +	cp ../stuff/menu.h src
    1.22 +	./configure --prefix=/usr --infodir=/usr/share/info \
    1.23 +	--mandir=/usr/share/man $CONFIGURE_ARGS && \
    1.24 +	make && make DESTDIR=$PWD/_pkg install
    1.25 +}
    1.26 +
    1.27 +# Rules to gen a SliTaz package suitable for Tazpkg.
    1.28 +genpkg_rules()
    1.29 +{
    1.30 +	mkdir -p $fs/usr
    1.31 +	cp -a $_pkg/usr/bin $fs/usr
    1.32 +	echo Copying data...
    1.33 +	cp -a $_pkg/usr/share $fs/usr
    1.34 +}
    1.35 +
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/supertux/stuff/menu.h	Fri Jan 30 00:46:35 2009 +0100
     2.3 @@ -0,0 +1,247 @@
     2.4 +//  $Id: menu.h 1053 2004-05-09 18:08:02Z tobgle $
     2.5 +// 
     2.6 +//  SuperTux
     2.7 +//  Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
     2.8 +//
     2.9 +//  This program is free software; you can redistribute it and/or
    2.10 +//  modify it under the terms of the GNU General Public License
    2.11 +//  as published by the Free Software Foundation; either version 2
    2.12 +//  of the License, or (at your option) any later version.
    2.13 +//
    2.14 +//  This program is distributed in the hope that it will be useful,
    2.15 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
    2.16 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2.17 +//  GNU General Public License for more details.
    2.18 +// 
    2.19 +//  You should have received a copy of the GNU General Public License
    2.20 +//  along with this program; if not, write to the Free Software
    2.21 +//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    2.22 +
    2.23 +#ifndef SUPERTUX_MENU_H
    2.24 +#define SUPERTUX_MENU_H
    2.25 +
    2.26 +#include <SDL.h>
    2.27 +#include <vector>
    2.28 +#include "texture.h"
    2.29 +#include "timer.h"
    2.30 +#include "type.h"
    2.31 +#include "mousecursor.h"
    2.32 +
    2.33 +/* IDs for menus */
    2.34 +
    2.35 +enum MainMenuIDs {
    2.36 +  MNID_STARTGAME,
    2.37 +  MNID_CONTRIB,
    2.38 +  MNID_OPTIONMENU,
    2.39 +  MNID_LEVELEDITOR,
    2.40 +  MNID_CREDITS,
    2.41 +  MNID_QUITMAINMENU
    2.42 +  };
    2.43 +
    2.44 +enum OptionsMenuIDs {
    2.45 +  MNID_OPENGL,
    2.46 +  MNID_FULLSCREEN,
    2.47 +  MNID_SOUND,
    2.48 +  MNID_MUSIC,
    2.49 +  MNID_SHOWFPS
    2.50 +  };
    2.51 +
    2.52 +enum GameMenuIDs {
    2.53 +  MNID_CONTINUE,
    2.54 +  MNID_ABORTLEVEL
    2.55 +  };
    2.56 +
    2.57 +enum WorldMapMenuIDs {
    2.58 +  MNID_RETURNWORLDMAP,
    2.59 +  MNID_QUITWORLDMAP
    2.60 +  };
    2.61 +
    2.62 +enum LevelEditorMainMenuIDs {
    2.63 +  MNID_RETURNLEVELEDITOR,
    2.64 +  MNID_SUBSETSETTINGS,
    2.65 +  MNID_QUITLEVELEDITOR
    2.66 +  };
    2.67 +  
    2.68 +enum LevelEditorSubsetSettingsIDs {
    2.69 +  MNID_SUBSETTITLE,
    2.70 +  MNID_SUBSETDESCRIPTION,
    2.71 +  MNID_SUBSETSAVECHANGES
    2.72 +  };
    2.73 +  
    2.74 +enum LevelEditorSubsetNewIDs {
    2.75 + MNID_SUBSETNAME,
    2.76 + MNID_CREATESUBSET
    2.77 +};
    2.78 +
    2.79 +enum LevelEditorSettingsMenuIDs {
    2.80 +  MNID_NAME,
    2.81 +  MNID_AUTHOR,
    2.82 +  MNID_SONG,
    2.83 +  MNID_BGIMG,
    2.84 +  MNID_PARTICLE,
    2.85 +  MNID_LENGTH,
    2.86 +  MNID_TIME,
    2.87 +  MNID_GRAVITY,
    2.88 +  MNID_BGSPEED,
    2.89 +  MNID_TopRed,
    2.90 +  MNID_TopGreen,
    2.91 +  MNID_TopBlue,
    2.92 +  MNID_BottomRed,
    2.93 +  MNID_BottomGreen,
    2.94 +  MNID_BottomBlue,
    2.95 +  MNID_APPLY
    2.96 +  };
    2.97 +
    2.98 +bool confirm_dialog(std::string text);
    2.99 +
   2.100 +/* Kinds of menu items */
   2.101 +enum MenuItemKind {
   2.102 +  MN_ACTION,
   2.103 +  MN_GOTO,
   2.104 +  MN_TOGGLE,
   2.105 +  MN_BACK,
   2.106 +  MN_DEACTIVE,
   2.107 +  MN_TEXTFIELD,
   2.108 +  MN_NUMFIELD,
   2.109 +  MN_CONTROLFIELD,
   2.110 +  MN_STRINGSELECT,
   2.111 +  MN_LABEL,
   2.112 +  MN_HL, /* horizontal line */
   2.113 +};
   2.114 +
   2.115 +class Menu;
   2.116 +
   2.117 +class MenuItem
   2.118 +{
   2.119 +public:
   2.120 +  MenuItemKind kind;
   2.121 +  int toggled;
   2.122 +  char *text;
   2.123 +  char *input;
   2.124 +  int *int_p;   // used for setting keys (can be used for more stuff...)
   2.125 +  int id;   // item id
   2.126 +  string_list_type* list;
   2.127 +  Menu* target_menu;
   2.128 +
   2.129 +  void change_text (const char *text);
   2.130 +  void change_input(const char *text);
   2.131 +
   2.132 +  static MenuItem* create(MenuItemKind kind, const char *text, int init_toggle, Menu* target_menu, int id, int* int_p);
   2.133 +
   2.134 +  std::string get_input_with_symbol(bool active_item);   // returns the text with an input symbol
   2.135 +private:
   2.136 +  bool input_flickering;
   2.137 +  Timer input_flickering_timer;
   2.138 +};
   2.139 +
   2.140 +class Menu
   2.141 +{
   2.142 +private:  
   2.143 +  static std::vector<Menu*> last_menus;
   2.144 +  static Menu* current_;
   2.145 +
   2.146 +  static void push_current(Menu* pmenu);
   2.147 +  static void pop_current();
   2.148 +
   2.149 +public:
   2.150 +  /** Set the current menu, if pmenu is NULL, hide the current menu */
   2.151 +  static void set_current(Menu* pmenu);
   2.152 +
   2.153 +  /** Return the current active menu or NULL if none is active */
   2.154 +  static Menu* current() { return current_; }
   2.155 +
   2.156 +private:
   2.157 +  /* Action done on the menu */
   2.158 +  enum MenuAction {
   2.159 +    MENU_ACTION_NONE = -1,
   2.160 +    MENU_ACTION_UP,
   2.161 +    MENU_ACTION_DOWN,
   2.162 +    MENU_ACTION_LEFT,
   2.163 +    MENU_ACTION_RIGHT,
   2.164 +    MENU_ACTION_HIT,
   2.165 +    MENU_ACTION_INPUT,
   2.166 +    MENU_ACTION_REMOVE
   2.167 +  };
   2.168 +
   2.169 +  /** Number of the item that got 'hit' (ie. pressed) in the last
   2.170 +      event()/action() call, -1 if none */
   2.171 +  int hit_item;
   2.172 +
   2.173 +  // position of the menu (ie. center of the menu, not top/left)
   2.174 +  int pos_x;
   2.175 +  int pos_y;
   2.176 +
   2.177 +  /** input event for the menu (up, down, left, right, etc.) */
   2.178 +  MenuAction menuaction;
   2.179 +
   2.180 +  /* input implementation variables */
   2.181 +  int delete_character;
   2.182 +  char mn_input_char;
   2.183 +  
   2.184 +public:
   2.185 +  Timer effect;
   2.186 +  int arrange_left;
   2.187 +  int active_item;
   2.188 +
   2.189 +  std::vector<MenuItem> item;
   2.190 +
   2.191 +  Menu();
   2.192 +  ~Menu();
   2.193 +
   2.194 +  void additem(MenuItem* pmenu_item);
   2.195 +  void additem(MenuItemKind kind, const std::string& text, int init_toggle, Menu* target_menu, int id = -1, int *int_p = NULL);
   2.196 +  
   2.197 +  void  action ();
   2.198 +  
   2.199 +  /** Remove all entries from the menu */
   2.200 +  void clear();
   2.201 +
   2.202 +  /** Return the index of the menu item that was 'hit' (ie. the user
   2.203 +      clicked on it) in the last event() call */
   2.204 +  int  check  ();
   2.205 +
   2.206 +  MenuItem& get_item(int index) { return item[index]; }
   2.207 +  MenuItem& get_item_by_id(int id);
   2.208 +
   2.209 +  int get_active_item_id();
   2.210 +
   2.211 +  bool isToggled(int id);
   2.212 +
   2.213 +  void get_controlfield_key_into_input(MenuItem *item);
   2.214 +
   2.215 +  void draw   ();
   2.216 +  void draw_item(int index, int menu_width, int menu_height);
   2.217 +  void set_pos(int x, int y, float rw = 0, float rh = 0);
   2.218 +
   2.219 +  /** translate a SDL_Event into a menu_action */
   2.220 +  void event(SDL_Event& event);
   2.221 +
   2.222 +  int get_width() const;
   2.223 +  int get_height() const;
   2.224 +
   2.225 +  bool is_toggled(int id) const;
   2.226 +};
   2.227 +
   2.228 +extern Surface* checkbox;
   2.229 +extern Surface* checkbox_checked;
   2.230 +extern Surface* back;
   2.231 +extern Surface* arrow_left;
   2.232 +extern Surface* arrow_right;
   2.233 +
   2.234 +extern Menu* contrib_menu;
   2.235 +extern Menu* contrib_subset_menu;
   2.236 +extern Menu* main_menu;
   2.237 +extern Menu* game_menu;
   2.238 +extern Menu* worldmap_menu;
   2.239 +extern Menu* options_menu;
   2.240 +extern Menu* options_keys_menu;
   2.241 +extern Menu* options_joystick_menu;
   2.242 +extern Menu* highscore_menu;
   2.243 +extern Menu* load_game_menu;
   2.244 +extern Menu* save_game_menu;
   2.245 +
   2.246 +#endif /*SUPERTUX_MENU_H*/
   2.247 +
   2.248 +/* Local Variables: */
   2.249 +/* mode: c++ */
   2.250 +/* End: */