From e34c02fbe33b9c9d46d291b40d49ea45cf317094 Mon Sep 17 00:00:00 2001 From: Geoff Benson Date: Mon, 7 Jun 2004 20:54:21 +0000 Subject: [PATCH] Initial Techno Motion support - SINGLE8 and VERSUS8 --- stepmania/src/GameManager.cpp | 40 +++++++++++++++++++++++++-- stepmania/src/NoteDisplay.cpp | 11 ++++++-- stepmania/src/ScreenDemonstration.cpp | 1 + stepmania/src/ScreenHowToPlay.cpp | 1 + stepmania/src/Sprite.cpp | 22 ++++++++++++--- stepmania/src/Style.h | 1 + 6 files changed, 68 insertions(+), 8 deletions(-) diff --git a/stepmania/src/GameManager.cpp b/stepmania/src/GameManager.cpp index 30e6eef12c..e11744c827 100644 --- a/stepmania/src/GameManager.cpp +++ b/stepmania/src/GameManager.cpp @@ -36,7 +36,8 @@ const int DS3DDX_COL_SPACING = 46; const int BM_COL_SPACING = 34; const int IIDX_COL_SPACING = 34; const int MANIAX_COL_SPACING = 36; -const int TECHNO_COL_SPACING = 64; +const int TECHNO_COL_SPACING = 50; +const int TECHNO_VERSUS_COL_SPACING = 35; const int PNM5_COL_SPACING = 32; const int PNM9_COL_SPACING = 32; @@ -2193,7 +2194,7 @@ StyleDef g_StyleDefs[NUM_STYLES] = "single8", // m_szName STEPS_TYPE_TECHNO_SINGLE8, // m_StepsType StyleDef::ONE_PLAYER_ONE_CREDIT, // m_StyleType - { 320, 320 }, // m_iCenterX + { 214, 426 }, // m_iCenterX 8, // m_iColsPerPlayer { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; { // PLAYER_1 @@ -2221,6 +2222,41 @@ StyleDef g_StyleDefs[NUM_STYLES] = 0,1,2,3,4,5,6,7 }, }, + { // STYLE_TECHNO_VERSUS8 + GAME_TECHNO, // m_Game + true, // m_bUsedForGameplay + false, // m_bUsedForEdit + "versus8", // m_szName + STEPS_TYPE_TECHNO_SINGLE8, // m_StepsType + StyleDef::TWO_PLAYERS_TWO_CREDITS, // m_StyleType + { 150, 480 }, // m_iCenterX + 8, // m_iColsPerPlayer + { // m_ColumnInfo[NUM_PLAYERS][MAX_COLS_PER_PLAYER]; + { // PLAYER_1 + { TRACK_1, GAME_CONTROLLER_1, TECHNO_BUTTON_DOWNLEFT, -TECHNO_VERSUS_COL_SPACING*3.5f }, + { TRACK_2, GAME_CONTROLLER_1, TECHNO_BUTTON_LEFT, -TECHNO_VERSUS_COL_SPACING*2.5f }, + { TRACK_3, GAME_CONTROLLER_1, TECHNO_BUTTON_UPLEFT, -TECHNO_VERSUS_COL_SPACING*1.5f }, + { TRACK_4, GAME_CONTROLLER_1, TECHNO_BUTTON_DOWN, -TECHNO_VERSUS_COL_SPACING*0.5f }, + { TRACK_5, GAME_CONTROLLER_1, TECHNO_BUTTON_UP, +TECHNO_VERSUS_COL_SPACING*0.5f }, + { TRACK_6, GAME_CONTROLLER_1, TECHNO_BUTTON_UPRIGHT, +TECHNO_VERSUS_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_1, TECHNO_BUTTON_RIGHT, +TECHNO_VERSUS_COL_SPACING*2.5f }, + { TRACK_8, GAME_CONTROLLER_1, TECHNO_BUTTON_DOWNRIGHT,+TECHNO_VERSUS_COL_SPACING*3.5f }, + }, + { // PLAYER_2 + { TRACK_1, GAME_CONTROLLER_2, TECHNO_BUTTON_DOWNLEFT, -TECHNO_VERSUS_COL_SPACING*3.5f }, + { TRACK_2, GAME_CONTROLLER_2, TECHNO_BUTTON_LEFT, -TECHNO_VERSUS_COL_SPACING*2.5f }, + { TRACK_3, GAME_CONTROLLER_2, TECHNO_BUTTON_UPLEFT, -TECHNO_VERSUS_COL_SPACING*1.5f }, + { TRACK_4, GAME_CONTROLLER_2, TECHNO_BUTTON_DOWN, -TECHNO_VERSUS_COL_SPACING*0.5f }, + { TRACK_5, GAME_CONTROLLER_2, TECHNO_BUTTON_UP, +TECHNO_VERSUS_COL_SPACING*0.5f }, + { TRACK_6, GAME_CONTROLLER_2, TECHNO_BUTTON_UPRIGHT, +TECHNO_VERSUS_COL_SPACING*1.5f }, + { TRACK_7, GAME_CONTROLLER_2, TECHNO_BUTTON_RIGHT, +TECHNO_VERSUS_COL_SPACING*2.5f }, + { TRACK_8, GAME_CONTROLLER_2, TECHNO_BUTTON_DOWNRIGHT,+TECHNO_VERSUS_COL_SPACING*3.5f }, + }, + }, + { // m_iColumnDrawOrder[MAX_COLS_PER_PLAYER]; + 0,1,2,3,4,5,6,7 + }, + }, { // STYLE_PNM_FIVE GAME_PNM, // m_Game true, // m_bUsedForGameplay diff --git a/stepmania/src/NoteDisplay.cpp b/stepmania/src/NoteDisplay.cpp index 753d1147d6..9edafabf4f 100644 --- a/stepmania/src/NoteDisplay.cpp +++ b/stepmania/src/NoteDisplay.cpp @@ -552,11 +552,18 @@ void NoteDisplay::DrawHoldBody( const HoldNote& hn, const bool bIsBeingHeld, flo DISPLAY->SetTextureWrapping( true ); - const float fFrameWidth = pSprBody->GetUnzoomedWidth(); + float fFrameWidth = pSprBody->GetUnzoomedWidth(); const float fFrameHeight = pSprBody->GetUnzoomedHeight(); const float fYBodyTop = fYHead + cache->m_iStartDrawingHoldBodyOffsetFromHead; const float fYBodyBottom = fYTail + cache->m_iStopDrawingHoldBodyOffsetFromTail; - + + // To get the hold body textures to look correct on longer hold arrows, you need to have + // SetTextureWrapping() be set to true above. However, this ends up defeating the scaling + // done on the Sprite itself. As a result, if we want this to be the appropriate size + // for 2-player 8-panel (techno versus), then we need to shrink it to 80% manually here. + if( GAMESTATE->m_CurGame == GAME_TECHNO && GAMESTATE->m_CurStyle == STYLE_TECHNO_VERSUS8 ) + fFrameWidth *= (float)0.8; + const bool bReverse = GAMESTATE->m_CurrentPlayerOptions[m_PlayerNumber].GetReversePercentForColumn(iCol) > 0.5; bool bAnchorToBottom = bReverse && cache->m_bFlipHeadAndTailWhenReverse; diff --git a/stepmania/src/ScreenDemonstration.cpp b/stepmania/src/ScreenDemonstration.cpp index 5010dfc326..4fdd5fecc6 100644 --- a/stepmania/src/ScreenDemonstration.cpp +++ b/stepmania/src/ScreenDemonstration.cpp @@ -39,6 +39,7 @@ bool PrepareForDemonstration() // always return true. case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break; case GAME_BM: GAMESTATE->m_CurStyle = STYLE_BM_SINGLE; break; case GAME_MANIAX: GAMESTATE->m_CurStyle = STYLE_MANIAX_SINGLE; break; + case GAME_TECHNO: GAMESTATE->m_CurStyle = STYLE_TECHNO_VERSUS8; case GAME_PNM: GAMESTATE->m_CurStyle = STYLE_PNM_NINE; break; default: ASSERT(0); } diff --git a/stepmania/src/ScreenHowToPlay.cpp b/stepmania/src/ScreenHowToPlay.cpp index cb2d703fe3..c5a89061d8 100644 --- a/stepmania/src/ScreenHowToPlay.cpp +++ b/stepmania/src/ScreenHowToPlay.cpp @@ -150,6 +150,7 @@ ScreenHowToPlay::ScreenHowToPlay( CString sName ) : ScreenAttract( sName ) case GAME_DS3DDX: GAMESTATE->m_CurStyle = STYLE_DS3DDX_SINGLE; break; case GAME_BM: GAMESTATE->m_CurStyle = STYLE_BM_SINGLE; break; case GAME_MANIAX: GAMESTATE->m_CurStyle = STYLE_MANIAX_SINGLE; break; + case GAME_TECHNO: GAMESTATE->m_CurStyle = STYLE_TECHNO_SINGLE8; break; case GAME_PNM: GAMESTATE->m_CurStyle = STYLE_PNM_NINE; break; default: ASSERT(0); // we should cover all gametypes.... } diff --git a/stepmania/src/Sprite.cpp b/stepmania/src/Sprite.cpp index 9cc5eb2260..6635b3d405 100644 --- a/stepmania/src/Sprite.cpp +++ b/stepmania/src/Sprite.cpp @@ -24,6 +24,9 @@ #include "SDL_utils.h" #include "ActorUtil.h" #include "arch/ArchHooks/ArchHooks.h" +#include "Game.h" +#include "GameState.h" +#include "Style.h" Sprite::Sprite() { @@ -82,13 +85,24 @@ bool Sprite::LoadBG( RageTextureID ID ) bool Sprite::Load( RageTextureID ID ) { - if( ID.filename == "" ) return true; + bool result; + if( ID.filename == "" ) result = true; if( ID.filename.Right(7) == ".sprite" ) - return LoadFromSpriteFile( ID ); + result = LoadFromSpriteFile( ID ); else - return LoadFromTexture( ID ); -}; + result = LoadFromTexture( ID ); + // 2-player 8-panel gets crowded - this scaling emulates the arcade behaviour to account for this + if( GAMESTATE->m_CurGame == GAME_TECHNO && + GAMESTATE->m_CurStyle == STYLE_TECHNO_VERSUS8 && + ID.filename.find( "NoteSkin" ) != -1 ) + { + Actor::SetBaseZoomX( Actor::m_baseScale.x * (float)0.8 ); + Actor::SetBaseZoomY( Actor::m_baseScale.y * (float)0.8 ); + } + + return result; +}; // Sprite file has the format: // diff --git a/stepmania/src/Style.h b/stepmania/src/Style.h index fdc979bae4..11f5bf9435 100644 --- a/stepmania/src/Style.h +++ b/stepmania/src/Style.h @@ -34,6 +34,7 @@ enum Style STYLE_MANIAX_VERSUS, STYLE_MANIAX_DOUBLE, STYLE_TECHNO_SINGLE8, + STYLE_TECHNO_VERSUS8, STYLE_PNM_FIVE, STYLE_PNM_NINE, STYLE_LIGHTS_CABINET,