#include "AnimationEditor_CharaSelect.h" #include "AnimationEditor_AnimSelect.h" #include "AnimationEditor.h" #include "ToolLib.h" // キャラリストの座標と幅と高さ #define LIST_X (4) #define LIST_Y (0) #define LIST_W (256) #define LIST_H (128) // キャラ選択処理のボタンの基準座標 #define BUTTONS_X (0) #define BUTTONS_Y (4 + TOOL_SCROLLBAR_WIDTH + g_CSData.ButtonSpace.SpaceStart) // キャラ選択処理のボタンを配置する範囲の高さ #define BUTTONS_H (30) // キャラ選択処理情報 typedef struct _SCharaSelectData { // 表示状態情報ハンドル int TVisible; // スペース管理情報ハンドル int TSpaceManage; // 説明文を表示するためのスペース情報 SToolSpace TopSpace; // キャラリスト表示用ウインドウのハンドル int ListTWindow; // キャラリストのハンドル int TList; // 操作ボタン部分用のスペース情報 SToolSpace ButtonSpace; // キャラ選択ボタンのハンドル int ChoiceTButton; } SCharaSelectData; SCharaSelectData g_CSData; // キャラ選択処理の初期化を行う // 戻り値 : 処理が正常に終了したかどうか(true:正常に終了した false:エラーが発生した) bool CharaSelect_Initialize( void ) { int i; SCharaBaseInfo *CBInfo; // スペース管理情報の作成 g_CSData.TSpaceManage = ToolSpaceManage_Create( SCREEN_HEIGHT ); if( g_CSData.TSpaceManage == -1 ) { return false; } // 説明文を表示するスペース用のスペース情報を追加 if( !ToolSpaceManage_AddSpace( g_CSData.TSpaceManage, &g_CSData.TopSpace, TOPSPACE, true ) ) { return false; } // キャラリスト表示用ウインドウの作成 g_CSData.ListTWindow = ToolWindow_Create( g_CSData.TSpaceManage, false, true, false, "キャラクター一覧", LIST_X, LIST_Y, LIST_W, LIST_H, LIST_W, LIST_H ); if( g_CSData.ListTWindow == -1 ) { return false; } // キャラリストの作成 g_CSData.TList = ToolList_Create(); if( g_CSData.TList == -1 ) { return false; } // キャラリストを初期化 ToolList_Initialize( g_CSData.TList, g_CSData.ListTWindow ); // 全てのキャラをリストに追加 for( i = 0; i < EChara_Num; i++, CBInfo++ ) { CBInfo = CharaBase_GetInfo( ( EChara )i ); ToolList_AddObj( g_CSData.TList, "No:%d Name:%s", i, CBInfo->Name ); } // 操作ボタン部分用のスペース情報を追加 if( !ToolSpaceManage_AddSpace( g_CSData.TSpaceManage, &g_CSData.ButtonSpace, BUTTONS_H, true ) ) { return false; } // キャラ選択ボタンの作成 g_CSData.ChoiceTButton = ToolButton_Create( false, "決定", BUTTONS_X + 4, BUTTONS_Y + 0, 50, BUTTON_H ); if( g_CSData.ChoiceTButton == -1 ) { return false; } // 表示状態情報の作成 g_CSData.TVisible = ToolVisible_Create(); if( g_CSData.TVisible == -1 ) { return false; } // キャラ選択処理で使用するウインドウやボタンと表示状態情報ハンドルを関連付ける ToolWindow_SetVisibleHandle( g_CSData.ListTWindow, g_CSData.TVisible ); ToolButton_SetVisibleHandle( g_CSData.ChoiceTButton, g_CSData.TVisible ); // 正常終了 return true; } // キャラ選択処理のキャラリストをセットアップする void CharaSelect_SetupList( void ) { // 現在選択されているキャラの行を選択状態にする ToolList_SetSelectIndex( g_CSData.TList, g_AEData.TargetChara ); // キャラ選択処理の表示をONにする ToolVisible_SetVisible( g_CSData.TVisible, true ); } // キャラ選択処理の状態推移処理を行う // 戻り値 : 処理が正常に終了したかどうか(true:正常に終了した false:エラーが発生した) bool CharaSelect_Step( void ) { // キャラリストの状態が変化した場合は選択キャラを変更する if( ToolList_GetChange( g_CSData.TList, true ) ) { g_AEData.TargetChara = ( EChara )ToolList_GetSelectIndex( g_CSData.TList ); // 新しい選択キャラのアニメーションをセットアップする SetupAttachAnim(); // アニメーションの再生を開始する AnimPlay(); } // キャラ選択ボタンが押されたらアニメーション選択モードに切り替える if( ToolButton_GetClick( g_CSData.ChoiceTButton, true ) ) { // 一旦キャラ選択・アニメーション選択・イベント編集の表示をOFFにする MainUIHide(); // アニメーション選択モードに変更 g_AEData.Mode = EEditMode_AnimSelect; // アニメーション選択処理のアニメーションリストをセットアップする if( !AnimSelect_SetupList() ) { return false; } // 対象のアニメーションを初期化 g_AEData.TargetAnim = g_AEData.EnableAnimList[ 0 ]; // キャラクターモデルにアタッチするアニメーションをセットアップする SetupAttachAnim(); } // 正常終了 return true; } // キャラ選択処理の描画処理を行う void CharaSelect_Render( void ) { // キャラ選択処理の説明文を描画する DrawString( 0, 0, "編集するキャラを選択してください", GetColor( 255,255,255 ), GetColor( 0,0,0 ) ); } // キャラ選択処理の表示状態を変更する void CharaSelect_SetVisible( // 新しい表示状態( true:表示する false:表示しない ) bool Visible ) { ToolVisible_SetVisible( g_CSData.TVisible, Visible ); }