Skip to content

Commit

Permalink
kill autogen
Browse files Browse the repository at this point in the history
  • Loading branch information
MinaciousGrace committed May 5, 2017
1 parent 2525925 commit 6ad869d
Show file tree
Hide file tree
Showing 19 changed files with 12 additions and 483 deletions.
29 changes: 1 addition & 28 deletions src/GameState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2811,33 +2811,8 @@ class LunaGameState: public Luna<GameState>
return 0;
}

static int GetAutoGenFarg(T* p, lua_State *L)
{
int i= IArg(1) - 1;
if(i < 0) { lua_pushnil(L); return 1; }
size_t si= static_cast<size_t>(i);
if(si >= p->m_autogen_fargs.size()) { lua_pushnil(L); return 1; }
lua_pushnumber(L, p->GetAutoGenFarg(si));
return 1;
}
static int SetAutoGenFarg(T* p, lua_State* L)
{
int i= IArg(1) - 1;
if(i < 0)
{
luaL_error(L, "%i is not a valid autogen arg index.", i);
}
float v= FArg(2);
size_t si= static_cast<size_t>(i);
while(si >= p->m_autogen_fargs.size())
{
p->m_autogen_fargs.push_back(0.0f);
}
p->m_autogen_fargs[si]= v;
COMMON_RETURN_SELF;
}

static int IsCourseMode(T* p, lua_State* L) {
static int IsCourseMode(T* p, lua_State* L) { // course mode is dead but leave this here for now -mina
lua_pushboolean(L, false);
return 1;
}
Expand Down Expand Up @@ -2952,8 +2927,6 @@ class LunaGameState: public Luna<GameState>
ADD_METHOD( SetCurrentStyle );
ADD_METHOD( SetCurrentPlayMode );
ADD_METHOD( SetStepsForEditMode );
ADD_METHOD( GetAutoGenFarg );
ADD_METHOD( SetAutoGenFarg );
ADD_METHOD( IsCourseMode );
ADD_METHOD( GetEtternaVersion );
ADD_METHOD( CountNotesSeparately );
Expand Down
9 changes: 0 additions & 9 deletions src/GameState.h
Original file line number Diff line number Diff line change
Expand Up @@ -387,15 +387,6 @@ class GameState

bool m_bDopefish;

// Autogen stuff. This should probably be moved to its own singleton or
// something when autogen is generalized and more customizable. -Kyz
float GetAutoGenFarg(size_t i)
{
if(i >= m_autogen_fargs.size()) { return 0.0f; }
return m_autogen_fargs[i];
}
vector<float> m_autogen_fargs;

// Lua
void PushSelf( lua_State *L );

Expand Down
163 changes: 0 additions & 163 deletions src/NoteDataUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -795,169 +795,6 @@ enum kickbox_limb
{
left_foot, left_fist, right_fist, right_foot, num_kickbox_limbs, invalid_limb= -1
};
void NoteDataUtil::AutogenKickbox(const NoteData& in, NoteData& out, const TimingData& timing, StepsType out_type, int nonrandom_seed)
{
// Each limb has its own list of tracks it is used for. This allows
// abstract handling of the different styles.
// By convention, the lower panels are pushed first. This gives the upper
// panels a higher index, which is mnemonically useful.
vector<vector<int> > limb_tracks(num_kickbox_limbs);
bool have_feet= true;
switch(out_type)
{
case StepsType_kickbox_human:
out.SetNumTracks(4);
limb_tracks[left_foot].push_back(0);
limb_tracks[left_fist].push_back(1);
limb_tracks[right_fist].push_back(2);
limb_tracks[right_foot].push_back(3);
break;
case StepsType_kickbox_quadarm:
out.SetNumTracks(4);
have_feet= false;
limb_tracks[left_fist].push_back(1);
limb_tracks[left_fist].push_back(0);
limb_tracks[right_fist].push_back(2);
limb_tracks[right_fist].push_back(3);
break;
case StepsType_kickbox_insect:
out.SetNumTracks(6);
limb_tracks[left_foot].push_back(0);
limb_tracks[left_fist].push_back(2);
limb_tracks[left_fist].push_back(1);
limb_tracks[right_fist].push_back(3);
limb_tracks[right_fist].push_back(4);
limb_tracks[right_foot].push_back(5);
break;
case StepsType_kickbox_arachnid:
out.SetNumTracks(8);
limb_tracks[left_foot].push_back(0);
limb_tracks[left_foot].push_back(1);
limb_tracks[left_fist].push_back(3);
limb_tracks[left_fist].push_back(2);
limb_tracks[right_fist].push_back(4);
limb_tracks[right_fist].push_back(5);
limb_tracks[right_foot].push_back(7);
limb_tracks[right_foot].push_back(6);
break;
DEFAULT_FAIL(out_type);
}
// prev_limb_panels keeps track of which panel in the track list the limb
// hit last.
vector<size_t> prev_limb_panels(num_kickbox_limbs, 0);
vector<int> panel_repeat_counts(num_kickbox_limbs, 0);
vector<int> panel_repeat_goals(num_kickbox_limbs, 0);
RandomGen rnd(nonrandom_seed);
kickbox_limb prev_limb_used= invalid_limb;
// Kicks are only allowed if there is enough setup/recovery time.
float kick_recover_time= GAMESTATE->GetAutoGenFarg(0);
if(kick_recover_time <= 0.0f)
{
kick_recover_time= .25f;
}
float prev_note_time= -1.0f;
int rows_done= 0;
#define RAND_FIST ((rnd() % 2) ? left_fist : right_fist)
#define RAND_FOOT ((rnd() % 2) ? left_foot : right_foot)
FOREACH_NONEMPTY_ROW_ALL_TRACKS(in, r)
{
// Arbitrary: Drop everything except taps and hold heads out entirely,
// convert holds to tap just the head.
bool has_valid_tapnote= false;
for(int t= 0; t < in.GetNumTracks(); ++t)
{
const TapNote& tn= in.GetTapNote(t, r);
if(tn.type == TapNoteType_Tap || tn.type == TapNoteType_HoldHead)
{
has_valid_tapnote= true;
break;
}
}
if(!has_valid_tapnote) { continue; }
int next_row= r;
bool next_has_valid= false;
while(!next_has_valid)
{
if(!in.GetNextTapNoteRowForAllTracks(next_row))
{
next_row= -1;
next_has_valid= true;
}
else
{
for(int t= 0; t < in.GetNumTracks(); ++t)
{
const TapNote& tn= in.GetTapNote(t, next_row);
if(tn.type == TapNoteType_Tap || tn.type == TapNoteType_HoldHead)
{
next_has_valid= true;
break;
}
}
}
}
float this_note_time= timing.GetElapsedTimeFromBeat(NoteRowToBeat(r));
float next_note_time= timing.GetElapsedTimeFromBeat(NoteRowToBeat(next_row));
kickbox_limb this_limb= invalid_limb;
switch(prev_limb_used)
{
case invalid_limb:
// First limb is arbitrarily always a fist.
this_limb= RAND_FIST;
break;
case left_foot:
case right_foot:
// Multiple kicks in a row are allowed if they're on the same foot.
// Allow the last note to be a kick.
// Switch feet if there's enough time.
if(next_note_time - this_note_time > kick_recover_time * 2.0f)
{
this_limb= prev_limb_used == left_foot ? right_foot : left_foot;
}
else if((next_note_time - this_note_time > kick_recover_time * .5f ||
next_note_time < 0.0f) && (rnd() % 2))
{
this_limb= prev_limb_used;
}
else
{
this_limb= RAND_FIST;
}
break;
case left_fist:
case right_fist:
if(this_note_time - prev_note_time > kick_recover_time &&
(next_note_time - this_note_time > kick_recover_time ||
next_note_time < 0.0f) && have_feet)
{
this_limb= RAND_FOOT;
}
else
{
// Alternate fists.
this_limb= prev_limb_used == left_fist ? right_fist : left_fist;
}
break;
default:
break;
}
size_t this_panel= prev_limb_panels[this_limb];
if(panel_repeat_counts[this_limb] + 1 > panel_repeat_goals[this_limb])
{
// Use a different panel.
this_panel= (this_panel + 1) % limb_tracks[this_limb].size();
panel_repeat_counts[this_limb]= 0;
panel_repeat_goals[this_limb]= (rnd() % 8) + 1;
}
out.SetTapNote(limb_tracks[this_limb][this_panel], r, TAP_ORIGINAL_TAP);
++panel_repeat_counts[this_limb];
prev_limb_panels[this_limb]= this_panel;
prev_note_time= this_note_time;
prev_limb_used= this_limb;
++rows_done;
}
out.RevalidateATIs(vector<int>(), false);
}

struct recent_note
{
Expand Down
5 changes: 0 additions & 5 deletions src/NoteDataUtil.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,6 @@ namespace NoteDataUtil
void LoadTransformedLightsFromTwo( const NoteData &marquee, const NoteData &bass, NoteData &out );
void InsertHoldTails( NoteData &inout );

// Special case so that kickbox can have autogen steps that are playable.
// Hopefully I'll replace this with a good generalized autogen system
// later. -Kyz
void AutogenKickbox(const NoteData& in, NoteData& out, const TimingData& timing, StepsType out_type, int nonrandom_seed);

void CalculateRadarValues( const NoteData &in, float fSongSeconds, RadarValues& out );

/**
Expand Down
2 changes: 0 additions & 2 deletions src/NotesWriterDWI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -417,8 +417,6 @@ bool NotesWriterDWI::Write( const RString &sPath, const Song &out )
for( unsigned i=0; i<vpSteps.size(); i++ )
{
const Steps* pSteps = vpSteps[i];
if( pSteps->IsAutogen() )
continue; // don't save autogen notes

if( !WriteDWINotesTag( f, *pSteps ))
continue;
Expand Down
2 changes: 0 additions & 2 deletions src/NotesWriterJson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,6 @@ bool NotesWriterJson::WriteSong( const RString &sFile, const Song &out, bool bWr
vector<const Steps*> vpSteps;
FOREACH_CONST( Steps*, out.GetAllSteps(), iter )
{
if( (*iter)->IsAutogen() )
continue;
vpSteps.push_back( *iter );
}
JsonUtil::SerializeVectorPointers<Steps>( vpSteps, Serialize, root["Charts"] );
Expand Down
3 changes: 0 additions & 3 deletions src/ScreenEdit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4108,9 +4108,6 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
// If we're not on the same style, let it go.
if( GAMESTATE->m_pCurSteps[PLAYER_1]->m_StepsType != (*s)->m_StepsType )
continue;
// If autogenned, it isn't being saved.
if( (*s)->IsAutogen() )
continue;
// If the notedata has content, let it go.
if( !(*s)->GetNoteData().IsEmpty() )
continue;
Expand Down
6 changes: 0 additions & 6 deletions src/ScreenEditMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,12 +252,6 @@ bool ScreenEditMenu::MenuStart( const InputEventPlus & )
case EditMenuAction_Delete:
{
ASSERT( pSteps != NULL );
if( pSteps->IsAutogen() )
{
SCREENMAN->PlayInvalidSound();
SCREENMAN->SystemMessage( DELETED_AUTOGEN_STEPS.GetValue() );
return true;
}
}
default: break;
}
Expand Down
1 change: 0 additions & 1 deletion src/ScreenHowToPlay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,6 @@ void ScreenHowToPlay::Init()
loaderSSC.LoadFromSimfile( sStepsPath, m_Song, false );
else
loaderSM.LoadFromSimfile( sStepsPath, m_Song, false );
m_Song.AddAutoGenNotes();

const Style* pStyle = GAMESTATE->GetCurrentStyle(PLAYER_INVALID);

Expand Down
2 changes: 0 additions & 2 deletions src/ScreenJukebox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,6 @@ void ScreenJukebox::SetSong()
if( pSteps == NULL )
continue; // skip

if( !PREFSMAN->m_bAutogenSteps && pSteps->IsAutogen())
continue; // skip

// Found something we can use!
GAMESTATE->m_pCurSong.Set( pSong );
Expand Down
Loading

0 comments on commit 6ad869d

Please sign in to comment.