Centralized key handling in EmulatorView
This commit is contained in:
parent
e6fe7df468
commit
656a230d06
|
@ -10,4 +10,9 @@
|
|||
|
||||
@interface EmulatorView : GLKView
|
||||
|
||||
- (void)handleKeyDown:(UIButton*)button;
|
||||
- (void)handleKeyUp:(UIButton*)button;
|
||||
|
||||
@property (nonatomic, strong) UIViewController *controllerView;
|
||||
|
||||
@end
|
||||
|
|
|
@ -7,9 +7,37 @@
|
|||
//
|
||||
|
||||
#import "EmulatorView.h"
|
||||
#import "PadViewController.h"
|
||||
|
||||
#include "types.h"
|
||||
|
||||
extern u16 kcode[4];
|
||||
extern u32 vks[4];
|
||||
extern s8 joyx[4],joyy[4];
|
||||
extern u8 rt[4],lt[4];
|
||||
|
||||
#define DC_BTN_C (1)
|
||||
#define DC_BTN_B (1<<1)
|
||||
#define DC_BTN_A (1<<2)
|
||||
#define DC_BTN_START (1<<3)
|
||||
#define DC_DPAD_UP (1<<4)
|
||||
#define DC_DPAD_DOWN (1<<5)
|
||||
#define DC_DPAD_LEFT (1<<6)
|
||||
#define DC_DPAD_RIGHT (1<<7)
|
||||
#define DC_BTN_Z (1<<8)
|
||||
#define DC_BTN_Y (1<<9)
|
||||
#define DC_BTN_X (1<<10)
|
||||
#define DC_BTN_D (1<<11)
|
||||
#define DC_DPAD2_UP (1<<12)
|
||||
#define DC_DPAD2_DOWN (1<<13)
|
||||
#define DC_DPAD2_LEFT (1<<14)
|
||||
#define DC_DPAD2_RIGHT (1<<15)
|
||||
|
||||
#define DC_AXIS_LT (0X10000)
|
||||
#define DC_AXIS_RT (0X10001)
|
||||
#define DC_AXIS_X (0X20000)
|
||||
#define DC_AXIS_Y (0X20001)
|
||||
|
||||
@implementation EmulatorView
|
||||
|
||||
/*
|
||||
|
@ -20,4 +48,85 @@
|
|||
}
|
||||
*/
|
||||
|
||||
- (void)setControlInput:(PadViewController *)input
|
||||
{
|
||||
self.controllerView = input;
|
||||
}
|
||||
|
||||
- (void)handleKeyDown:(UIButton*)button
|
||||
{
|
||||
PadViewController * controller = (PadViewController *)self.controllerView;
|
||||
if (button == controller.img_dpad_l) {
|
||||
kcode[0] &= ~(DC_DPAD_LEFT);
|
||||
}
|
||||
if (button == controller.img_dpad_r) {
|
||||
kcode[0] &= ~(DC_DPAD_RIGHT);
|
||||
}
|
||||
if (button == controller.img_dpad_u) {
|
||||
kcode[0] &= ~(DC_DPAD_UP);
|
||||
}
|
||||
if (button == controller.img_dpad_d) {
|
||||
kcode[0] &= ~(DC_DPAD_DOWN);
|
||||
}
|
||||
if (button == controller.img_abxy_a) {
|
||||
kcode[0] &= ~(DC_BTN_A);
|
||||
}
|
||||
if (button == controller.img_abxy_b) {
|
||||
kcode[0] &= ~(DC_BTN_B);
|
||||
}
|
||||
if (button == controller.img_abxy_x) {
|
||||
kcode[0] &= ~(DC_BTN_X);
|
||||
}
|
||||
if (button == controller.img_abxy_y) {
|
||||
kcode[0] &= ~(DC_BTN_Y);
|
||||
}
|
||||
if (button == controller.img_lt) {
|
||||
kcode[0] &= ~(DC_AXIS_LT);
|
||||
}
|
||||
if (button == controller.img_rt) {
|
||||
kcode[0] &= ~(DC_AXIS_RT);
|
||||
}
|
||||
if (button == controller.img_start) {
|
||||
kcode[0] &= ~(DC_BTN_START);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handleKeyUp:(UIButton*)button
|
||||
{
|
||||
PadViewController * controller = (PadViewController *)self.controllerView;
|
||||
if (button == controller.img_dpad_l) {
|
||||
kcode[0] |= ~(DC_DPAD_LEFT);
|
||||
}
|
||||
if (button == controller.img_dpad_r) {
|
||||
kcode[0] |= ~(DC_DPAD_RIGHT);
|
||||
}
|
||||
if (button == controller.img_dpad_u) {
|
||||
kcode[0] |= ~(DC_DPAD_UP);
|
||||
}
|
||||
if (button == controller.img_dpad_d) {
|
||||
kcode[0] |= ~(DC_DPAD_DOWN);
|
||||
}
|
||||
if (button == controller.img_abxy_a) {
|
||||
kcode[0] |= (DC_BTN_A);
|
||||
}
|
||||
if (button == controller.img_abxy_b) {
|
||||
kcode[0] |= (DC_BTN_B);
|
||||
}
|
||||
if (button == controller.img_abxy_x) {
|
||||
kcode[0] |= (DC_BTN_X);
|
||||
}
|
||||
if (button == controller.img_abxy_y) {
|
||||
kcode[0] |= (DC_BTN_Y);
|
||||
}
|
||||
if (button == controller.img_lt) {
|
||||
kcode[0] |= (DC_AXIS_LT);
|
||||
}
|
||||
if (button == controller.img_rt) {
|
||||
kcode[0] |= (DC_AXIS_RT);
|
||||
}
|
||||
if (button == controller.img_start) {
|
||||
kcode[0] |= (DC_BTN_START);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -11,17 +11,17 @@
|
|||
#import <GameController/GameController.h>
|
||||
#import "iCadeReaderView.h"
|
||||
#import "PadViewController.h"
|
||||
#import "EmulatorView.h"
|
||||
|
||||
@interface ViewController : GLKViewController <iCadeEventDelegate>
|
||||
@interface EmulatorViewController : GLKViewController <iCadeEventDelegate>
|
||||
|
||||
@property NSString* diskImage;
|
||||
@property (nonatomic) iCadeReaderView* iCadeReader;
|
||||
@property (nonatomic) GCController *gController __attribute__((weak_import));
|
||||
@property (nonatomic, strong) id connectObserver;
|
||||
@property (nonatomic, strong) id disconnectObserver;
|
||||
@property (nonatomic, strong) EmulatorView *emuView;
|
||||
|
||||
@property (nonatomic, strong) PadViewController *controllerView;
|
||||
|
||||
- (void)handleKeycode:(UIButton*)button;
|
||||
|
||||
@end
|
||||
|
|
|
@ -16,34 +16,7 @@
|
|||
#include "hw/maple/maple_devs.h"
|
||||
#include "hw/maple/maple_if.h"
|
||||
|
||||
extern u16 kcode[4];
|
||||
extern u32 vks[4];
|
||||
extern s8 joyx[4],joyy[4];
|
||||
extern u8 rt[4],lt[4];
|
||||
|
||||
#define DC_BTN_C (1)
|
||||
#define DC_BTN_B (1<<1)
|
||||
#define DC_BTN_A (1<<2)
|
||||
#define DC_BTN_START (1<<3)
|
||||
#define DC_DPAD_UP (1<<4)
|
||||
#define DC_DPAD_DOWN (1<<5)
|
||||
#define DC_DPAD_LEFT (1<<6)
|
||||
#define DC_DPAD_RIGHT (1<<7)
|
||||
#define DC_BTN_Z (1<<8)
|
||||
#define DC_BTN_Y (1<<9)
|
||||
#define DC_BTN_X (1<<10)
|
||||
#define DC_BTN_D (1<<11)
|
||||
#define DC_DPAD2_UP (1<<12)
|
||||
#define DC_DPAD2_DOWN (1<<13)
|
||||
#define DC_DPAD2_LEFT (1<<14)
|
||||
#define DC_DPAD2_RIGHT (1<<15)
|
||||
|
||||
#define DC_AXIS_LT (0X10000)
|
||||
#define DC_AXIS_RT (0X10001)
|
||||
#define DC_AXIS_X (0X20000)
|
||||
#define DC_AXIS_Y (0X20001)
|
||||
|
||||
@interface ViewController () {
|
||||
@interface EmulatorViewController () {
|
||||
}
|
||||
|
||||
@property (strong, nonatomic) EAGLContext *context;
|
||||
|
@ -62,7 +35,7 @@ bool gles_init();
|
|||
extern "C" int reicast_main(int argc, char* argv[]);
|
||||
|
||||
|
||||
@implementation ViewController
|
||||
@implementation EmulatorViewController
|
||||
|
||||
-(void)emuThread
|
||||
{
|
||||
|
@ -97,9 +70,11 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
NSLog(@"Failed to create ES context");
|
||||
}
|
||||
|
||||
GLKView *view = (GLKView *)self.view;
|
||||
view.context = self.context;
|
||||
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
|
||||
self.emuView = (EmulatorView *)self.view;
|
||||
self.emuView.context = self.context;
|
||||
self.emuView.drawableDepthFormat = GLKViewDrawableDepthFormat24;
|
||||
|
||||
[self.controllerView setControlOutput:self.emuView];
|
||||
|
||||
self.connectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
|
||||
if ([[GCController controllers] count] == 1) {
|
||||
|
@ -179,65 +154,6 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
|
||||
}
|
||||
|
||||
- (void)handleKeycode:(UIButton*)button
|
||||
{
|
||||
if (button == self.controllerView.img_dpad_l) {
|
||||
kcode[0] &= ~(DC_DPAD_LEFT);
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_LEFT);
|
||||
}
|
||||
if (button == self.controllerView.img_dpad_r) {
|
||||
kcode[0] &= ~(DC_DPAD_RIGHT);
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_RIGHT);
|
||||
}
|
||||
if (button == self.controllerView.img_dpad_u) {
|
||||
kcode[0] &= ~(DC_DPAD_UP);
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_UP);
|
||||
}
|
||||
if (button == self.controllerView.img_dpad_d) {
|
||||
kcode[0] &= ~(DC_DPAD_DOWN);
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_DOWN);
|
||||
}
|
||||
if (button == self.controllerView.img_abxy_a) {
|
||||
kcode[0] &= ~(DC_BTN_A);
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_A);
|
||||
}
|
||||
if (button == self.controllerView.img_abxy_b) {
|
||||
kcode[0] &= ~(DC_BTN_B);
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_B);
|
||||
}
|
||||
if (button == self.controllerView.img_abxy_x) {
|
||||
kcode[0] &= ~(DC_BTN_X);
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_X);
|
||||
}
|
||||
if (button == self.controllerView.img_abxy_y) {
|
||||
kcode[0] &= ~(DC_BTN_Y);
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_Y);
|
||||
}
|
||||
if (button == self.controllerView.img_lt) {
|
||||
kcode[0] &= ~(DC_AXIS_LT);
|
||||
} else {
|
||||
kcode[0] |= (DC_AXIS_LT);
|
||||
}
|
||||
if (button == self.controllerView.img_rt) {
|
||||
kcode[0] &= ~(DC_AXIS_RT);
|
||||
} else {
|
||||
kcode[0] |= (DC_AXIS_RT);
|
||||
}
|
||||
if (button == self.controllerView.img_start) {
|
||||
kcode[0] &= ~(DC_BTN_START);
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_START);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)toggleHardwareController:(BOOL)useHardware {
|
||||
if (useHardware) {
|
||||
// [self.controllerView hideController];
|
||||
|
@ -245,52 +161,52 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
if (self.gController.gamepad) {
|
||||
[self.gController.gamepad.buttonA setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_A);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_a];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_A);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_a];
|
||||
}
|
||||
}];
|
||||
[self.gController.gamepad.buttonB setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_B);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_b];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_B);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_b];
|
||||
}
|
||||
}];
|
||||
[self.gController.gamepad.buttonX setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_X);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_x];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_X);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_x];
|
||||
}
|
||||
}];
|
||||
[self.gController.gamepad.buttonY setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_Y);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_y];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_Y);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_y];
|
||||
}
|
||||
}];
|
||||
[self.gController.gamepad.dpad setValueChangedHandler:^(GCControllerDirectionPad *dpad, float xValue, float yValue){
|
||||
if (xValue >= 0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_RIGHT);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_r];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_RIGHT);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_r];
|
||||
}
|
||||
if (xValue <= -0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_LEFT);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_l];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_LEFT);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_l];
|
||||
}
|
||||
if (yValue >= 0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_UP);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_u];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_UP);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_u];
|
||||
}
|
||||
if (yValue <= -0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_DOWN);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_d];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_DOWN);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_d];
|
||||
}
|
||||
}];
|
||||
//Add controller pause handler here
|
||||
|
@ -298,52 +214,52 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
if (self.gController.extendedGamepad) {
|
||||
[self.gController.extendedGamepad.buttonA setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_A);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_a];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_A);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_a];
|
||||
}
|
||||
}];
|
||||
[self.gController.extendedGamepad.buttonB setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_B);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_b];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_B);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_b];
|
||||
}
|
||||
}];
|
||||
[self.gController.extendedGamepad.buttonX setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_X);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_x];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_X);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_x];
|
||||
}
|
||||
}];
|
||||
[self.gController.extendedGamepad.buttonY setValueChangedHandler:^(GCControllerButtonInput *button, float value, BOOL pressed) {
|
||||
if (pressed && value >= 0.1) {
|
||||
kcode[0] &= ~(DC_BTN_Y);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_abxy_y];
|
||||
} else {
|
||||
kcode[0] |= (DC_BTN_Y);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_abxy_y];
|
||||
}
|
||||
}];
|
||||
[self.gController.extendedGamepad.dpad setValueChangedHandler:^(GCControllerDirectionPad *dpad, float xValue, float yValue){
|
||||
if (xValue >= 0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_RIGHT);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_r];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_RIGHT);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_r];
|
||||
}
|
||||
if (xValue <= -0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_LEFT);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_l];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_LEFT);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_l];
|
||||
}
|
||||
if (yValue >= 0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_UP);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_u];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_UP);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_u];
|
||||
}
|
||||
if (yValue <= -0.1) {
|
||||
kcode[0] &= ~(DC_DPAD_DOWN);
|
||||
[self.emuView handleKeyDown:self.controllerView.img_dpad_d];
|
||||
} else {
|
||||
kcode[0] |= ~(DC_DPAD_DOWN);
|
||||
[self.emuView handleKeyUp:self.controllerView.img_dpad_d];
|
||||
}
|
||||
}];
|
||||
[self.gController.extendedGamepad.leftThumbstick.xAxis setValueChangedHandler:^(GCControllerAxisInput *axis, float value){
|
||||
|
|
|
@ -70,11 +70,11 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="-692" y="-692"/>
|
||||
</scene>
|
||||
<!--View Controller-->
|
||||
<!--Emulator View Controller-->
|
||||
<scene sceneID="h6I-2s-MCy">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="emulatorView" wantsFullScreenLayout="YES" id="WRM-pR-XCP" customClass="ViewController" sceneMemberID="viewController">
|
||||
<view key="view" userInteractionEnabled="NO" contentMode="scaleToFill" id="JQE-db-ZiC" customClass="EmulatorView">
|
||||
<viewController storyboardIdentifier="emulatorView" wantsFullScreenLayout="YES" id="WRM-pR-XCP" customClass="EmulatorViewController" sceneMemberID="viewController">
|
||||
<view key="view" multipleTouchEnabled="YES" contentMode="scaleToFill" id="JQE-db-ZiC" customClass="EmulatorView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="568" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
|
|
|
@ -24,8 +24,11 @@
|
|||
@property (nonatomic, strong) IBOutlet UIButton* img_rt;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_start;
|
||||
|
||||
@property (nonatomic, strong) EmulatorView *handler;
|
||||
|
||||
- (void) showController:(UIView *)parentView;
|
||||
- (void) hideController;
|
||||
- (BOOL) isControllerVisible;
|
||||
- (void) setControlOutput:(EmulatorView *)output;
|
||||
|
||||
@end
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
//
|
||||
|
||||
#import "PadViewController.h"
|
||||
#import "EmulatorViewController.h"
|
||||
#import "EmulatorView.h"
|
||||
|
||||
@interface PadViewController ()
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
|||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view from its nib.
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
|
@ -30,7 +29,8 @@
|
|||
[parentView addSubview:self.view];
|
||||
}
|
||||
|
||||
- (void)hideController {
|
||||
- (void)hideController
|
||||
{
|
||||
[self.view removeFromSuperview];
|
||||
}
|
||||
|
||||
|
@ -41,10 +41,19 @@
|
|||
return NO;
|
||||
}
|
||||
|
||||
- (IBAction)keycode:(id)sender
|
||||
- (void)setControlOutput:(EmulatorView *)output
|
||||
{
|
||||
ViewController *emulatorView = [[ViewController alloc] init];
|
||||
[emulatorView handleKeycode:(UIButton*)sender];
|
||||
self.handler = output;
|
||||
}
|
||||
|
||||
- (IBAction)keycodeDown:(id)sender
|
||||
{
|
||||
[self.handler handleKeyDown:(UIButton*)sender];
|
||||
}
|
||||
|
||||
- (IBAction)keycodeUp:(id)sender
|
||||
{
|
||||
[self.handler handleKeyUp:(UIButton*)sender];
|
||||
}
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="3M7-1s-N5r">
|
||||
<view multipleTouchEnabled="YES" contentMode="scaleToFill" id="3M7-1s-N5r">
|
||||
<rect key="frame" x="0.0" y="0.0" width="568" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
|
@ -29,28 +29,30 @@
|
|||
<rect key="frame" x="0.0" y="0.0" width="80" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="8Gl-Iv-u8L" userLabel="LT-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="8Gl-Iv-u8L" userLabel="LT-Button">
|
||||
<rect key="frame" x="0.0" y="0.0" width="80" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="a2O-ps-Xkb"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="34L-sO-g81"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="iDv-U3-6OX"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="RTrigger.png" id="Cjn-zx-eSs">
|
||||
<rect key="frame" x="488" y="0.0" width="80" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="V8J-vG-dlF" userLabel="RT-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="V8J-vG-dlF" userLabel="RT-Button">
|
||||
<rect key="frame" x="488" y="0.0" width="80" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="mjN-y6-pnM"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="vPf-qF-m13"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="hQh-8f-5jG"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="JoystickButton.png" id="ivh-8r-bw3" userLabel="JoystickThumbpad.png">
|
||||
|
@ -65,102 +67,111 @@
|
|||
<rect key="frame" x="0.0" y="44" width="140" height="140"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="rp6-Nd-1qa" userLabel="L-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="rp6-Nd-1qa" userLabel="L-Button">
|
||||
<rect key="frame" x="0.0" y="94" width="46" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="rxe-GW-d3m"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="3Yw-AP-xVf"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="5gI-j0-ANf"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="CVH-hw-R8F" userLabel="R-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="CVH-hw-R8F" userLabel="R-Button">
|
||||
<rect key="frame" x="94" y="94" width="46" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="qEi-9T-5Iv"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="2Dv-zb-f8V"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="woi-3Y-IfD"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WMD-Fv-ibu" userLabel="U-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WMD-Fv-ibu" userLabel="U-Button">
|
||||
<rect key="frame" x="50" y="44" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="ui8-hf-7zE"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="kT6-yy-ZtY"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="R0R-dl-GAG"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="s7g-nq-lRU" userLabel="D-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="s7g-nq-lRU" userLabel="D-Button">
|
||||
<rect key="frame" x="50" y="144" width="40" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="5o3-Va-rA2"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="Wck-mk-4Py"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="Qox-hz-p3A"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ABXYPad.png" id="xbP-E4-fCE">
|
||||
<rect key="frame" x="408" y="159" width="160" height="161"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iwO-7q-c8H" userLabel="X-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iwO-7q-c8H" userLabel="X-Button">
|
||||
<rect key="frame" x="408" y="210" width="60" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="oaf-qS-PRe"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="IBH-TK-vfV"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="dhr-NT-lcF"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="7LB-OY-vh3" userLabel="B-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="7LB-OY-vh3" userLabel="B-Button">
|
||||
<rect key="frame" x="508" y="210" width="60" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="NSp-5e-auj"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="dhg-58-L8C"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="zqg-KK-Wxb"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="hGZ-v7-VA5" userLabel="Y-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="hGZ-v7-VA5" userLabel="Y-Button">
|
||||
<rect key="frame" x="458" y="159" width="60" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="NOd-Vt-P6x"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="tyb-H4-TqJ"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="oai-Xb-scl"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iKO-3z-Ias" userLabel="A-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="iKO-3z-Ias" userLabel="A-Button">
|
||||
<rect key="frame" x="458" y="260" width="60" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="SIh-0L-Dn0"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="Ysa-m4-KnN"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="MTf-ND-WNy"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Start.png" id="9K0-cV-7zu">
|
||||
<rect key="frame" x="244" y="272" width="80" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="VtI-tC-PSX" userLabel="S-Button">
|
||||
<button opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="VtI-tC-PSX" userLabel="S-Button">
|
||||
<rect key="frame" x="257" y="272" width="54" height="40"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="keycode:" destination="-2" eventType="touchUpInside" id="H7E-wo-Hc9"/>
|
||||
<action selector="keycodeDown:" destination="-1" eventType="touchDown" id="kwd-jB-5Wn"/>
|
||||
<action selector="keycodeUp:" destination="-1" eventType="touchUpInside" id="gHx-tA-QlF"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
NSIndexPath* indexPath = self.tableView.indexPathForSelectedRow;
|
||||
NSString* filePath = [self.diskImages objectAtIndex: indexPath.row];
|
||||
NSString* diskPath = [[self documents].path stringByAppendingPathComponent: filePath];
|
||||
ViewController* emulatorView = segue.destinationViewController;
|
||||
EmulatorViewController* emulatorView = segue.destinationViewController;
|
||||
emulatorView.diskImage = diskPath;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue