#include "StdAfx.h" #include "ShortcutScript.h" #include "Tokenizer.h" cShortCutScript* cShortCutScript::mpSingleton = 0; cShortCutScript::cShortCutScript() { mpSingleton = this; memset( mShortCut, 0, sizeof(mShortCut) ); } cShortCutScript::~cShortCutScript() { } bool cShortCutScript::Init() { if( LoadShortCutScript( "./Script/Resource/Default_QuickSlot.txt" ) == false ) { assert( 0 && "failed to load default shortcut script" ); return false; } return true; } bool cShortCutScript::LoadShortCutScript( const cString& pathName ) { cFileLoader loader; if( loader.Open( pathName, true ) == false ) { assert( 0 && "failed to load LoadShortCutScript" ); return false; } cTokenizer tokenizer( loader.GetBufferPtr(), loader.GetSize(), " \t\r\n", pathName.Cstr() ); cString str; while( tokenizer.IsEnd() == false ) { // Ŭ·¡½º ±¸ºÐ 0 : °øÅë if( tokenizer.GetNext( &str ) == false ) return false; char job = (char)str.ToInt(); // À妽º if( tokenizer.GetNext( &str ) == false ) return false; unsigned long idx = (unsigned long)str.ToInt(); /// ´ÜÃà۸í if( tokenizer.GetNext( &str ) == false ) return false; /// Á¤º¸ ŸÀÔ if( tokenizer.GetNext( &str ) == false ) return false; char type = (char)str.ToInt(); /// ½ºÅ³À妽º if( tokenizer.GetNext( &str ) == false ) return false; unsigned long skillIdx = (unsigned long)str.ToInt(); char shortcutType = eSHORTCUT_NONE; switch( type ) { case 1: shortcutType = eSHORTCUT_COMMU; break; /// Ä¿¹Â´ÏƼ½ºÅ³ case 2: shortcutType = eSHORTCUT_SKILL; break; /// ÀÏ¹Ý ½ºÅ³ default: assert(0); break; } if( job > MAX_JOBKIND ) { assert(0); return false; } if( job == 0 ) { // °øÅëÀº ÀüºÎ »ðÀÔ for( int i = 0; i < MAX_JOBKIND; ++i ) { mShortCut[i][idx].mType = shortcutType; mShortCut[i][idx].mIndex = skillIdx; mShortCut[i][idx].mExData = 0; } } else if( job > 0 ) { // Á÷¾÷ Ư¼º Á¤º¸ »ðÀÔ mShortCut[job-1][idx].mType = shortcutType; mShortCut[job-1][idx].mIndex = skillIdx; mShortCut[job-1][idx].mExData = 0; } } return true; } sShortcut* cShortCutScript::GetShortCut( unsigned long firstjob ) { switch( firstjob ) { case ePLAYER_FIGHTER: { return mShortCut[0]; } break; case ePLAYER_MAGE: { return mShortCut[1]; } break; case ePLAYER_ARMSMAN: { return mShortCut[2]; } break; case ePLAYER_RANGER: { return mShortCut[3]; } break; case ePLAYER_WANDERER: { return mShortCut[4]; } break; case ePLAYER_WARLOCK: { return mShortCut[5]; } break; } assert(0); return NULL; }