diff --git a/TODO.txt b/TODO.txt index f11b359..0f2dbb9 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,7 +1,6 @@ =========== GENERAL ============== - replay validation -- add time slow down setting - add argc/argv to gameInit? could be used to quickly start maps, verify replays etc. - maybe each map could have a target time embedded: when beaten, the map would @@ -26,6 +25,7 @@ =========== HANDLED ============== - allow stopping car rotation in air like in Trackmania +- add time slow down setting - the horizon on background seems too low? maybe add setting to shift it a bit? - replay format - prevent time overflow! stop incrementing level frame once it's at maximum diff --git a/game.h b/game.h index 2cc9661..e52ff80 100644 --- a/game.h +++ b/game.h @@ -286,8 +286,8 @@ void LCR_gameSetState(uint8_t state) LCR_GameUnit LCR_carSpeedKMH(void) { return // we use 28/8 as an approximation of 3.6 to convers MPS to KMH - (28 * LCR_SETTING_METERS_PER_BLOCK * LCR_racingGetCarSpeedUnsigned() * - LCR_RACING_FPS) / (8 * LCR_GAME_UNIT); + (28 * LCR_SETTING_CMS_PER_BLOCK * LCR_racingGetCarSpeedUnsigned() * + LCR_RACING_FPS) / (800 * LCR_GAME_UNIT); } void LCR_gameResetRun(uint8_t replay) diff --git a/general.h b/general.h index cf3987e..e1173e1 100644 --- a/general.h +++ b/general.h @@ -8,6 +8,8 @@ #include #include "settings.h" +// TODO: maybe move module specific constants to the modules themselves? + // constants (not supposed to be changed, doing so may break stuff): #define LCR_EFFECTIVE_RESOLUTION_X \ @@ -31,7 +33,8 @@ /** Physics FPS, i.e. the number of physics ticks per second. */ #define LCR_RACING_FPS 30 -#define LCR_RACING_TICK_MS (1000 / LCR_RACING_FPS) +#define LCR_RACING_TICK_MS \ + (100000 / (LCR_RACING_FPS * LCR_SETTING_TIME_MULTIPLIER)) #define LCR_ANIMATE_CAR (LCR_SETTING_CAR_ANIMATION_SUBDIVIDE != 0) diff --git a/renderer.h b/renderer.h index ada0c84..2a1f0d0 100644 --- a/renderer.h +++ b/renderer.h @@ -1313,7 +1313,7 @@ void LCR_rendererDrawSky(int sky, S3L_Unit offsetH, S3L_Unit offsetV) anchorPoint[1] = (LCR_EFFECTIVE_RESOLUTION_Y) / 2 - // 3: we place the center a bit more up - (LCR_SETTING_HORIZON_SHIFT * LCR_EFFECTIVE_RESOLUTION_Y) / 16 - + (LCR_SETTING_HORIZON_SHIFT * LCR_EFFECTIVE_RESOLUTION_Y) / 100 - (LCR_EFFECTIVE_RESOLUTION_Y * offsetV) / S3L_F - LCR_IMAGE_SIZE * LCR_SETTING_SKY_SIZE; diff --git a/settings.h b/settings.h index 35fabde..4634619 100644 --- a/settings.h +++ b/settings.h @@ -88,17 +88,6 @@ #define LCR_SETTING_LOD_COLOR 0x4229 #endif -#ifndef LCR_SETTING_FLOOR_PARTICLE_RESOLUTION - /** How many level floor particles there will be along one principal axis, 0 - turns floor particles off. */ - #define LCR_SETTING_FLOOR_PARTICLE_RESOLUTION 6 -#endif - -#ifndef LCR_SETTING_FLOOR_PARTICLE_SIZE - /** Defines floor particle size in fractions of screen size. */ - #define LCR_SETTING_FLOOR_PARTICLE_SIZE 32 -#endif - #ifndef LCR_SETTING_CAR_ANIMATION_SUBDIVIDE /** How many frames will be used to complete whole animation of the car model. 0 turns off car animation completely (may be faster and smaller), 1 turns on @@ -160,10 +149,10 @@ #define LCR_SETTING_LOG_LEVEL 1 #endif -#ifndef LCR_SETTING_METERS_PER_BLOCK - /** How many meters one game block is considered to measure (horizontally). - This is for calculating speed etc. */ - #define LCR_SETTING_METERS_PER_BLOCK 4 +#ifndef LCR_SETTING_CMS_PER_BLOCK + /** How many centimeters one game block is considered to measure + (horizontally). This is for calculating speed etc. */ + #define LCR_SETTING_CMS_PER_BLOCK 400 #endif #ifndef LCR_SETTING_DEBUG_PHYSICS_DRAW @@ -205,8 +194,13 @@ #endif #ifndef LCR_SETTING_HORIZON_SHIFT - /** Vertical offset of the background horizon, 1/16th of screen height. */ - #define LCR_SETTING_HORIZON_SHIFT 5 + /** Vertical offset of the background horizon in percents of screen height. */ + #define LCR_SETTING_HORIZON_SHIFT 30 +#endif + +#ifndef LCR_SETTING_TIME_MULTIPLIER + /** Multiplies speed of time by this percentage, doesn't affect physics. */ + #define LCR_SETTING_TIME_MULTIPLIER 100 #endif #endif // guard