Preliminary file list and controller overlay support
This commit is contained in:
parent
4fd15e515d
commit
5f0d58dc65
|
@ -10,10 +10,14 @@
|
|||
#import <GLKit/GLKit.h>
|
||||
#import <GameController/GameController.h>
|
||||
#import "iCadeReaderView.h"
|
||||
#import "VirtualViewController.h"
|
||||
|
||||
@interface ViewController : GLKViewController <iCadeEventDelegate>
|
||||
|
||||
@property (nonatomic) iCadeReaderView* iCadeReader;
|
||||
@property (nonatomic) GCController *gController __attribute__((weak_import));
|
||||
@property (nonatomic, strong) id connectObserver;
|
||||
@property (nonatomic, strong) id disconnectObserver;
|
||||
@property (nonatomic, strong) VirtualViewController *controller;
|
||||
|
||||
@end
|
||||
|
|
|
@ -81,6 +81,8 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.controller = [[VirtualViewController alloc] initWithNibName:@"VirtualViewController" bundle:nil];
|
||||
|
||||
self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
|
||||
|
||||
|
@ -94,24 +96,32 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
|
||||
self.connectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
|
||||
if ([[GCController controllers] count] == 1) {
|
||||
if ([self.controller pollController]) {
|
||||
[self.controller hideController];
|
||||
}
|
||||
[self toggleHardwareController:YES];
|
||||
}
|
||||
}];
|
||||
self.disconnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidDisconnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
|
||||
if (![[GCController controllers] count]) {
|
||||
[self toggleHardwareController:NO];
|
||||
if (![self.controller pollController]) {
|
||||
[self.controller showController:self.view];
|
||||
}
|
||||
}
|
||||
}];
|
||||
|
||||
if ([[GCController controllers] count]) {
|
||||
[self toggleHardwareController:YES];
|
||||
}
|
||||
|
||||
} else if (![self.controller pollController]) {
|
||||
[self.controller showController:self.view];
|
||||
}
|
||||
|
||||
self.iCadeReader = [[iCadeReaderView alloc] init];
|
||||
[self.view addSubview:self.iCadeReader];
|
||||
self.iCadeReader.delegate = self;
|
||||
self.iCadeReader.active = YES;
|
||||
|
||||
|
||||
[self setupGL];
|
||||
|
||||
if (!gles_init())
|
||||
|
@ -124,7 +134,10 @@ extern "C" int reicast_main(int argc, char* argv[]);
|
|||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
{
|
||||
if ([self.controller pollController]) {
|
||||
[self.controller hideController];
|
||||
}
|
||||
[self tearDownGL];
|
||||
|
||||
if ([EAGLContext currentContext] == self.context) {
|
||||
|
|
|
@ -1,9 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="WRM-pR-XCP">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="yfj-cJ-rTl">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Paths View Controller-->
|
||||
<scene sceneID="5MJ-pk-fyh">
|
||||
<objects>
|
||||
<tableViewController id="yfj-cJ-rTl" customClass="PathsViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="gOJ-IW-1Nw">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="jQL-xa-pqV" style="IBUITableViewCellStyleDefault" id="PlF-ZX-S1T">
|
||||
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="PlF-ZX-S1T" id="65y-zb-4x3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="287" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jQL-xa-pqV">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<connections>
|
||||
<segue destination="WRM-pR-XCP" kind="push" identifier="emulatorView" id="xKH-h0-TDD"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="yfj-cJ-rTl" id="dee-2Q-9Vs"/>
|
||||
<outlet property="delegate" destination="yfj-cJ-rTl" id="N6Z-36-sVZ"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="bxI-mN-0p6" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-20" y="-612"/>
|
||||
</scene>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="h6I-2s-MCy">
|
||||
<objects>
|
||||
|
@ -14,6 +53,7 @@
|
|||
<color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<gestureRecognizers/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="FmO-Yo-nVN"/>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
</viewController>
|
||||
|
|
|
@ -11,4 +11,6 @@
|
|||
@interface PathsViewController : UITableViewController
|
||||
@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton;
|
||||
|
||||
@property (nonatomic, strong) NSMutableArray* diskImages;
|
||||
|
||||
@end
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#import "PathsViewController.h"
|
||||
#import "SWRevealViewController.h"
|
||||
#import "EmulatorViewController.h"
|
||||
|
||||
@interface PathsViewController ()
|
||||
|
||||
|
@ -32,7 +33,7 @@
|
|||
// Set the side bar button action. When it's tapped, it'll show up the sidebar.
|
||||
_sidebarButton.target = self.revealViewController;
|
||||
_sidebarButton.action = @selector(revealToggle:);
|
||||
|
||||
|
||||
// Set the gesture
|
||||
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
|
||||
// Uncomment the following line to preserve selection between presentations.
|
||||
|
@ -40,6 +41,13 @@
|
|||
|
||||
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
|
||||
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
|
||||
|
||||
self.diskImages = [[NSMutableArray alloc] init];
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString *documents = [paths objectAtIndex:0];
|
||||
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documents error:NULL];
|
||||
NSPredicate *filter = [NSPredicate predicateWithFormat:@"self ENDSWITH '.chd'"];
|
||||
self.diskImages = [NSMutableArray arrayWithArray:[files filteredArrayUsingPredicate:filter]];
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
|
@ -50,6 +58,47 @@
|
|||
|
||||
#pragma mark - Table view data source
|
||||
|
||||
// TODO: paths view controller logic
|
||||
-(NSInteger)numberOfSectionsInTableView: (UITableView*)tableView
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
-(NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger)section
|
||||
{
|
||||
return [self.diskImages count];
|
||||
}
|
||||
|
||||
-(NSString*)tableView: (UITableView*)tableView titleForHeaderInSection: (NSInteger)section
|
||||
{
|
||||
return @"";
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return 160;
|
||||
// Assign the specific cell height to prevent issues with custom size
|
||||
}
|
||||
|
||||
-(UITableViewCell*)tableView: (UITableView*)tableView cellForRowAtIndexPath: (NSIndexPath*)indexPath
|
||||
{
|
||||
static NSString *CellIdentifier = @"Cell";
|
||||
|
||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
|
||||
if(cell == nil)
|
||||
{
|
||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: CellIdentifier];
|
||||
}
|
||||
|
||||
assert(indexPath.row < [self.diskImages count]);
|
||||
NSString* imagePath = [self.diskImages objectAtIndex: indexPath.row];
|
||||
|
||||
cell.textLabel.text = [imagePath lastPathComponent];
|
||||
|
||||
return cell;
|
||||
}
|
||||
|
||||
-(void)tableView: (UITableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath
|
||||
{
|
||||
[self performSegueWithIdentifier: @"emulatorView" sender: self];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
//
|
||||
// VirtualViewController.h
|
||||
//
|
||||
//
|
||||
// Created by Lounge Katt on 8/19/15.
|
||||
//
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface VirtualViewController : UIViewController
|
||||
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_dpad_l;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_dpad_r;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_dpad_u;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_dpad_d;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_abxy_a;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_abxy_b;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_abxy_x;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_abxy_y;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_vjoy;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_lt;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_rt;
|
||||
@property (nonatomic, strong) IBOutlet UIButton* img_start;
|
||||
|
||||
- (void) showController:(UIView *)parentView;
|
||||
- (void) hideController;
|
||||
- (BOOL) pollController;
|
||||
|
||||
@end
|
|
@ -0,0 +1,62 @@
|
|||
//
|
||||
// VirtualViewController.m
|
||||
//
|
||||
//
|
||||
// Created by Lounge Katt on 8/19/15.
|
||||
//
|
||||
//
|
||||
|
||||
#import "VirtualViewController.h"
|
||||
|
||||
@interface VirtualViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation VirtualViewController
|
||||
|
||||
- (void)showController:(UIView *)parentView
|
||||
{
|
||||
[parentView addSubview:self.view];
|
||||
}
|
||||
|
||||
- (void)hideController {
|
||||
[self.view removeFromSuperview];
|
||||
}
|
||||
|
||||
- (BOOL)pollController {
|
||||
if (self.view.window != nil) {
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
|
||||
{
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
// Custom initialization
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view from its nib.
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
/*
|
||||
#pragma mark - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
// Get the new view controller using [segue destinationViewController].
|
||||
// Pass the selected object to the new view controller.
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
|
@ -0,0 +1,129 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14E46" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VirtualViewController">
|
||||
<connections>
|
||||
<outlet property="img_abxy_a" destination="iKO-3z-Ias" id="oRQ-Ot-o9X"/>
|
||||
<outlet property="img_abxy_b" destination="7LB-OY-vh3" id="cRb-HF-lB5"/>
|
||||
<outlet property="img_abxy_x" destination="iwO-7q-c8H" id="hva-yg-GyI"/>
|
||||
<outlet property="img_abxy_y" destination="hGZ-v7-VA5" id="s3t-TW-RMC"/>
|
||||
<outlet property="img_dpad_d" destination="s7g-nq-lRU" id="18B-Oa-iYW"/>
|
||||
<outlet property="img_dpad_l" destination="rp6-Nd-1qa" id="2bI-dY-c42"/>
|
||||
<outlet property="img_dpad_r" destination="CVH-hw-R8F" id="sZ1-PW-o0j"/>
|
||||
<outlet property="img_dpad_u" destination="WMD-Fv-ibu" id="lLl-ak-69J"/>
|
||||
<outlet property="img_lt" destination="8Gl-Iv-u8L" id="7hg-SV-U3u"/>
|
||||
<outlet property="img_rt" destination="V8J-vG-dlF" id="lCV-ed-R6J"/>
|
||||
<outlet property="img_start" destination="VtI-tC-PSX" id="mQP-ev-xQA"/>
|
||||
<outlet property="view" destination="3M7-1s-N5r" id="pbF-19-58j"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="3M7-1s-N5r">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="LTrigger.png" translatesAutoresizingMaskIntoConstraints="NO" id="H57-MD-elm">
|
||||
<rect key="frame" x="16" y="28" width="80" height="40"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8Gl-Iv-u8L">
|
||||
<rect key="frame" x="16" y="28" width="80" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="RTrigger.png" translatesAutoresizingMaskIntoConstraints="NO" id="Cjn-zx-eSs">
|
||||
<rect key="frame" x="504" y="28" width="80" height="40"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V8J-vG-dlF">
|
||||
<rect key="frame" x="504" y="28" width="80" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="JoystickButton.png" translatesAutoresizingMaskIntoConstraints="NO" id="ivh-8r-bw3">
|
||||
<rect key="frame" x="36" y="466" width="100" height="100"/>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="JoystickBackground.png" translatesAutoresizingMaskIntoConstraints="NO" id="OMP-L6-n0A">
|
||||
<rect key="frame" x="22" y="452" width="128" height="128"/>
|
||||
</imageView>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="DPad.png" translatesAutoresizingMaskIntoConstraints="NO" id="FLe-Gr-hny">
|
||||
<rect key="frame" x="16" y="304" width="140" height="140"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rp6-Nd-1qa">
|
||||
<rect key="frame" x="16" y="354" width="46" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CVH-hw-R8F">
|
||||
<rect key="frame" x="110" y="354" width="46" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WMD-Fv-ibu">
|
||||
<rect key="frame" x="66" y="304" width="40" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="s7g-nq-lRU">
|
||||
<rect key="frame" x="66" y="404" width="40" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="ABXYPad.png" translatesAutoresizingMaskIntoConstraints="NO" id="xbP-E4-fCE">
|
||||
<rect key="frame" x="424" y="419" width="160" height="161"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iwO-7q-c8H">
|
||||
<rect key="frame" x="424" y="470" width="60" height="60"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7LB-OY-vh3">
|
||||
<rect key="frame" x="524" y="470" width="60" height="60"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hGZ-v7-VA5">
|
||||
<rect key="frame" x="474" y="419" width="60" height="60"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iKO-3z-Ias">
|
||||
<rect key="frame" x="474" y="520" width="60" height="60"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="Start.png" translatesAutoresizingMaskIntoConstraints="NO" id="9K0-cV-7zu">
|
||||
<rect key="frame" x="260" y="552" width="80" height="40"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VtI-tC-PSX">
|
||||
<rect key="frame" x="273" y="552" width="54" height="40"/>
|
||||
<state key="normal" title="Button">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ABXYPad.png" width="120" height="120"/>
|
||||
<image name="DPad.png" width="120" height="120"/>
|
||||
<image name="JoystickBackground.png" width="120" height="120"/>
|
||||
<image name="JoystickButton.png" width="56" height="56"/>
|
||||
<image name="LTrigger.png" width="67" height="44"/>
|
||||
<image name="RTrigger.png" width="67" height="44"/>
|
||||
<image name="Start.png" width="48" height="26"/>
|
||||
</resources>
|
||||
</document>
|
|
@ -42,6 +42,8 @@
|
|||
87078A9B18A47FE90034C7A0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 87078A9A18A47FE90034C7A0 /* AppDelegate.m */; };
|
||||
87078AA318A47FE90034C7A0 /* Shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 87078AA218A47FE90034C7A0 /* Shader.fsh */; };
|
||||
87078AA518A47FE90034C7A0 /* Shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 87078AA418A47FE90034C7A0 /* Shader.vsh */; };
|
||||
872EF7021B852EB200A0F617 /* VirtualViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 872EF7001B852EB200A0F617 /* VirtualViewController.m */; };
|
||||
872EF7031B852EB200A0F617 /* VirtualViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 872EF7011B852EB200A0F617 /* VirtualViewController.xib */; };
|
||||
876AA3771B818A4000617242 /* ini.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 876AA3751B818A4000617242 /* ini.cpp */; };
|
||||
877652C21B6157BD00437F10 /* audiobackend_alsa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 877652B61B6157BD00437F10 /* audiobackend_alsa.cpp */; };
|
||||
877652C31B6157BD00437F10 /* audiobackend_directsound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 877652B91B6157BD00437F10 /* audiobackend_directsound.cpp */; };
|
||||
|
@ -302,6 +304,9 @@
|
|||
87078AA218A47FE90034C7A0 /* Shader.fsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; name = Shader.fsh; path = Shaders/Shader.fsh; sourceTree = "<group>"; };
|
||||
87078AA418A47FE90034C7A0 /* Shader.vsh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; name = Shader.vsh; path = Shaders/Shader.vsh; sourceTree = "<group>"; };
|
||||
87078AB018A47FE90034C7A0 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
872EF6FF1B852EB200A0F617 /* VirtualViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VirtualViewController.h; path = emulator/VirtualViewController.h; sourceTree = "<group>"; };
|
||||
872EF7001B852EB200A0F617 /* VirtualViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VirtualViewController.m; path = emulator/VirtualViewController.m; sourceTree = "<group>"; };
|
||||
872EF7011B852EB200A0F617 /* VirtualViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = VirtualViewController.xib; path = emulator/VirtualViewController.xib; sourceTree = "<group>"; };
|
||||
876AA3751B818A4000617242 /* ini.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ini.cpp; sourceTree = "<group>"; };
|
||||
876AA3761B818A4000617242 /* ini.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ini.h; sourceTree = "<group>"; };
|
||||
877652B61B6157BD00437F10 /* audiobackend_alsa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audiobackend_alsa.cpp; sourceTree = "<group>"; };
|
||||
|
@ -834,6 +839,9 @@
|
|||
9C7A393618C805F70070BB5F /* View Controller Subclasses */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
872EF6FF1B852EB200A0F617 /* VirtualViewController.h */,
|
||||
872EF7001B852EB200A0F617 /* VirtualViewController.m */,
|
||||
872EF7011B852EB200A0F617 /* VirtualViewController.xib */,
|
||||
87C208C51B7A4BFA00638BDD /* AboutViewController.h */,
|
||||
87C208C61B7A4BFA00638BDD /* AboutViewController.m */,
|
||||
87C208C71B7A4BFA00638BDD /* BrowserTableViewController.h */,
|
||||
|
@ -1543,6 +1551,7 @@
|
|||
87D92F4C1B7A1B4800D8FD9E /* Start@2x.png in Resources */,
|
||||
87D92F471B7A1B4800D8FD9E /* menuicon.png in Resources */,
|
||||
87D92F411B7A1B4800D8FD9E /* JoystickButton.png in Resources */,
|
||||
872EF7031B852EB200A0F617 /* VirtualViewController.xib in Resources */,
|
||||
87D92F441B7A1B4800D8FD9E /* LTrigger@2x.png in Resources */,
|
||||
87D92F551B7A1BB100D8FD9E /* LICENSE in Resources */,
|
||||
87D92F451B7A1B4800D8FD9E /* menuback.png in Resources */,
|
||||
|
@ -1760,6 +1769,7 @@
|
|||
9C7A3B1818C806E00070BB5F /* Renderer_if.cpp in Sources */,
|
||||
9C7A3AC518C806E00070BB5F /* zip_error_clear.c in Sources */,
|
||||
9C7A3AC318C806E00070BB5F /* zip_err_str.c in Sources */,
|
||||
872EF7021B852EB200A0F617 /* VirtualViewController.m in Sources */,
|
||||
9C7A3B4818C806E00070BB5F /* gldraw.cpp in Sources */,
|
||||
9C7A3AE618C806E00070BB5F /* zip_source_free.c in Sources */,
|
||||
9C7A3AF118C806E00070BB5F /* adler32.c in Sources */,
|
||||
|
|
|
@ -62,7 +62,8 @@
|
|||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "87078A8218A47FE90034C7A0"
|
||||
|
@ -80,7 +81,8 @@
|
|||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "87078A8218A47FE90034C7A0"
|
||||
|
|
Loading…
Reference in New Issue