Initial Techno Motion support - SINGLE8 and VERSUS8

This commit is contained in:
Geoff Benson
2004-06-07 20:54:21 +00:00
parent a67e90c53e
commit e34c02fbe3
6 changed files with 68 additions and 8 deletions
+38 -2
View File
@@ -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
+9 -2
View File
@@ -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;
+1
View File
@@ -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);
}
+1
View File
@@ -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....
}
+18 -4
View File
@@ -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:
//
+1
View File
@@ -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,