Commit Graph

285 Commits

Author SHA1 Message Date
Guus Sliepen d7d6dc37bc Flatten Graphics object.
All functions and variables are now defined in graphics.cpp.
Before, the functions would be compiled again and again for every source
file, now it is compiled only once, halving the size of the stripped
starfighter binary.
2011-08-26 23:53:46 +02:00
Guus Sliepen 878e559b6a Flatten objects which only contain static functions.
There is no reason to have objects which contain only static functions
and no variables. These functions have been moved to the global
namespace and are now defined in .cpp files. The math functions are very
small and have been put in math.h and made static inline.
2011-08-26 23:27:16 +02:00
Guus Sliepen 931d110692 Fix "random" behaviour of sound, music and fullscreen options.
The state of these options was not only stored in the global config
file, but also in each saved game. When loading a game or clicking on
"continue game" from the title screen, the state of these options would
also be loaded from the save game file. If this changed the state of
sound and music, this would only take effect when starting a mission or
going back to the title screen. If it changed the state of the
fullscreen option, it would never toggle the state, but would
desynchronise the actual state of the window and the fullscreen option.

This is now fixed by moving these options from the currentGame variable
to the engine variable, where they are not in danger of being
overwritten.
2011-08-26 22:48:52 +02:00
Guus Sliepen 6ea4744832 Bring sanity to the header files.
Most .h files were not used to declare the externally visible variables
and functions of the .cpp files, but only to #include things and declare
things that were needed by that .cpp file itself. This resulted in a lot
of duplication.

Now the .h files only declare what is externally visible from the
corresponding .cpp files. Starfighter.h includes all the other .h files,
and all .cpp files only #include "Starfighter.h". Functions and
variables that were not used outside the .cpp file that contained them
were marked static. Variables defined in .h files were moved to the
appropriate .cpp files.
2011-08-26 21:29:04 +02:00
Guus Sliepen 8b34e90bcf More bools. 2011-08-26 16:55:46 +02:00
Guus Sliepen 277d34dabd Turn signed chars into bools where appropriate. 2011-08-26 16:14:58 +02:00
Guus Sliepen c710b8df7c Recalculate shop prices before giving money back on sold items.
This fixes a bug where one could get more than half the item price back. In
particularly, a level 2 Plasma Cooling Booster would sell for more than you
bought it for.

This fixes Debian bug #253380.
2011-08-26 15:35:03 +02:00
Guus Sliepen 3d1b5ab67b Import data/ directory.
This has already some typos fixed that were fixed in the Debian package of starfighter.
2011-08-26 14:50:08 +02:00
Guus Sliepen 9d43e3ca27 Add pack/unpack utilities.
These are made by Josh Triplett and were used in the Debian package of starfighter.
2011-08-26 14:46:44 +02:00
Guus Sliepen 48e8e12b07 Remove 1 second delays. 2011-08-26 14:41:34 +02:00
Guus Sliepen c42ee44271 Don't blit unnecessarily.
During the game, a lot of images were blitted outside the visible area. Also,
addBuffer() was called even when the destination surface was not the screen,
resulting in unnecessary blits in unBuffer().
2011-08-25 15:34:47 +02:00
Guus Sliepen 70d0b13ea2 Use textSurfaces instead of calling drawString() in doInfo().
This increases efficiency significantly. Before, callgrind estimated that 58%
of the CPU time was spent in doInfo(), taking roughly 1.6 kcycles on average
per call. After, only 0.13 kcycles on average per call are used (12x speedup),
and only 14% of the CPU time is spent in doInfo().
2011-08-25 14:00:27 +02:00
Guus Sliepen 9e4ae7e3bd Don't render a textSurface again if nothing has changed. 2011-08-25 13:48:02 +02:00
Guus Sliepen 39ca89d91c Initialise all members of the Graphics class.
Found by cppcheck.
2011-08-24 23:49:59 +02:00
Guus Sliepen 73c92917e2 Slightly increase intro text scrolling speed.
Scrolling 1/4 pixel per frame results in jerky motion, mostly because 4
times 16 2/3 milliseconds is not a round number. Scrolling 1/3 pixel per
frame results in much smoother scrolling.
2011-08-24 23:32:00 +02:00
Guus Sliepen 5be6a5ec7d Randomize explosion thinktime.
This gives engine trails and explosions a more natural look.
2011-08-24 23:08:48 +02:00
Guus Sliepen 9e32c230be Use float functions on float variables. 2011-08-24 22:43:54 +02:00
Guus Sliepen c14a9e7956 Remove a busy loop when showing an error message. 2011-08-24 22:32:30 +02:00
Guus Sliepen 1f7db8a9d8 Remove code that was commented out. 2011-08-24 22:31:11 +02:00
Guus Sliepen 93e6c1064c Remove unused parameters. 2011-08-24 22:22:26 +02:00
Guus Sliepen d87a0fcc31 Make sure SetVideoMode() calls are same as in init.cpp. 2011-08-24 21:40:30 +02:00
Guus Sliepen 212b03fa68 Use SDL_DOUBLEBUF in all SDL_SetVideoMode() calls, and don't force 16 bits.
By forcing 16 bits for full screen mode, performs drops dramatically on
displays where SDL has to do conversion.
2011-08-24 20:34:26 +02:00
Guus Sliepen f46bbcef69 Remove more busyloops. 2011-08-24 20:10:21 +02:00
Guus Sliepen bb9ba4da28 Remove unused FPS display code. 2011-08-24 20:04:15 +02:00
Guus Sliepen fc9dac5195 Strict 60 Hz update rate without busyloops. 2011-08-24 20:02:35 +02:00
Guus Sliepen 0f278a2748 Enable double buffering.
This seems to improve performance (probably because this prevents the
need to lock the screen surface), and might get rid of tearing.
2011-08-24 20:01:40 +02:00
Guus Sliepen 943a4c7bf3 Simplify printing time taken for missions.
This removes a lot of lines while at the same time preventing printing a string
onto itself, which is a bug. Problem was found by cppcheck.
2011-08-24 16:01:36 +02:00
Guus Sliepen b9fded8131 Use delete[] after new array[].
Found by cppcheck.
2011-08-24 14:46:34 +02:00
Guus Sliepen f2c91cbb19 Remove unnecessary dereferencing after pointer increments. 2011-08-24 14:44:40 +02:00
Guus Sliepen 0910cd3db6 Add const to all char * function parameters. 2011-08-24 14:42:59 +02:00
Guus Sliepen 87730b0687 No need to typedef structs in C++. 2011-08-24 14:32:45 +02:00
Guus Sliepen 91bdcd8f37 SDL header files should be #included in angled brackets. 2011-08-24 14:28:39 +02:00
Guus Sliepen 5bf8d0f269 Apply patch from Debian fixing a potential SIGFPE. 2011-08-24 14:23:29 +02:00
Guus Sliepen 62d503d002 Apply patch from Debian fixing several overflows. 2011-08-24 14:23:02 +02:00
Guus Sliepen 09b007411c Import of version 1.1 minus music, sound and graphics. 2011-08-24 14:14:44 +02:00