source: abuse/trunk/src/imlib/pmenu.hpp @ 129

Last change on this file since 129 was 129, checked in by Sam Hocevar, 15 years ago
  • Get rid of jmalloc and replace it with standard malloc. Modern operating systems certainly perform a lot better than this custom implementation, and we have superior tools (eg. valgrind) to debug and profile memory usage without interfering with the code itself.
File size: 2.0 KB
Line 
1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 1995 Crack dot Com
4 *
5 *  This software was released into the Public Domain. As with most public
6 *  domain software, no warranty is made or implied by Crack dot Com or
7 *  Jonathan Clark.
8 */
9
10#ifndef __PMENU_HPP_
11#define __PMENU_HPP_
12
13#include "input.hpp"
14
15class psub_menu;
16
17class pmenu_item
18{
19  int hotkey;
20public :
21  char *n;
22  char const *on_off;
23  psub_menu *sub;
24
25  int id,xp;
26  pmenu_item *next;
27  pmenu_item(int ID, char const *name, char const *on_off_flag, int Hotkey, pmenu_item *Next);
28  pmenu_item(char const *Name, psub_menu *Sub, pmenu_item *Next, int xpos=-1);
29  char *name() { return n; }
30  pmenu_item *find_id(int search_id);
31  pmenu_item *find_key(int key);
32  void draw       (Jwindow *parent, int x, int y, int w, int top, int active);
33  void draw_self  (Jwindow *parent, int x, int y, int w, int top, int active);
34  int handle_event(Jwindow *parent, int x, int y, int w, int top, event &ev);
35  int own_event(event &ev);
36  ~pmenu_item();
37} ;
38
39
40class psub_menu
41{
42  pmenu_item *first;
43  psub_menu *next;
44  int active;
45  Jwindow *win;
46  pmenu_item *item_num(int x) { pmenu_item *p=first; while (x-- && p) p=p->next; return p; }
47public :
48  void calc_size(int &w, int &h);
49  pmenu_item *find_id(int search_id);
50  pmenu_item *find_key(int key);
51  psub_menu(pmenu_item *First, psub_menu *Next)
52  { first=First; Next=Next; win=0; active=0; }
53  int handle_event(Jwindow *parent, int x, int y, event &ev);
54  void draw(Jwindow *parent, int x, int y);
55  void hide(Jwindow *parent, int x, int y);
56  int own_event(event &ev);
57  ~psub_menu();
58} ;
59
60class pmenu
61{
62  Jwindow *bar;
63  pmenu_item *top,*active;
64  int itemw(pmenu_item *p)
65  { return strlen(p->name())*wm->font()->width()+2; }
66  int itemx(pmenu_item *p);
67  pmenu_item *inarea(int mx, int my, image *screen);
68public :
69  ~pmenu();
70  pmenu(int X, int Y, pmenu_item *first, image *screen);
71  void move(int new_x, int new_y);
72  void draw(image *screen, int top_only=0);
73  int handle_event(event &ev, image *screen);
74
75} ;
76
77#endif
78
79
Note: See TracBrowser for help on using the repository browser.