//this is a list of game constants. So there.

#include "allegro.h"

//key bindings
#define keyNumberOfKeys              9
#define keyBindUp                    KEY_W
#define keyBindDown                  KEY_S
#define keyBindLeft                  KEY_A
#define keyBindRight                 KEY_D
#define keyBindHyper                 KEY_SPACE
#define keyBindRestart               KEY_F10
#define keyBindPause                 KEY_TAB
#define keyBindMenu                  KEY_ESC
#define keyBindTaunt                 KEY_Z

//key presses
#define keyUp                    0
#define keyDown                  1
#define keyLeft                  2
#define keyRight                 3
#define keyHyper                 4
#define keyRestart               5
#define keyPause                 6
#define keyMenu                  7
#define keyTaunt                 8

//Character animation
#define charAnimNum            9
#define charAnimIdle           0
#define charAnimRun            1
#define charAnimAttack1        2
#define charAnimAttack2        3
#define charAnimAttack4        4
#define charAnimDead           5
#define charAnimStun           6
#define charAnimTaunt          7
#define charAnimAim            8

//collide criterion
#define collideBoth           1
#define collideDamageOnly     2
#define collideKnockbackOnly  4
#define collideIgnore         8

//status Ailments
#define numGoodStatus 4
#define goodStatusInvicible 0
#define goodStatusMoreJuice 1
#define goodStatusSpeedBoost 2
#define goodStatusMoreDamage 3

#define numBadStatus 4
#define badStatusStun 0
#define badStatusNoJuice 1
#define badStatusSlow 2
#define badStatusLessDamage 3

//affiliation type
#define affiliationPlayer           1
#define affiliationEnemy            2
#define affiliationNeutral          4
#define affiliationPlayerProjectile 8
#define affiliationEnemyProjectile  16

//battlemode status
#define battleModeWinRound        1
#define battleModeLoseRound       2
#define battleModeRestartRound    4
#define battleModeQuit            8
#define battleModeWinCampaign     16

//main menu mode
#define modeConfig 0
#define modeBattle 1

//main menu signal
#define mainMenuStopMode 0
#define mainMenuQuit 1
#define mainMenuContinue 2

//winning and losing conditions
#define winningConditionKillAllEnemy 1
#define winningConditionSurviveUntilTime 2

#define losingConditionPlayerDies 1
#define losingConditionCriticalUnitDies 2

//unitCreate rules
#define unitCreateRulesAtTime 1
#define unitCreateRulesEnemies 2

//unit properties
#define unitPropertyPlayerInvincibleWhenHit 1
#define unitPropertyPlayerChainAttack1 2
#define unitPropertyPlayerChainAttack2 4
#define unitPropertyPlayerChainAttack4 8
#define unitPropertyPlayerClearStunFor3rdAttack 16
#define unitPropertyPlayerIgnoreHealthFor1stAttack 32

#define unitPropertyHitboxHitsOpponentWhenStunned 1
#define unitPropertyHitboxHitsAllyWhenStunned 2
#define unitPropertyHitboxGoesThroughOpponent 4
#define unitPropertyHitboxGoesThroughAlly 8
#define unitPropertyHitboxHitsPlayer 16
#define unitPropertyHitboxHitsEnemy 32
#define unitPropertyHitboxHitsPlayerProjectile 64
#define unitPropertyHitboxHitsEnemyProjectile 128
#define unitPropertyHitboxHitsNeutral 256
#define unitPropertyHitboxDiesWhenHitsWall 512
#define unitPropertyHitboxDiesWhenPlayerHits 1024
#define unitPropertyHitboxDiesWhenPlayerProjectileHits 2048
#define unitPropertyHitboxHitsIndestructible 4096
#define unitPropertyHitboxDiesWhenEnemyHits 8192
#define unitPropertyHitboxDiesWhenEnemyProjectileHits 16384
#define unitPropertyHitboxDiesWhenNeutralHits 32768
#define unitPropertyHitboxDealsNoKnockback 65536

#define unitPropertyStatusResistGoodAilments 1
#define unitPropertyStatusResistBadAilments 2
#define unitPropertyStatusImmuneGoodAilments 4
#define unitPropertyStatusImmuneBadAilments 8

#define unitPropertyDefenseIndestructible 1
#define unitPropertyDefenseBouncy 2
#define unitPropertyDefenseHeavy 4
#define unitPropertyDefenseNoDamage 8
#define unitPropertyDefenseNoKnockBack 16
#define unitPropertyDefenseIgnoreWallKnockback 32

//unit creation alignment styles
#define alignStyleNormal 0
#define alignStyleDist 1
#define alignStyleAngle 2

//search criterion
#define searchByAffiliation 0
#define searchForPCs 1

//sub units
#define subUnitNone 0
#define subUnitBig 1
#define subUnitBiggest 2
#define subUnitTiny 3
#define subUnitElite 4

//arena settings
#define arenaWallStop 0
#define arenaWallIgnore 1
#define arenaWallBounce 2
#define arenaWallPush 3

//sounds
#define numSoundToPlay 5
#define soundToPlayNone -1
#define soundToPlayHit  0
#define soundToPlayDead 1
#define soundToPlayAtt1 2
#define soundToPlayAtt2 3
#define soundToPlayAtt3 4

//switching targets
#define switchTargetNever 0
#define switchAfterAttack 1
#define switchFullHP 2
