mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge branch 'master' of github.com:hrydgard/native
This commit is contained in:
commit
b3ad7d4584
5 changed files with 35 additions and 26 deletions
|
@ -29,6 +29,9 @@ static JNIEnv *jniEnvUI;
|
||||||
std::string frameCommand;
|
std::string frameCommand;
|
||||||
std::string frameCommandParam;
|
std::string frameCommandParam;
|
||||||
|
|
||||||
|
static uint32_t pad_buttons_async_set;
|
||||||
|
static uint32_t pad_buttons_async_clear;
|
||||||
|
|
||||||
// Android implementation of callbacks to the Java part of the app
|
// Android implementation of callbacks to the Java part of the app
|
||||||
void SystemToast(const char *text) {
|
void SystemToast(const char *text) {
|
||||||
frameCommand = "toast";
|
frameCommand = "toast";
|
||||||
|
@ -107,6 +110,9 @@ extern "C" void Java_com_turboviking_libnative_NativeApp_init
|
||||||
renderer_inited = false;
|
renderer_inited = false;
|
||||||
first_lost = true;
|
first_lost = true;
|
||||||
|
|
||||||
|
pad_buttons_async_set = 0;
|
||||||
|
pad_buttons_async_clear = 0;
|
||||||
|
|
||||||
std::string apkPath = GetJavaString(env, japkpath);
|
std::string apkPath = GetJavaString(env, japkpath);
|
||||||
ILOG("APK path: %s", apkPath.c_str());
|
ILOG("APK path: %s", apkPath.c_str());
|
||||||
VFSRegister("", new ZipAssetReader(apkPath.c_str(), "assets/"));
|
VFSRegister("", new ZipAssetReader(apkPath.c_str(), "assets/"));
|
||||||
|
@ -202,9 +208,11 @@ extern "C" void Java_com_turboviking_libnative_NativeRenderer_displayResize(JNIE
|
||||||
|
|
||||||
extern "C" void Java_com_turboviking_libnative_NativeRenderer_displayRender(JNIEnv *env, jobject obj) {
|
extern "C" void Java_com_turboviking_libnative_NativeRenderer_displayRender(JNIEnv *env, jobject obj) {
|
||||||
if (renderer_inited) {
|
if (renderer_inited) {
|
||||||
UpdateInputState(&input_state);
|
|
||||||
{
|
{
|
||||||
lock_guard guard(input_state.lock);
|
lock_guard guard(input_state.lock);
|
||||||
|
input_state.pad_buttons |= pad_buttons_async_set;
|
||||||
|
input_state.pad_buttons &= ~pad_buttons_async_clear;
|
||||||
|
UpdateInputState(&input_state);
|
||||||
NativeUpdate(input_state);
|
NativeUpdate(input_state);
|
||||||
EndInputState(&input_state);
|
EndInputState(&input_state);
|
||||||
}
|
}
|
||||||
|
@ -266,38 +274,36 @@ extern "C" void JNICALL Java_com_turboviking_libnative_NativeApp_touch
|
||||||
input_state.mouse_valid = true;
|
input_state.mouse_valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void Java_com_turboviking_libnative_NativeApp_keyDown
|
extern "C" void Java_com_turboviking_libnative_NativeApp_keyDown(JNIEnv *, jclass, jint key) {
|
||||||
(JNIEnv *, jclass, jint key) {
|
|
||||||
ILOG("Keydown %i", key);
|
|
||||||
lock_guard guard(input_state.lock);
|
|
||||||
// Need a mechanism to release these.
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 1: // Back
|
case 1: // Back
|
||||||
input_state.pad_buttons |= PAD_BUTTON_BACK;
|
pad_buttons_async_set |= PAD_BUTTON_BACK;
|
||||||
|
pad_buttons_async_clear &= ~PAD_BUTTON_BACK;
|
||||||
break;
|
break;
|
||||||
case 2: // Menu
|
case 2: // Menu
|
||||||
input_state.pad_buttons |= PAD_BUTTON_MENU;
|
pad_buttons_async_set |= PAD_BUTTON_MENU;
|
||||||
|
pad_buttons_async_clear &= ~PAD_BUTTON_MENU;
|
||||||
break;
|
break;
|
||||||
case 3: // Search
|
case 3: // Search
|
||||||
input_state.pad_buttons |= PAD_BUTTON_A;
|
pad_buttons_async_set |= PAD_BUTTON_A;
|
||||||
|
pad_buttons_async_clear &= ~PAD_BUTTON_A;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void Java_com_turboviking_libnative_NativeApp_keyUp
|
extern "C" void Java_com_turboviking_libnative_NativeApp_keyUp(JNIEnv *, jclass, jint key) {
|
||||||
(JNIEnv *, jclass, jint key) {
|
|
||||||
ILOG("Keyup %i", key);
|
|
||||||
lock_guard guard(input_state.lock);
|
|
||||||
// Need a mechanism to release these.
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 1: // Back
|
case 1: // Back
|
||||||
input_state.pad_buttons &= ~PAD_BUTTON_BACK;
|
pad_buttons_async_set &= ~PAD_BUTTON_BACK;
|
||||||
|
pad_buttons_async_clear |= PAD_BUTTON_BACK;
|
||||||
break;
|
break;
|
||||||
case 2: // Menu
|
case 2: // Menu
|
||||||
input_state.pad_buttons &= ~PAD_BUTTON_MENU;
|
pad_buttons_async_set &= ~PAD_BUTTON_MENU;
|
||||||
|
pad_buttons_async_clear |= PAD_BUTTON_MENU;
|
||||||
break;
|
break;
|
||||||
case 3: // Search
|
case 3: // Search
|
||||||
input_state.pad_buttons &= ~PAD_BUTTON_A;
|
pad_buttons_async_set &= ~PAD_BUTTON_A;
|
||||||
|
pad_buttons_async_clear |= PAD_BUTTON_A;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
13
ui/ui.cpp
13
ui/ui.cpp
|
@ -140,7 +140,7 @@ int UIButton(int id, const LayoutManager &layout, float w, const char *text, int
|
||||||
|
|
||||||
// Render button
|
// Render button
|
||||||
|
|
||||||
ui_draw2d.DrawImage2GridH(theme.buttonImage, x, y, x + w);
|
ui_draw2d.DrawImage2GridH((txOffset && theme.buttonSelected) ? theme.buttonSelected : theme.buttonImage, x, y, x + w);
|
||||||
ui_draw2d.DrawTextShadow(theme.uiFont, text, x + w/2, y + h/2 + txOffset, 0xFFFFFFFF, ALIGN_HCENTER | ALIGN_VCENTER);
|
ui_draw2d.DrawTextShadow(theme.uiFont, text, x + w/2, y + h/2 + txOffset, 0xFFFFFFFF, ALIGN_HCENTER | ALIGN_VCENTER);
|
||||||
|
|
||||||
uistate.lastwidget = id;
|
uistate.lastwidget = id;
|
||||||
|
@ -361,14 +361,15 @@ int UIList::Do(int id, int x, int y, int w, int h, UIListAdapter *adapter) {
|
||||||
} else if (scrollY < 0.0f) {
|
} else if (scrollY < 0.0f) {
|
||||||
scrollY += 0.3f * -scrollY;
|
scrollY += 0.3f * -scrollY;
|
||||||
}
|
}
|
||||||
lastX = uistate.mousex[0];
|
|
||||||
lastY = uistate.mousey[0];
|
|
||||||
uistate.lastwidget = id;
|
|
||||||
} else {
|
} else {
|
||||||
scrollY = 0.0f;
|
scrollY = 0.0f;
|
||||||
scrolling = false;
|
inertiaY = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastX = uistate.mousex[0];
|
||||||
|
lastY = uistate.mousey[0];
|
||||||
|
uistate.lastwidget = id;
|
||||||
|
|
||||||
// Drawing and item hittesting
|
// Drawing and item hittesting
|
||||||
|
|
||||||
// render items
|
// render items
|
||||||
|
@ -384,7 +385,7 @@ int UIList::Do(int id, int x, int y, int w, int h, UIListAdapter *adapter) {
|
||||||
selected == -1 &&
|
selected == -1 &&
|
||||||
UIRegionHit(k, x, item_y, w, itemHeight, 0)) {
|
UIRegionHit(k, x, item_y, w, itemHeight, 0)) {
|
||||||
selected = i;
|
selected = i;
|
||||||
} else if (scrolling) {
|
} else if (scrolling && canScroll) {
|
||||||
selected = -1;
|
selected = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
ui/ui.h
1
ui/ui.h
|
@ -125,6 +125,7 @@ struct UITheme {
|
||||||
int uiFontSmall;
|
int uiFontSmall;
|
||||||
int uiFontSmaller;
|
int uiFontSmaller;
|
||||||
int buttonImage;
|
int buttonImage;
|
||||||
|
int buttonSelected;
|
||||||
int checkOn;
|
int checkOn;
|
||||||
int checkOff;
|
int checkOff;
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,17 +29,18 @@ void TouchButton::update(InputState &input_state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchButton::draw(DrawBuffer &db, uint32_t color)
|
void TouchButton::draw(DrawBuffer &db, uint32_t color, uint32_t colorOverlay)
|
||||||
{
|
{
|
||||||
float scale = 1.0f;
|
float scale = 1.0f;
|
||||||
if (isDown_) {
|
if (isDown_) {
|
||||||
color |= 0xFF000000;
|
color |= 0xFF000000;
|
||||||
|
colorOverlay |= 0xFF000000;
|
||||||
scale = 2.0f;
|
scale = 2.0f;
|
||||||
}
|
}
|
||||||
// We only mirror background
|
// We only mirror background
|
||||||
db.DrawImageRotated(imageIndex_, x_ + w_/2, y_ + h_/2, scale, rotationAngle_, color, mirror_h_);
|
db.DrawImageRotated(imageIndex_, x_ + w_/2, y_ + h_/2, scale, rotationAngle_, color, mirror_h_);
|
||||||
if (overlayImageIndex_ != -1)
|
if (overlayImageIndex_ != -1)
|
||||||
db.DrawImageRotated(overlayImageIndex_, x_ + w_/2, y_ + h_/2, scale, rotationAngle_, color);
|
db.DrawImageRotated(overlayImageIndex_, x_ + w_/2, y_ + h_/2, scale, rotationAngle_, colorOverlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
TouchStick::TouchStick(const Atlas *atlas, int bgImageIndex, int stickImageIndex, int stick)
|
TouchStick::TouchStick(const Atlas *atlas, int bgImageIndex, int stickImageIndex, int stick)
|
||||||
|
|
|
@ -13,7 +13,7 @@ public:
|
||||||
TouchButton(const Atlas *atlas, int imageIndex, int overlayImageIndex, int button, int rotationAngle = 0, bool mirror_h = false);
|
TouchButton(const Atlas *atlas, int imageIndex, int overlayImageIndex, int button, int rotationAngle = 0, bool mirror_h = false);
|
||||||
|
|
||||||
void update(InputState &input_state);
|
void update(InputState &input_state);
|
||||||
void draw(DrawBuffer &db, uint32_t color);
|
void draw(DrawBuffer &db, uint32_t color, uint32_t colorOverlay);
|
||||||
|
|
||||||
void setPos(float x, float y) {
|
void setPos(float x, float y) {
|
||||||
x_ = x - w_ / 2;
|
x_ = x - w_ / 2;
|
||||||
|
|
Loading…
Add table
Reference in a new issue