Play-/Source/VirtualPad.cpp
2018-04-30 21:01:23 +01:00

132 lines
6.0 KiB
C++

#include "VirtualPad.h"
CVirtualPad::ItemArray CVirtualPad::GetItems(float screenWidth, float screenHeight)
{
ItemArray items;
float uiScale = 1;
if(screenHeight < 480)
{
uiScale = 1.5f;
}
else if(screenHeight < 768)
{
uiScale = 1.25f;
}
float analogStickSize = 96.0f / uiScale;
float lrButtonWidth = 128.0f / uiScale;
float lrButtonHeight = 64.0f / uiScale;
float lr3ButtonSize = 64.0f / uiScale;
float dpadButtonSize = 32.0f / uiScale;
float margin = 32.0f / uiScale;
float padButtonSize = 64.0f / uiScale;
float dpadPosX = margin;
float dpadPosY = screenHeight - (padButtonSize * 3) - margin;
float actionPadPosX = screenWidth - (padButtonSize * 3) - margin;
float actionPadPosY = screenHeight - (padButtonSize * 3) - margin;
float startSelPadPosX = (screenWidth - (padButtonSize * 3)) / 2;
float startSelPadPosY = screenHeight - padButtonSize - margin;
float leftButtonsPosX = margin;
float leftButtonsPosY = margin;
float rightButtonsPosX = screenWidth - (margin + lrButtonWidth);
float rightButtonsPosY = margin;
float leftAnalogStickPosX = dpadPosX + (padButtonSize * 3) + analogStickSize;
float rightAnalogStickPosX = actionPadPosX - (analogStickSize * 2);
float analogStickPosY = screenHeight - (padButtonSize * 3) - margin;
float l3ButtonPosX = startSelPadPosX - (lr3ButtonSize * 2);
float r3ButtonPosX = startSelPadPosX + (padButtonSize * 3) + lr3ButtonSize;
float lr3ButtonPosY = screenHeight - padButtonSize - margin;
items.push_back(CreateButtonItem(
leftButtonsPosX, leftButtonsPosY, leftButtonsPosX + lrButtonWidth, leftButtonsPosY + lrButtonHeight,
PS2::CControllerInfo::L2, "lr", "L2"));
items.push_back(CreateButtonItem(
leftButtonsPosX, leftButtonsPosY + lrButtonHeight, leftButtonsPosX + lrButtonWidth, leftButtonsPosY + lrButtonHeight * 2,
PS2::CControllerInfo::L1, "lr", "L1"));
items.push_back(CreateButtonItem(
rightButtonsPosX, rightButtonsPosY, rightButtonsPosX + lrButtonWidth, rightButtonsPosY + lrButtonHeight,
PS2::CControllerInfo::R2, "lr", "R2"));
items.push_back(CreateButtonItem(
rightButtonsPosX, rightButtonsPosY + lrButtonHeight, rightButtonsPosX + lrButtonWidth, rightButtonsPosY + lrButtonHeight * 2,
PS2::CControllerInfo::R1, "lr", "R1"));
items.push_back(CreateButtonItem(
startSelPadPosX + padButtonSize * 0, startSelPadPosY + padButtonSize / 2, startSelPadPosX + padButtonSize * 1, startSelPadPosY + padButtonSize,
PS2::CControllerInfo::SELECT, "select"));
items.push_back(CreateButtonItem(
startSelPadPosX + padButtonSize * 2, startSelPadPosY + padButtonSize / 2, startSelPadPosX + padButtonSize * 3, startSelPadPosY + padButtonSize,
PS2::CControllerInfo::START, "start"));
items.push_back(CreateButtonItem(
dpadPosX + dpadButtonSize * 2, dpadPosY + dpadButtonSize * 0, dpadPosX + dpadButtonSize * 4, dpadPosY + dpadButtonSize * 3,
PS2::CControllerInfo::DPAD_UP, "up"));
items.push_back(CreateButtonItem(
dpadPosX + dpadButtonSize * 2, dpadPosY + dpadButtonSize * 3, dpadPosX + dpadButtonSize * 4, dpadPosY + dpadButtonSize * 6,
PS2::CControllerInfo::DPAD_DOWN, "down"));
items.push_back(CreateButtonItem(
dpadPosX + dpadButtonSize * 0, dpadPosY + dpadButtonSize * 2, dpadPosX + dpadButtonSize * 3, dpadPosY + dpadButtonSize * 4,
PS2::CControllerInfo::DPAD_LEFT, "left"));
items.push_back(CreateButtonItem(
dpadPosX + dpadButtonSize * 3, dpadPosY + dpadButtonSize * 2, dpadPosX + dpadButtonSize * 6, dpadPosY + dpadButtonSize * 4,
PS2::CControllerInfo::DPAD_RIGHT, "right"));
items.push_back(CreateButtonItem(
actionPadPosX + padButtonSize * 1, actionPadPosY + padButtonSize * 0, actionPadPosX + padButtonSize * 2, actionPadPosY + padButtonSize * 1,
PS2::CControllerInfo::TRIANGLE, "triangle"));
items.push_back(CreateButtonItem(
actionPadPosX + padButtonSize * 1, actionPadPosY + padButtonSize * 2, actionPadPosX + padButtonSize * 2, actionPadPosY + padButtonSize * 3,
PS2::CControllerInfo::CROSS, "cross"));
items.push_back(CreateButtonItem(
actionPadPosX + padButtonSize * 0, actionPadPosY + padButtonSize * 1, actionPadPosX + padButtonSize * 1, actionPadPosY + padButtonSize * 2,
PS2::CControllerInfo::SQUARE, "square"));
items.push_back(CreateButtonItem(
actionPadPosX + padButtonSize * 2, actionPadPosY + padButtonSize * 1, actionPadPosX + padButtonSize * 3, actionPadPosY + padButtonSize * 2,
PS2::CControllerInfo::CIRCLE, "circle"));
items.push_back(CreateAnalogStickItem(
leftAnalogStickPosX, analogStickPosY, leftAnalogStickPosX + analogStickSize, analogStickPosY + analogStickSize,
PS2::CControllerInfo::ANALOG_LEFT_X, PS2::CControllerInfo::ANALOG_LEFT_Y, "analogStick"));
items.push_back(CreateAnalogStickItem(
rightAnalogStickPosX, analogStickPosY, rightAnalogStickPosX + analogStickSize, analogStickPosY + analogStickSize,
PS2::CControllerInfo::ANALOG_RIGHT_X, PS2::CControllerInfo::ANALOG_RIGHT_Y, "analogStick"));
items.push_back(CreateButtonItem(
l3ButtonPosX, lr3ButtonPosY, l3ButtonPosX + lr3ButtonSize, lr3ButtonPosY + lr3ButtonSize,
PS2::CControllerInfo::L3, "lr", "L3"));
items.push_back(CreateButtonItem(
r3ButtonPosX, lr3ButtonPosY, r3ButtonPosX + lr3ButtonSize, lr3ButtonPosY + lr3ButtonSize,
PS2::CControllerInfo::R3, "lr", "R3"));
return items;
}
CVirtualPad::ITEM CVirtualPad::CreateButtonItem(float x1, float y1, float x2, float y2, PS2::CControllerInfo::BUTTON code, const std::string& imageName, const std::string& caption)
{
ITEM item;
item.isAnalog = false;
item.x1 = x1;
item.y1 = y1;
item.x2 = x2;
item.y2 = y2;
item.code0 = code;
item.imageName = imageName;
item.caption = caption;
return item;
}
CVirtualPad::ITEM CVirtualPad::CreateAnalogStickItem(float x1, float y1, float x2, float y2, PS2::CControllerInfo::BUTTON codeX, PS2::CControllerInfo::BUTTON codeY, const std::string& imageName)
{
ITEM item;
item.isAnalog = true;
item.x1 = x1;
item.y1 = y1;
item.x2 = x2;
item.y2 = y2;
item.code0 = codeX;
item.code1 = codeY;
item.imageName = imageName;
return item;
}