31d6cce939aa259857257069b52f585a5a3f8744
[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
37 TODO
38 ====
39
40 * GameObject::RemoveListenerListEntry: Ughs, somebody trying to
41   implement a list class within in the GameObject?!
42
43 * replace random generator with mersene twister and/or move to external/
44
45 * check the code with Valgrind
46
47 * static vs anonymous namespace
48
49 * use Vector in Physics for 'a' and 'v'
50
51 * add --datadir DIR (data/) and --userdir DIR (~/.supertux/)
52
53 * make gravity a constant
54
55 * funky side effect of too much global variables: when having a
56   savegame with large or firetux and then starting that game, Tux in
57   the menu background will grow and be visible that way for a fraction
58   of a second
59
60 * write scripts for include sorting and include guard checking that
61   can be run automatically
62
63 * md5.hpp and random_generator.hpp could go to external/
64
65 * rename Vector -> Vector2f
66
67 * get rid of global SDL_Screen* screen variable
68
69 * identify all global variables and make them ugly (g_ or globals::)
70
71 * get rid of SCREEN_WIDTH/SCREEN_HEIGHT
72
73 * is version.h actually needed?
74
75 * resolution menu entry moves the wrong way around
76
77 * write scripts to automatically check for:
78
79   - all includes are relative to top level dir
80
81   - include guards are proper
82
83 * move SVN to http://code.google.com (maybe one day)
84
85 * move bugtracker to http://code.google.com (much simpler, less useless)
86
87 * convert worldmap from const lisp::Lisp* lisp to "const Reader&"
88
89 * having dictionary_manager in Lisp is extremely ugly
90
91 * enforce proper naming of files to match their class
92
93 * get rid of DEBUG and conditional compilation, these should be
94   reserved for a few tiny cases, not spread all over the code
95
96 * split particlesystem_interactive
97
98 * centralize menus
99
100 * Renderer::apply_config() needs to handle fullscreen switching
101
102 # EOF #