#include "StageEditor_MoveButton.h" #include "StageEditor.h" #include "ToolLib.h" // 各ボタンの座標 #define FRONT_X (100) #define FRONT_Y (0) #define BACK_X (100) #define BACK_Y (40) #define LEFT_X (65) #define LEFT_Y (20) #define RIGHT_X (135) #define RIGHT_Y (20) #define UP_X (0) #define UP_Y (0) #define DOWN_X (0) #define DOWN_Y (40) // ボタンの横幅 #define WIDTH (50) // 移動ボタンの処理を初期化する // 戻り値 : 初期化が成功したかどうか( true:成功した false:失敗した ) bool MoveButton_Initialize( // 移動ボタン情報構造体のアドレス SMoveButtonData *MBData, // ボタンの座標 int x, int y ) { // 各移動用のボタンを作成する MBData->FrontTButton = ToolButton_Create( false, "前移動", x + FRONT_X, y + FRONT_Y, WIDTH, BUTTON_H ); if( MBData->FrontTButton == -1 ) { return false; } MBData->BackTButton = ToolButton_Create( false, "後移動", x + BACK_X, y + BACK_Y, WIDTH, BUTTON_H ); if( MBData->BackTButton == -1 ) { return false; } MBData->LeftTButton = ToolButton_Create( false, "左移動", x + LEFT_X, y + LEFT_Y, WIDTH, BUTTON_H ); if( MBData->LeftTButton == -1 ) { return false; } MBData->RightTButton = ToolButton_Create( false, "右移動", x + RIGHT_X, y + RIGHT_Y, WIDTH, BUTTON_H ); if( MBData->RightTButton == -1 ) { return false; } MBData->UpTButton = ToolButton_Create( false, "上昇", x + UP_X, y + UP_Y, WIDTH, BUTTON_H ); if( MBData->UpTButton == -1 ) { return false; } MBData->DownTButton = ToolButton_Create( false, "下降", x + DOWN_X, y + DOWN_Y, WIDTH, BUTTON_H ); if( MBData->DownTButton == -1 ) { return false; } // 正常終了 return true; } // 移動ボタンと指定の表示状態情報ハンドルを関連付ける void MoveButton_SetVisibleHandle( // 移動ボタン情報構造体のアドレス SMoveButtonData *MBData, // 表示状態情報ハンドル int TVisibleHandle ) { ToolButton_SetVisibleHandle( MBData->FrontTButton, TVisibleHandle ); ToolButton_SetVisibleHandle( MBData->BackTButton, TVisibleHandle ); ToolButton_SetVisibleHandle( MBData->LeftTButton, TVisibleHandle ); ToolButton_SetVisibleHandle( MBData->RightTButton, TVisibleHandle ); ToolButton_SetVisibleHandle( MBData->UpTButton, TVisibleHandle ); ToolButton_SetVisibleHandle( MBData->DownTButton, TVisibleHandle ); } // 移動ボタンの状態推移処理を行う // 戻り値 : 移動したかどうか( true:移動した false:移動していない ) bool MoveButton_Step( // 移動ボタン情報構造体のアドレス SMoveButtonData *MBData, // 移動ボタンの操作で座標を変更する VECTOR 構造体のアドレス VECTOR *TargetPosition, // 移動ボタンで移動する距離 float MoveDistance ) { bool Result = false; // 各移動ボタンが押されたら引数で渡された座標を移動する if( ToolButton_GetRepeatBottom( MBData->FrontTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( g_SEData.Camera.Front, MoveDistance ) ); Result = true; } if( ToolButton_GetRepeatBottom( MBData->BackTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( g_SEData.Camera.Front, -MoveDistance ) ); Result = true; } if( ToolButton_GetRepeatBottom( MBData->LeftTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( g_SEData.Camera.Left, MoveDistance ) ); Result = true; } if( ToolButton_GetRepeatBottom( MBData->RightTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( g_SEData.Camera.Left, -MoveDistance ) ); Result = true; } if( ToolButton_GetRepeatBottom( MBData->UpTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( VGet( 0.0f, 1.0f, 0.0f ), MoveDistance ) ); Result = true; } if( ToolButton_GetRepeatBottom( MBData->DownTButton ) ) { *TargetPosition = VAdd( *TargetPosition, VScale( VGet( 0.0f, 1.0f, 0.0f ), -MoveDistance ) ); Result = true; } // 移動したかどうかを返す return Result; }