2016-08-12 01:42:11 +00:00
|
|
|
// SONIC ROBO BLAST 2 KART ~ ZarroTsu
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
/// \file k_kart.h
|
|
|
|
/// \brief SRB2kart stuff.
|
|
|
|
|
|
|
|
#ifndef __K_KART__
|
|
|
|
#define __K_KART__
|
|
|
|
|
2016-08-15 03:51:08 +00:00
|
|
|
#include "doomdef.h"
|
|
|
|
#include "d_player.h" // Need for player_t
|
|
|
|
|
2017-11-28 21:57:38 +00:00
|
|
|
UINT8 colortranslations[MAXSKINCOLORS][16];
|
2016-08-12 01:42:11 +00:00
|
|
|
extern const char *KartColor_Names[MAXSKINCOLORS];
|
2018-06-20 00:20:06 +00:00
|
|
|
extern const UINT8 KartColor_Opposite[MAXSKINCOLORS*2];
|
2018-02-05 23:55:52 +00:00
|
|
|
void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor);
|
2016-08-12 01:42:11 +00:00
|
|
|
void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color);
|
|
|
|
UINT8 K_GetKartColorByName(const char *name);
|
|
|
|
|
2016-08-15 03:51:08 +00:00
|
|
|
void K_RegisterKartStuff(void);
|
2016-08-12 01:42:11 +00:00
|
|
|
|
Winning positions scale with number of players
Anyone in the top 50% gets winning music & blue position, everyone below
gets the losing music & red position. For odd numbers, it rounds up.
2p: 1st wins, 2nd loses
3p: 1-2 win, 3rd loses
4p: 1-2 win, 3-4 lose
5p: 1-3 win, 4-5 lose
6p: 1-3 win, 4-6 lose
7p: 1-4 win, 5-7 lose
8p: 1-4 win, 5-8 lose (SMK)
12p: 1-6 win, 7-12 lose (modern MK)
16p: 1-8 win, 9-16 lose (max player count)
In big netgames you won't just hear the losing music all of the time now
:V
2018-02-21 00:11:09 +00:00
|
|
|
boolean K_IsPlayerLosing(player_t *player);
|
2018-07-01 08:36:09 +00:00
|
|
|
boolean K_IsPlayerWanted(player_t *player);
|
2018-09-06 23:27:07 +00:00
|
|
|
void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid);
|
2018-06-25 02:15:22 +00:00
|
|
|
void K_RespawnChecker(player_t *player);
|
2017-11-04 17:32:47 +00:00
|
|
|
void K_KartMoveAnimation(player_t *player);
|
2016-08-15 03:51:08 +00:00
|
|
|
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd);
|
2018-02-05 00:00:36 +00:00
|
|
|
void K_KartPlayerAfterThink(player_t *player);
|
2018-07-27 00:12:42 +00:00
|
|
|
void K_DoInstashield(player_t *player);
|
2018-07-01 08:36:09 +00:00
|
|
|
void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, boolean trapitem);
|
2017-02-07 22:19:04 +00:00
|
|
|
void K_SquishPlayer(player_t *player, mobj_t *source);
|
|
|
|
void K_ExplodePlayer(player_t *player, mobj_t *source);
|
2018-07-03 19:14:47 +00:00
|
|
|
void K_StealBumper(player_t *player, player_t *victim, boolean force);
|
2017-11-05 17:15:19 +00:00
|
|
|
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
2018-02-06 02:08:01 +00:00
|
|
|
void K_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
2018-06-08 20:05:45 +00:00
|
|
|
void K_SpawnBoostTrail(player_t *player);
|
2018-06-10 20:10:24 +00:00
|
|
|
void K_SpawnSparkleTrail(mobj_t *mo);
|
2018-07-25 16:49:30 +00:00
|
|
|
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
2018-06-08 20:05:45 +00:00
|
|
|
void K_DriftDustHandling(mobj_t *spawner);
|
2018-03-31 04:44:03 +00:00
|
|
|
void K_DoSneaker(player_t *player, boolean doPFlag);
|
2018-09-27 17:32:07 +00:00
|
|
|
void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound);
|
2018-06-16 23:57:08 +00:00
|
|
|
void K_KillBananaChain(mobj_t *banana, mobj_t *inflictor, mobj_t *source);
|
Dropping items!
* Shield Drop...
* Whatever you've got orbiting or trailing you, DROP THEM WHERE THEY STAND. (Except for the ghost sink. That one's OK.)
* Pops your Thunder Shield.
* Happens upon ANY hit, except for deathpits.
* HUD Drop...
* Also does the above, except for the Thunder Shield thing.
* If there's any item left in your item box, pop it out as a little hovering, rotating Minecraft item!
* You can pick up the Minecraft item by driving over it if your item box is sufficiently empty, or the item which is contained within it is of the same type.
* Happens upon Size Down and battle elimination.
* Can also be forced on with `cv_kartdebughuddrop on`!
* Some other random stuff.
* Fix a bunch of `a->scale = b`'s into `P_SetScale(a, b)` form, for maximum validity.
* Make K_CleanHnextList and K_UpdateHnextList one function, since they only differed by one continue clause (and the type of their input parameter).
* Allow shrunken players to pick up item boxes again.
* Fix MF_NOCLIPTHING. (Gonna pass this fix to vanilla when I get the chance, too.)
* Break NiGHTS a little through my machinations.
2018-09-06 21:17:29 +00:00
|
|
|
void K_UpdateHnextList(player_t *player, boolean clean);
|
|
|
|
void K_DropHnextList(player_t *player);
|
2018-06-27 19:58:43 +00:00
|
|
|
void K_RepairOrbitChain(mobj_t *orbit);
|
2018-08-30 23:24:22 +00:00
|
|
|
player_t *K_FindJawzTarget(mobj_t *actor, player_t *source);
|
2017-11-11 03:28:20 +00:00
|
|
|
boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y);
|
2017-03-07 01:05:18 +00:00
|
|
|
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
|
Mammoth commit!
* Deaths in record attack no longer put you into a glitchy singleplayer game-over state that we somehow both kept around and also broke since we branched Kart off of Vanilla..
* Fix non-standard mapscales making the Death Egg respawn octagons dissasemble themselves.
* Allow for MULTIPLE TIME EMBLEMS PER MAP, at least in the emblem UI on the timer. It shows all completed emblems plus the uncompleted emblem up to a total of three.
* Major tweaks to the First Person HUD.
* I know this was your baby, Sal, and some of the changes may prove controversial - so I've put the ones that are likely to cause the most fuss inside an ifndef block, so that you can toggle it as you please with minimal code changes.
* Dontdraw-ness, transparency, and colorization match the player's object!
* Moves around on the screen with respect to the direction of the player object's motion, to make drifting look nicer!
* Flashes the colour of your drift sparks.
* Did a WHOLE bunch of things with respect to music. I'm not sure how to describe this, so I'll go through step-by-step.
* Countdowns now play the drowning music again.
* Removed/disabled extraenous P_RestoreMusics.
* Made map-ending music called by its own function, P_EndingMusic(player_t *player).
* Made the ending music play on the LAST player crossing the finishing line in splitscreen, rather than first.
* Make dead players spinout and clip through the floor, at least until we add the new death anims.
* Fix prior pogo spring usage making dead players fall faster.
* Make the time over countdown use the kart font when not splitscreen with 3 or 4 players.
* Removed a weird bonus HWR_DrawCroppedPatch function signature in the hardware header.
2018-07-16 19:19:30 +00:00
|
|
|
fixed_t K_GetKartDriftSparkValue(player_t *player);
|
Dropping items!
* Shield Drop...
* Whatever you've got orbiting or trailing you, DROP THEM WHERE THEY STAND. (Except for the ghost sink. That one's OK.)
* Pops your Thunder Shield.
* Happens upon ANY hit, except for deathpits.
* HUD Drop...
* Also does the above, except for the Thunder Shield thing.
* If there's any item left in your item box, pop it out as a little hovering, rotating Minecraft item!
* You can pick up the Minecraft item by driving over it if your item box is sufficiently empty, or the item which is contained within it is of the same type.
* Happens upon Size Down and battle elimination.
* Can also be forced on with `cv_kartdebughuddrop on`!
* Some other random stuff.
* Fix a bunch of `a->scale = b`'s into `P_SetScale(a, b)` form, for maximum validity.
* Make K_CleanHnextList and K_UpdateHnextList one function, since they only differed by one continue clause (and the type of their input parameter).
* Allow shrunken players to pick up item boxes again.
* Fix MF_NOCLIPTHING. (Gonna pass this fix to vanilla when I get the chance, too.)
* Break NiGHTS a little through my machinations.
2018-09-06 21:17:29 +00:00
|
|
|
void K_DropItems(player_t *player);
|
2018-06-12 20:27:51 +00:00
|
|
|
void K_StripItems(player_t *player);
|
Dropping items!
* Shield Drop...
* Whatever you've got orbiting or trailing you, DROP THEM WHERE THEY STAND. (Except for the ghost sink. That one's OK.)
* Pops your Thunder Shield.
* Happens upon ANY hit, except for deathpits.
* HUD Drop...
* Also does the above, except for the Thunder Shield thing.
* If there's any item left in your item box, pop it out as a little hovering, rotating Minecraft item!
* You can pick up the Minecraft item by driving over it if your item box is sufficiently empty, or the item which is contained within it is of the same type.
* Happens upon Size Down and battle elimination.
* Can also be forced on with `cv_kartdebughuddrop on`!
* Some other random stuff.
* Fix a bunch of `a->scale = b`'s into `P_SetScale(a, b)` form, for maximum validity.
* Make K_CleanHnextList and K_UpdateHnextList one function, since they only differed by one continue clause (and the type of their input parameter).
* Allow shrunken players to pick up item boxes again.
* Fix MF_NOCLIPTHING. (Gonna pass this fix to vanilla when I get the chance, too.)
* Break NiGHTS a little through my machinations.
2018-09-06 21:17:29 +00:00
|
|
|
void K_StripOther(player_t *player);
|
2017-03-10 02:22:49 +00:00
|
|
|
void K_MomentumToFacing(player_t *player);
|
2017-02-24 01:36:43 +00:00
|
|
|
fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower);
|
2017-11-17 05:48:36 +00:00
|
|
|
fixed_t K_GetKartAccel(player_t *player);
|
2018-08-11 04:12:41 +00:00
|
|
|
UINT16 K_GetKartFlashing(player_t *player);
|
2017-04-20 01:04:44 +00:00
|
|
|
fixed_t K_3dKartMovement(player_t *player, boolean onground, fixed_t forwardmove);
|
2017-03-07 01:05:18 +00:00
|
|
|
void K_MoveKartPlayer(player_t *player, boolean onground);
|
2018-07-01 08:36:09 +00:00
|
|
|
void K_CalculateBattleWanted(void);
|
2018-07-03 19:14:47 +00:00
|
|
|
void K_CheckBumpers(void);
|
2018-07-20 23:11:36 +00:00
|
|
|
void K_CheckSpectateStatus(void);
|
2016-08-12 01:42:11 +00:00
|
|
|
|
2018-09-23 22:07:38 +00:00
|
|
|
const char *K_GetItemPatch(UINT8 item, boolean tiny);
|
2017-12-25 15:05:36 +00:00
|
|
|
INT32 K_calcSplitFlags(INT32 snapflags);
|
2016-08-15 03:51:08 +00:00
|
|
|
void K_LoadKartHUDGraphics(void);
|
2017-11-21 07:23:06 +00:00
|
|
|
fixed_t K_FindCheckX(fixed_t px, fixed_t py, angle_t ang, fixed_t mx, fixed_t my);
|
2016-08-15 03:51:08 +00:00
|
|
|
void K_drawKartHUD(void);
|
2018-07-22 15:16:03 +00:00
|
|
|
void K_drawKartFreePlay(UINT32 flashtime);
|
2018-08-29 20:37:47 +00:00
|
|
|
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, boolean playing);
|
2017-12-19 00:07:38 +00:00
|
|
|
void K_LoadIconGraphics(char *facestr, INT32 skinnum);
|
2017-12-24 00:14:06 +00:00
|
|
|
void K_ReloadSkinIconGraphics(void);
|
2016-08-12 01:42:11 +00:00
|
|
|
|
|
|
|
// =========================================================================
|
|
|
|
#endif // __K_KART__
|