StepMania 3.9 StepMania 3.9 - 4 Players (QUAD) - Src Changes


---
CommonMetrics.h
added defines for COLOR_P3 and COLOR_P4

--- *****
PlayerNumber.h
added PLAYER_3 and PLAYER_4 to the PlayerNumber enum
added players 3 and 4 to OPPOSITE_PLAYER

--- *****
GameConstantsAndTypes.h
added STEPS_TYPE_DANCE_QUAD to the enum StepsType (1 person on 4 pads)

--- *****
GameInput.h
added two new controllers to enum GameController

---
OptionsCursor.cpp
added iBaseFrameNo cases for PLAYER_3 and 4 at lines 34 and 35

--- *****
PlayerNumber.cpp
added cases for COLOR_P3 and 4 on lines 14 and 15

---
ScreenGameplay.cpp
added two lines to const bool bReverse[NUM_PLAYERS] (line numbers 990 and 991)

---
Game.cpp & Game.h - has some stuff that is either hardcoded for 2-player or is irrelevant
Game.cpp
added lines 39 and 43 - case statements for Style::FOUR_PLAYERS_FOUR_CREDITS and Style::ONE_PLAYER_FOUR_CREDITS
added to Game::MenuInputToGameInput() - case statements for Style::FOUR_PLAYERS_FOUR_CREDITS and Style::ONE_PLAYER_FOUR_CREDITS
also changed "GameController controller[2];" to "GameController controller[4];"
--- *****
MenuInput.h

---
ScreenEnding.cpp - has hard-coded 2-player stuff for totalling up scores, calories, etc.

---
Style.h - IMPORTANT! describes the data structure used to represent game styles (versus, double, solo, etc.)
added to enum StyleType:
FOUR_PLAYERS_FOUR_CREDITS, // e.g. quadversus
ONE_PLAYER_FOUR_CREDITS, // e.g. quadruples

---
Style.cpp
added lines 81 and 84 - case statements for Style::FOUR_PLAYERS_FOUR_CREDITS and Style::ONE_PLAYER_FOUR_CREDITS

---
GameManager.cpp - IMPORTANT! defines lots of stuff: default controls, gametypes, styletypes
added "dance-quad" (one player on 4 pads)
changed Game "dance":
4 controllers instead of 2
added default controls for controllers 3 and 4
added STYLE_DANCE_QUADVERSUS (inserted right after STYLE_DANCE_VERSUS)
this style has 4-player
has the arrows placed correctly, so that 16 columns can be scrunched onto the screen
(changed m_ColumnInfo and m_iCenterX)
has m_bNeedsZoomOutWith2Players = true
has Style::FOUR_PLAYERS_FOUR_CREDITS
changed m_iCenterX in other dance styles (solo and single player all sets of arrows are centered)
added player 3 and player 4 to single-player and solo

---
GameState.cpp - handles joining of players into the game
added lines 992 & 992 - case statements for PLAYER_3 and PLAYER_4
added lines 872 & 876 - case statements for Style::FOUR_PLAYERS_FOUR_CREDITS and Style::ONE_PLAYER_FOUR_CREDITS
changed line 873 - no longer automatically returns true; only returns true for sides that have joined

---
GameState.h?

---
OptionIcon.cpp
changed "OptionIcon frame 3x2" to "OptionIcon frame 3x4" on line 18

---
ScreenSelectDifficulty.cpp
changed " shadow 2x1" to " shadow 4x1" on line 85
changed " cursor 2x1" to " cursor 4x1" on line 92
changed " ok 2x1" to " ok 4x1" on line 98

---
DifficultyIcon.cpp
changed code at lines 29 to 36 to reflect the fact that their must now be
either 6, 12, or 24 difficulty graphics (instead of just 6 or 12)
(NUM_DIFFICULTIES*4 in addition to NUM_DIFFICULTIES*2)
added line 67 to handle the NUM_DIFFICULTIES*4 case

---
ScreenMapControllers.cpp
changed BUTTON_COLUMN_X values on line 33 so that 4 controllers fit on the screen
changed the "------" on line 348 (too many hyphens, so I took some out)

---
GradeDisplay.cpp
lines 31 and 32 - made it so that the grade graphic may have 8, 16, **OR 32** frames (added the possibility of 32 for 4 player)
line 83 - added this so that 32 frames will still work
case 32: iNumCols=4; break;

---
ScoreKeeperRave.cpp
added lines 78 and 79 - case statements for PLAYER_3 and PLAYER_4
added lines 117 & 118 - case statements for PLAYER_3 and PLAYER_4
fix rave mode later??

---
Background.cpp
has stuff for fading the sides of the screen (for danger and death).
It is hard-coded to have only 2 halves of the screen.

---
CombinedLifeMeterTug.cpp
added lines 112 & 113 - case statements for PLAYER_3 and PLAYER_4
added lines 126 & 127 - case statements for PLAYER_3 and PLAYER_4
Has other stuff (e.g. lines 51 and 52) that uses the constants PLAYER_1 and PLAYER_2

---
ModeSwitcher.cpp
lines 292-295 has code that uses PLAYER_1 and PLAYER_2, but seems like it won't cause crashes

---
PaneDisplay.cpp
added lines 77 and 78 - case statements for PLAYER_3 and PLAYER_4

---
ProfileManager.cpp
added lines 329 and 330 (case PROFILE_SLOT_PLAYER_3 and case PROFILE_SLOT_PLAYER_4)
added lines 345 and 346 (ditto)
added lines 530 and 531 (ditto)

---
LifeMeterBar.cpp
commented out lines 266 and 267 (they made player 2's life bar backwards)

---
ArrowEffects.cpp
line 424 - changed GAMESTATE->GetNumSidesJoined()==2 to GAMESTATE->GetNumSidesJoined()>=2

---
ModeChoice.cpp
changed GetCreditsRequiredToPlayStyle()
added cases for new "Style"s
NOTE: the credits required for quad modes is only 3, to avoid the "no styles are selectable"(paraphrased) message
changed ModeChoice::IsPlayable()
added logic to disable 2-player modes when there are more than 2 players
changed ModeChoice::Apply()
added case statements for Style::FOUR_PLAYERS_FOUR_CREDITS and Style::ONE_PLAYER_FOUR_CREDITS
changed around the code in the case statements so that the 2-player modes will only join a max of 2 people instead of all 4

---
ScreenOptions.cpp
changed line 17 to have 4 different ITEM_X values, like this:
const float ITEM_X[NUM_PLAYERS] = { 240, 305, 375, 440 };