Tweak CMakeLists and physfs initialization a bit to eliminate redundant APPDATADIR...
[supertux.git] / TODO
1 Note: Controversial list of things currently broken and controversial
2 solutions for them.
3
4 Coding Standard
5 ===============
6
7 * use SCons instead of CMake
8
9 * make code clean: "-O2", "-g3",
10                      "-ansi",
11                      "-pedantic",
12                      "-Wall",
13                      "-Wextra",
14                      "-Wnon-virtual-dtor",
15                      "-Weffc++",
16                      "-Wconversion",
17                      "-Werror",
18                      "-Wshadow",
19                      "-Wcast-qual",
20                      "-Winit-self", # only works with >= -O1
21                      "-Wno-unused-parameter",
22
23 * do not use raw pointer, especially not for Sprite and Surface
24
25 * only do one variable initialization per line, not multiple as its
26   currently often done in initialization list
27
28 * remove overuse of multi-inheritance 
29
30 * remove overuse of friend'ship
31
32 * maybe mark interfaces as interfaces (ISerializable or SerializableInterface)
33
34 * split files with multiple classes into multiple files with one class each
35
36 * switch to using SqPlus for squirrel bindings
37
38 * implement basic graphics in SDL 1.3 and only special eye-candy in OpenGL
39
40
41 TODO
42 ====
43
44 * GameObject::RemoveListenerListEntry: Ughs, somebody trying to
45   implement a list class within in the GameObject?!
46
47 * replace random generator with mersene twister and/or move to external/
48
49 * check the code with Valgrind
50
51 * static vs anonymous namespace
52
53 * use Vector in Physics for 'a' and 'v'
54
55 * add --datadir DIR (data/) and --userdir DIR (~/.supertux/)
56
57 * make gravity a constant
58
59 * funky side effect of too much global variables: when having a
60   savegame with large or firetux and then starting that game, Tux in
61   the menu background will grow and be visible that way for a fraction
62   of a second
63
64 * write scripts for include sorting and include guard checking that
65   can be run automatically
66
67 * md5.hpp and random_generator.hpp could go to external/
68
69 * rename Vector -> Vector2f
70
71 * get rid of global SDL_Screen* screen variable
72
73 * identify all global variables and make them ugly (g_ or globals::)
74
75 * get rid of SCREEN_WIDTH/SCREEN_HEIGHT
76
77 * is version.h actually needed?
78
79 * resolution menu entry moves the wrong way around
80
81 * write scripts to automatically check for:
82
83   - all includes are relative to top level dir
84
85   - include guards are proper
86
87 * move SVN to http://code.google.com (maybe one day)
88
89 * move bugtracker to http://code.google.com (much simpler, less useless)
90
91 * having dictionary_manager in Lisp is extremely ugly
92
93 * enforce proper naming of files to match their class
94
95 * get rid of NDEBUG and conditional compilation, these should be
96   reserved for a few tiny cases, not spread all over the code
97
98 * split particlesystem_interactive
99
100 * Renderer::apply_config() needs to handle fullscreen switching
101
102 * collect all manager classe into globals.hpp
103
104 * more moving directories around?
105
106 addon/  
107 audio/  
108 control/
109 gui/    
110 lisp/   
111 math/
112 physfs/ 
113 sprite/ 
114 util/
115 video/
116 squirrel/
117   for generic squirrel code
118 supertux/
119   worldmap/
120   trigger/
121   scripting/
122     for scripting wrapper code
123   badguy/
124   object/
125
126 * implement PNG screenshot
127
128 * GL_ARB_texture_non_power_of_two returns 1 on MatroxG450, while it
129   returns "Missing" in glew info, something wrong
130
131 * having hitbox in Sprite is fugly
132
133 * write decal object
134
135 * implement surface and/or sprite scaling (MipMaps?)
136
137 # EOF #