add dancing character support, option to enable

This commit is contained in:
Chris Danford
2003-05-05 04:43:11 +00:00
parent 7953f94b0d
commit 35dd3886dd
16 changed files with 310 additions and 24 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

+8 -3
View File
@@ -1692,16 +1692,20 @@ BannerLoading=ON DEMAND loads banners when they're displayed, for fast loads.::A
[ScreenGameplayOptions]
HelpText=&UP; &DOWN; to change line &LEFT; &RIGHT; to select between options::START to accept changes BACK to discard changes
BackgroundMode=Choose what type of backgrounds you would like displayed.::&oq;Animations&cq; uses any random items in the BGAnimations folder.::&oq;Visualizations&cq; chooses a random overlay movie from the Visualization folder.::&oq;Random Movies&cq; cycles through movies in the RandomMovies folder.
BackgroundBrightness=Controls how bright the background will appear.::Turn this setting down if you have a hard time seeing the notes.
BGForBanner=Instead of displaying the banner image in menus, display::the song background instead. Backgrounds can look better::than banners because they are higher resolution, but they::will take longer to load and may result in some &oq;skipping&cq;.
EasterEggs=Enable or disable some special easter eggs.
MarvelousTiming=Enable or disable marvelous judgement.
HiddenSongs=Some songs are only playable during Oni courses and::with roulette. Leave this &oq;OFF&cq; to always display all songs.
ShowDanger=Turn this option &oq;OFF&cq; to disable the flashing &oq;Danger&cq;::background that shows when you're about to die.
PickExtraStage=Instead of a set extra stage, this allows::the player to choose which song to play.::Difficulty and options are still locked.
SoloSingles=Turn this option &oq;ON&cq; to enable Solo-Style::for 4-panel single play.
[ScreenBackgroundOptions]
HelpText=&UP; &DOWN; to change line &LEFT; &RIGHT; to select between options::START to accept changes BACK to discard changes
Mode=Choose what type of backgrounds you would like displayed.::&oq;Animations&cq; uses any random items in the BGAnimations folder.::&oq;Visualizations&cq; chooses a random overlay movie from the Visualization folder.::&oq;Random Movies&cq; cycles through movies in the RandomMovies folder.
Brightness=Controls how bright the background will appear.::Turn this setting down if you have a hard time seeing the notes.
Danger=Turn this option &oq;OFF&cq; to disable the flashing &oq;Danger&cq;::background that shows when you're about to die.
DancingCharacters=Turn this option &oq;OFF&cq; to disable the dancing characters::in the background. Even if this option is &oq;ON&cq;,::characters will only show if you have some installed.
[ScreenAppearanceOptions]
HelpText=&UP; &DOWN; to change line &LEFT; &RIGHT; to select between options::START to accept changes BACK to discard changes
Announcer=Choose from this list of installed annoucner packs.::For more information about creating announcer packs, see the README.
@@ -1853,6 +1857,7 @@ GameplayOptions=
AppearanceOptions=
SoundOptions=
AutogenOptions=
BackgroundOptions=
[TextBanner]
Width=180
+6
View File
@@ -418,6 +418,9 @@ void Background::Update( float fDeltaTime )
}
}
if( PREFSMAN->m_bShowDancingCharacters )
m_DancingCharacters.Update( fDeltaTime );
m_quadBGBrightness.Update( fDeltaTime );
}
@@ -437,6 +440,9 @@ void Background::DrawPrimitives()
m_pFadingBGA->Draw();
}
if( PREFSMAN->m_bShowDancingCharacters )
m_DancingCharacters.Draw();
m_quadBGBrightness.Draw();
for( int i=0; i<4; i++ )
m_quadBorder[i].Draw();
+3
View File
@@ -17,6 +17,7 @@
#include "ActorFrame.h"
#include "BGAnimation.h"
#include "song.h"
#include "DancingCharacters.h"
class Background : public ActorFrame
@@ -43,6 +44,8 @@ public:
protected:
bool IsDangerVisible();
DancingCharacters m_DancingCharacters;
BGAnimation m_BGADanger;
BGAnimation* CreateSongBGA(const Song *pSong, CString sBGName) const;
+106
View File
@@ -0,0 +1,106 @@
#include "global.h"
/*
-----------------------------------------------------------------------------
Class: DancingCharacters
Desc: See header.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
#include "DancingCharacters.h"
#include "GameConstantsAndTypes.h"
#include "RageDisplay.h"
#include "RageUtil.h"
#include "RageMath.h"
#include "PrefsManager.h"
const float CAMERA_SWEEP_SECONDS = 2.f;
const float CAMERA_SWEEP_SECONDS_VARIANCE = 1.f;
const float CAMERA_DISTANCE = 16.f;
const float CAMERA_DISTANCE_VARIANCE = 3.f;
const float CAMERA_HEIGHT = -9.f;
const float CAMERA_HEIGHT_VARIANCE = 3.f;
const float MODEL_X[NUM_PLAYERS] = { -8, 8 };
DancingCharacters::DancingCharacters()
{
if( PREFSMAN->m_bShowDancingCharacters )
{
m_Character[PLAYER_1].SetX( MODEL_X[PLAYER_1] );
m_Character[PLAYER_1].LoadMilkshapeAscii( "D:\\Dev\\ddrpc char hacking\\DDRPCRip\\models\\char0000\\model.txt" );
m_Character[PLAYER_1].LoadMilkshapeAsciiBones( "D:\\Dev\\ddrpc char hacking\\DDRPCRip\\models\\dance0001.bones.txt" );
m_Character[PLAYER_1].SetZoomY(-1);
this->AddChild( &m_Character[PLAYER_1] );
m_Character[PLAYER_2].SetX( MODEL_X[PLAYER_2] );
m_Character[PLAYER_2].LoadMilkshapeAscii( "D:\\Dev\\ddrpc char hacking\\DDRPCRip\\models\\char0011\\model.txt" );
m_Character[PLAYER_2].LoadMilkshapeAsciiBones( "D:\\Dev\\ddrpc char hacking\\DDRPCRip\\models\\dance0002.bones.txt" );
m_Character[PLAYER_2].SetZoomY(-1);
this->AddChild( &m_Character[PLAYER_2] );
StartCameraSweep();
}
}
void DancingCharacters::Update( float fDelta )
{
ActorFrame::Update( fDelta );
// update camera sweep
m_fSecsIntoSweep += fDelta;
if( m_fSecsIntoSweep > m_fSweepSecs )
StartCameraSweep();
float fPercentIntoSweep = m_fSecsIntoSweep / m_fSweepSecs;
m_CameraEyeCurrent = m_CameraEyeStart * (1-fPercentIntoSweep) + m_CameraEyeEnd * fPercentIntoSweep;
}
void DancingCharacters::DrawPrimitives()
{
DISPLAY->EnterPerspective( 90, false );
DISPLAY->LookAt(
m_CameraEyeCurrent,
m_CameraAt,
RageVector3(0,1,0) );
DISPLAY->EnableLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0.4f,0.4f,0.4f,1),
RageColor(0.8f,0.8f,0.8f,0.8f),
RageColor(0.8f,0.8f,0.8f,0.8f),
RageVector3(+1, 0, +1) );
ActorFrame::DrawPrimitives();
DISPLAY->SetLightOff( 0 );
DISPLAY->EnableLighting( false );
DISPLAY->ExitPerspective();
}
void DancingCharacters::StartCameraSweep()
{
m_CameraEyeStart = RageVector3( randomf(), randomf(), randomf() );
RageVec3Normalize( &m_CameraEyeStart, &m_CameraEyeStart );
m_CameraEyeStart *= CAMERA_DISTANCE + randomf()*CAMERA_DISTANCE_VARIANCE;
m_CameraEyeStart.y += CAMERA_HEIGHT + randomf()*CAMERA_HEIGHT_VARIANCE;
m_CameraEyeEnd = RageVector3( randomf(), randomf(), randomf() );
m_CameraEyeEnd += m_CameraEyeStart/2; // bias the end toward the start to that we don't sweep through the chars' bodies
RageVec3Normalize( &m_CameraEyeEnd, &m_CameraEyeEnd );
m_CameraEyeEnd *= CAMERA_DISTANCE + randomf()*CAMERA_DISTANCE_VARIANCE;
m_CameraEyeEnd.y += CAMERA_HEIGHT + randomf()*CAMERA_HEIGHT_VARIANCE;
m_CameraAt = RageVector3(0,CAMERA_HEIGHT + randomf()*CAMERA_HEIGHT_VARIANCE,0);
m_fSweepSecs = CAMERA_SWEEP_SECONDS + randomf()*CAMERA_SWEEP_SECONDS_VARIANCE;
m_fSecsIntoSweep = 0;
}
+40
View File
@@ -0,0 +1,40 @@
#ifndef DancingCharacters_H
#define DancingCharacters_H
/*
-----------------------------------------------------------------------------
Class: DancingCharacters
Desc: A graphic displayed in the DancingCharacters during Dancing.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
#include "Model.h"
#include "ActorFrame.h"
#include "PlayerNumber.h"
class DancingCharacters : public ActorFrame
{
public:
DancingCharacters();
virtual void Update( float fDelta );
virtual void DrawPrimitives();
protected:
void StartCameraSweep();
Model m_Character[NUM_PLAYERS];
RageVector3 m_CameraEyeStart;
RageVector3 m_CameraEyeEnd;
RageVector3 m_CameraEyeCurrent;
RageVector3 m_CameraAt;
float m_fSweepSecs;
float m_fSecsIntoSweep;
};
#endif
+3
View File
@@ -91,6 +91,7 @@ PrefsManager::PrefsManager()
m_bAutogenMissingTypes = true;
m_bAutogenGroupCourses = true;
m_bBreakComboToGetItem = false;
m_bShowDancingCharacters = false;
m_BannerCacheType = preload_none;
/* DDR Extreme-style extra stage support.
@@ -193,6 +194,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk( bool bSwitchToLastPlayedGame )
ini.GetValueB( "Options", "Timestamping", m_bTimestamping );
ini.GetValue ( "Options", "DefaultModifiers", m_sDefaultModifiers );
ini.GetValueB( "Options", "BreakComboToGetItem", m_bBreakComboToGetItem );
ini.GetValueB( "Options", "ShowDancingCharacters", m_bShowDancingCharacters );
ini.GetValueI( "Options", "BannerCacheType", (int&)m_BannerCacheType );
m_asAdditionalSongFolders.clear();
@@ -275,6 +277,7 @@ void PrefsManager::SaveGlobalPrefsToDisk()
ini.SetValueB( "Options", "Timestamping", m_bTimestamping );
ini.SetValue ( "Options", "DefaultModifiers", m_sDefaultModifiers );
ini.SetValueB( "Options", "BreakComboToGetItem", m_bBreakComboToGetItem );
ini.SetValueB( "Options", "ShowDancingCharacters", m_bShowDancingCharacters );
ini.SetValueI( "Options", "BannerCacheType", m_BannerCacheType );
+1
View File
@@ -75,6 +75,7 @@ public:
bool m_bAutogenGroupCourses;
CString m_sDefaultModifiers;
bool m_bBreakComboToGetItem;
bool m_bShowDancingCharacters;
/* 0 = no; 1 = yes; -1 = auto (do whatever is appropriate for the arch). */
int m_iBoostAppPriority;
+1 -1
View File
@@ -91,7 +91,7 @@ public:
void DrawFan( const RageVertex v[], int iNumVerts );
void DrawStrip( const RageVertex v[], int iNumVerts );
void DrawTriangles( const RageVertex v[], int iNumVerts );
void DrawIndexedTriangles( const RageVertex v[], const Uint16 pIndices[], int iNumIndices );
void DrawIndexedTriangles( const RageVertex v[], const Uint16* pIndices, int iNumIndices );
void DrawLoop( const RageVertex v[], int iNumVerts, float LineWidth );
void DrawLoop_LinesAndPoints( const RageVertex v[], int iNumVerts, float LineWidth );
void DrawLoop_Polys( const RageVertex v[], int iNumVerts, float LineWidth );
+2
View File
@@ -299,6 +299,7 @@ void Screen::ClearMessageQueue( const ScreenMessage SM )
#include "ScreenSelectCharacter.h"
#include "ScreenRaveOptions.h"
#include "ScreenSelectMode.h"
#include "ScreenBackgroundOptions.h"
Screen* Screen::Create( CString sClassName )
{
@@ -363,6 +364,7 @@ Screen* Screen::Create( CString sClassName )
IF_RETURN( ScreenCredits );
IF_RETURN( ScreenSelectCharacter );
IF_RETURN( ScreenRaveOptions );
IF_RETURN( ScreenBackgroundOptions );
RageException::Throw( "Invalid Screen class name '%s'", sClassName.c_str() );
}
+83
View File
@@ -0,0 +1,83 @@
#include "global.h"
/*
-----------------------------------------------------------------------------
Class: ScreenBackgroundOptions
Desc: See header.
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
Chris Danford
Chris Gomez
-----------------------------------------------------------------------------
*/
#include "ScreenBackgroundOptions.h"
#include "RageTextureManager.h"
#include "RageUtil.h"
#include "RageSoundManager.h"
#include "ScreenManager.h"
#include "PrefsManager.h"
#include "GameConstantsAndTypes.h"
#include "StepMania.h"
#include "PrefsManager.h"
#include "RageLog.h"
#include "ThemeManager.h"
enum {
BO_MODE,
BO_BRIGHTNESS,
BO_DANGER,
BO_DANCING_CHARACTERS,
NUM_BACKGROUND_OPTIONS_LINES
};
OptionRow g_BackgroundOptionsLines[NUM_BACKGROUND_OPTIONS_LINES] = {
OptionRow( "Mode", "OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES" ),
OptionRow( "Brightness", "0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%" ),
OptionRow( "Danger", "HIDE","SHOW" ),
OptionRow( "Dancing\nCharacters", "HIDE","SHOW" )
};
ScreenBackgroundOptions::ScreenBackgroundOptions() :
ScreenOptions("ScreenBackgroundOptions",false)
{
LOG->Trace( "ScreenBackgroundOptions::ScreenBackgroundOptions()" );
Init(
INPUTMODE_BOTH,
g_BackgroundOptionsLines,
NUM_BACKGROUND_OPTIONS_LINES,
false, true );
m_Menu.m_MenuTimer.Disable();
SOUNDMAN->PlayMusic( THEME->GetPathToS("ScreenMachineOptions music") );
}
void ScreenBackgroundOptions::ImportOptions()
{
m_iSelectedOption[0][BO_MODE] = PREFSMAN->m_BackgroundMode;
m_iSelectedOption[0][BO_BRIGHTNESS] = (int)( PREFSMAN->m_fBGBrightness*10+0.5f );
m_iSelectedOption[0][BO_DANGER] = PREFSMAN->m_bShowDanger ? 1:0;
m_iSelectedOption[0][BO_DANCING_CHARACTERS] = PREFSMAN->m_bShowDancingCharacters? 1:0;
}
void ScreenBackgroundOptions::ExportOptions()
{
(int&)PREFSMAN->m_BackgroundMode = m_iSelectedOption[0][BO_MODE];
PREFSMAN->m_fBGBrightness = m_iSelectedOption[0][BO_BRIGHTNESS] / 10.0f;
PREFSMAN->m_bShowDanger = m_iSelectedOption[0][BO_DANGER] == 1;
PREFSMAN->m_bShowDancingCharacters = m_iSelectedOption[0][BO_DANCING_CHARACTERS] == 1;
}
void ScreenBackgroundOptions::GoToPrevState()
{
SCREENMAN->SetNewScreen( "ScreenOptionsMenu" );
}
void ScreenBackgroundOptions::GoToNextState()
{
PREFSMAN->SaveGlobalPrefsToDisk();
GoToPrevState();
}
+26
View File
@@ -0,0 +1,26 @@
/*
-----------------------------------------------------------------------------
File: ScreenBackgroundOptions
Desc: Select a song.
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
-----------------------------------------------------------------------------
*/
#include "ScreenOptions.h"
class ScreenBackgroundOptions : public ScreenOptions
{
public:
ScreenBackgroundOptions();
private:
void ImportOptions();
void ExportOptions();
void GoToNextState();
void GoToPrevState();
};
-12
View File
@@ -25,10 +25,7 @@
enum {
GO_BGMODE,
GO_BGBRIGHTNESS,
GO_BGIFNOBANNER,
GO_SHOW_DANGER,
GO_SOLO_SINGLE,
GO_HIDDEN_SONGS,
GO_EASTER_EGGS,
@@ -38,10 +35,7 @@ enum {
};
OptionRow g_GameplayOptionsLines[NUM_GAMEPLAY_OPTIONS_LINES] = {
OptionRow( "Background\nMode", "OFF","ANIMATIONS","VISUALIZATIONS","RANDOM MOVIES" ),
OptionRow( "Background\nBrightness","0%","10%","20%","30%","40%","50%","60%","70%","80%","90%","100%" ),
OptionRow( "BG For\nBanner", "NO", "YES (slow)" ),
OptionRow( "Show\nDanger", "OFF","ON" ),
OptionRow( "Solo\nSingles", "OFF","ON" ),
OptionRow( "Hidden\nSongs", "OFF","ON" ),
OptionRow( "Easter\nEggs", "OFF","ON" ),
@@ -66,10 +60,7 @@ ScreenGameplayOptions::ScreenGameplayOptions() :
void ScreenGameplayOptions::ImportOptions()
{
m_iSelectedOption[0][GO_BGMODE] = PREFSMAN->m_BackgroundMode;
m_iSelectedOption[0][GO_BGBRIGHTNESS] = (int)( PREFSMAN->m_fBGBrightness*10+0.5f );
m_iSelectedOption[0][GO_BGIFNOBANNER] = PREFSMAN->m_bUseBGIfNoBanner ? 1:0;
m_iSelectedOption[0][GO_SHOW_DANGER] = PREFSMAN->m_bShowDanger ? 1:0;
m_iSelectedOption[0][GO_SOLO_SINGLE] = PREFSMAN->m_bSoloSingle ? 1:0;
m_iSelectedOption[0][GO_HIDDEN_SONGS] = PREFSMAN->m_bHiddenSongs ? 1:0;
m_iSelectedOption[0][GO_EASTER_EGGS] = PREFSMAN->m_bEasterEggs ? 1:0;
@@ -79,10 +70,7 @@ void ScreenGameplayOptions::ImportOptions()
void ScreenGameplayOptions::ExportOptions()
{
(int&)PREFSMAN->m_BackgroundMode = m_iSelectedOption[0][GO_BGMODE];
PREFSMAN->m_fBGBrightness = m_iSelectedOption[0][GO_BGBRIGHTNESS] / 10.0f;
PREFSMAN->m_bUseBGIfNoBanner = m_iSelectedOption[0][GO_BGIFNOBANNER] == 1;
PREFSMAN->m_bShowDanger = m_iSelectedOption[0][GO_SHOW_DANGER] == 1;
PREFSMAN->m_bSoloSingle = m_iSelectedOption[0][GO_SOLO_SINGLE] == 1;
PREFSMAN->m_bHiddenSongs = m_iSelectedOption[0][GO_HIDDEN_SONGS] == 1;
PREFSMAN->m_bEasterEggs = m_iSelectedOption[0][GO_EASTER_EGGS] == 1;
+3
View File
@@ -29,6 +29,7 @@
enum {
OM_APPEARANCE,
OM_AUTOGEN,
OM_BACKGROUND,
OM_CONFIG_KEY_JOY,
OM_INPUT,
OM_GAMEPLAY,
@@ -41,6 +42,7 @@ enum {
OptionRow g_OptionsMenuLines[NUM_OPTIONS_MENU_LINES] = {
OptionRow( "", "Appearance Options" ),
OptionRow( "", "Autogen Options" ),
OptionRow( "", "Background Options" ),
OptionRow( "", "Config Key/Joy Mappings" ),
OptionRow( "", "Input Options" ),
OptionRow( "", "Gameplay Options" ),
@@ -94,6 +96,7 @@ void ScreenOptionsMenu::GoToNextState()
{
case OM_APPEARANCE: SCREENMAN->SetNewScreen("ScreenAppearanceOptions"); break;
case OM_AUTOGEN: SCREENMAN->SetNewScreen("ScreenAutogenOptions"); break;
case OM_BACKGROUND: SCREENMAN->SetNewScreen("ScreenBackgroundOptions"); break;
case OM_CONFIG_KEY_JOY: SCREENMAN->SetNewScreen("ScreenMapControllers"); break;
case OM_GAMEPLAY: SCREENMAN->SetNewScreen("ScreenGameplayOptions"); break;
case OM_GRAPHIC: SCREENMAN->SetNewScreen("ScreenGraphicOptions"); break;
+10 -2
View File
@@ -60,7 +60,7 @@ IntDir=.\../Release6
TargetDir=\stepmania\stepmania
TargetName=StepMania
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -95,7 +95,7 @@ IntDir=.\../Debug6
TargetDir=\stepmania\stepmania
TargetName=StepMania-debug
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -1128,6 +1128,14 @@ SOURCE=.\Combo.h
# End Source File
# Begin Source File
SOURCE=.\DancingCharacters.cpp
# End Source File
# Begin Source File
SOURCE=.\DancingCharacters.h
# End Source File
# Begin Source File
SOURCE=.\GhostArrow.cpp
# End Source File
# Begin Source File
+18 -6
View File
@@ -194,6 +194,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath="ScreenAutogenOptions.h">
</File>
<File
RelativePath="ScreenBackgroundOptions.cpp">
</File>
<File
RelativePath="ScreenBackgroundOptions.h">
</File>
<File
RelativePath="ScreenCaution.cpp">
</File>
@@ -1042,6 +1048,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath="CroppedSprite.h">
</File>
<File
RelativePath="DifficultyIcon.cpp">
</File>
<File
RelativePath="DifficultyIcon.h">
</File>
<File
RelativePath="Transition.cpp">
</File>
@@ -1076,12 +1088,6 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath="CourseEntryDisplay.h">
</File>
<File
RelativePath="DifficultyIcon.cpp">
</File>
<File
RelativePath="DifficultyIcon.h">
</File>
<File
RelativePath="DifficultyMeter.cpp">
</File>
@@ -1272,6 +1278,12 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath=".\Combo.h">
</File>
<File
RelativePath="DancingCharacters.cpp">
</File>
<File
RelativePath="DancingCharacters.h">
</File>
<File
RelativePath=".\GhostArrow.cpp">
</File>