Renamed namespaces to all lowercase
[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 * having dictionary_manager in Lisp is extremely ugly
88
89 * enforce proper naming of files to match their class
90
91 * get rid of DEBUG and conditional compilation, these should be
92   reserved for a few tiny cases, not spread all over the code
93
94 * split particlesystem_interactive
95
96 * Renderer::apply_config() needs to handle fullscreen switching
97
98 * collect all manager classe into globals.hpp
99
100 * more moving directories around?
101
102 addon/  
103 audio/  
104 control/
105 gui/    
106 lisp/   
107 math/
108 physfs/ 
109 sprite/ 
110 util/
111 video/
112 supertux/
113   worldmap/
114   trigger/
115   scripting/
116   badguy/
117   object/
118
119 * implement PNG screenshot
120
121 * GL_ARB_texture_non_power_of_two returns 1 on MatroxG450, while it
122   returns "Missing" in glew info, something wrong
123
124 SuperTux Editor
125 ===============
126
127 * +/- zoom buttons do not zoom to the center of the screen
128
129 * Object Tool should behave more like Inkscape:
130
131   - LMB on an object to select
132   - LMB on the background to start a select-rectangle
133   - LMB+move to drag objects it around
134   - Shift+LMB to add an object to the selection
135   - RMB for context menu
136
137 * Select Tool should be removed (identical to Object Tool)
138
139 * replace tool crashes:
140
141   Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
142 System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
143   at System.Collections.Generic.Dictionary`2[System.Object,System.Single].get_Item (System.Object key) [0x00000] 
144   at LayerListWidget.VisibilityDataFunc (Gtk.TreeViewColumn Column, Gtk.CellRenderer Renderer, TreeModel Model, TreeIter Iter) [0x00000] 
145   at GtkSharp.TreeCellDataFuncWrapper.NativeCallback (IntPtr tree_column, IntPtr cell, IntPtr tree_model, IntPtr iter, IntPtr data) [0x00000] 
146    at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
147    at GtkSharp.TreeCellDataFuncWrapper.NativeCallback(IntPtr tree_column, IntPtr cell, IntPtr tree_model, IntPtr iter, IntPtr data)
148    at Gtk.Application.gtk_main()
149    at Gtk.Application.Run()
150    at Application.Main(System.String[] args)
151
152 * Replace Tool should document its functions in a status bar message
153
154 * Path Tool doesn't seem to do anything
155
156 * Tiles Tool doesn't display the current tile
157
158 # EOF #