leveleditor menu IDisation and little improvements
[supertux.git] / src / type.h
1 //  $Id$
2 // 
3 //  SuperTux
4 //  Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
5 //
6 //  This program is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU General Public License
8 //  as published by the Free Software Foundation; either version 2
9 //  of the License, or (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU General Public License for more details.
15 // 
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 //  02111-1307, USA.
20
21 #ifndef SUPERTUX_TYPE_H
22 #define SUPERTUX_TYPE_H
23
24 #include <string>
25 #include "SDL.h"
26
27 /* 'Base' type for game objects */
28
29 struct base_type
30 {
31   float x;
32   float y;
33   float xm;
34   float ym;
35   float width;
36   float height;
37 };
38
39
40 /* Base class for all dynamic game object. */
41 class GameObject
42 {
43
44 friend bool operator<(const GameObject& lhs, const GameObject& rhs)
45 {
46  if( lhs.base.x < rhs.base.x )
47  return true;
48  else if( lhs.base.x == rhs.base.x && lhs.base.y < rhs.base.y)
49  return true;
50  else
51  return false;
52 }
53
54 friend bool operator>(const GameObject& lhs, const GameObject& rhs)
55 {
56  if( lhs.base.x > rhs.base.x )
57  return true;
58  else if( lhs.base.x == rhs.base.x && lhs.base.y > rhs.base.y)
59  return true;
60  else
61  return false;
62 }
63
64 public:
65 GameObject() {};
66 virtual ~GameObject() {};
67 virtual void action(double frame_ratio) = 0;
68 virtual void draw() = 0;
69 virtual std::string type() = 0;
70
71 base_type base;
72 base_type old_base;
73 };
74
75 struct string_list_type
76 {
77   int num_items;
78   int active_item;
79   char **item;
80 };
81
82 void  string_list_init(string_list_type* pstring_list);
83 char* string_list_active(string_list_type* pstring_list);
84 void  string_list_copy(string_list_type* pstring_list, string_list_type pstring_list_orig);
85 int   string_list_find(string_list_type* pstring_list, const char* str);
86 void  string_list_sort(string_list_type* pstring_list);
87 void  string_list_add_item(string_list_type* pstring_list, const char* str);
88 void  string_list_free(string_list_type* pstring_list);
89
90 #endif /*SUPERTUX_TYPE_H*/
91