From c96eab18ddf7876a5fef991abeb3c17244ddde20 Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Wed, 6 Feb 2013 20:38:11 +0000 Subject: [PATCH] ios stuff --- ios/doublehitballs.xcodeproj/project.pbxproj | 16 +-- ios/doublehitballs/CustomGLKView.h | 8 +- ios/doublehitballs/CustomGLKView.m | 68 ----------- ios/doublehitballs/ViewController.h | 7 +- ios/doublehitballs/ViewController.m | 113 ------------------- ios/doublehitballs/ios_api.cpp | 51 +-------- ios/doublehitballs/ios_api.h | 16 +-- jni/creditscode.cpp | 2 +- jni/gamecode.cpp | 16 ++- jni/main_code.cpp | 4 + jni/main_code.h | 34 ++---- jni/menucode.cpp | 4 +- 12 files changed, 39 insertions(+), 300 deletions(-) delete mode 100644 ios/doublehitballs/CustomGLKView.m delete mode 100644 ios/doublehitballs/ViewController.m diff --git a/ios/doublehitballs.xcodeproj/project.pbxproj b/ios/doublehitballs.xcodeproj/project.pbxproj index c9091af..b3659ef 100644 --- a/ios/doublehitballs.xcodeproj/project.pbxproj +++ b/ios/doublehitballs.xcodeproj/project.pbxproj @@ -15,7 +15,7 @@ 4C49B2CC15B0991B003512CD /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C49B2CA15B0991B003512CD /* InfoPlist.strings */; }; 4C49B2CE15B0991B003512CD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C49B2CD15B0991B003512CD /* main.m */; }; 4C49B2D215B0991B003512CD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C49B2D115B0991B003512CD /* AppDelegate.m */; }; - 4C49B2D915B0991B003512CD /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C49B2D815B0991B003512CD /* ViewController.m */; }; + 4C49B2D915B0991B003512CD /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C49B2D815B0991B003512CD /* ViewController.mm */; }; 4C49B2DC15B0991B003512CD /* ViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C49B2DA15B0991B003512CD /* ViewController_iPhone.xib */; }; 4C49B2DF15B0991B003512CD /* ViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C49B2DD15B0991B003512CD /* ViewController_iPad.xib */; }; 4C4C807515BA8F460037C6CE /* libsquirrel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C4C807415BA8F460037C6CE /* libsquirrel.a */; }; @@ -29,7 +29,7 @@ 4C77831915BABE26003D5142 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C77831515BABD8B003D5142 /* OpenAL.framework */; }; 4C7AD44C15B1D77700A599F6 /* ios_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C7AD44B15B1D77700A599F6 /* ios_api.cpp */; }; 4C7FBF53165C1CDF008C1538 /* libboost.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C7FBF52165C1CDF008C1538 /* libboost.a */; }; - 4CCC0ECC15B30D6B005432FB /* CustomGLKView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC0ECB15B30D6B005432FB /* CustomGLKView.m */; }; + 4CCC0ECC15B30D6B005432FB /* CustomGLKView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC0ECB15B30D6B005432FB /* CustomGLKView.mm */; }; 4CE6A9D215B2F979006A3965 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 4CE6A9D115B2F979006A3965 /* assets */; }; 4CE6A9DE15B2F99F006A3965 /* creditscode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6A9D315B2F99F006A3965 /* creditscode.cpp */; }; 4CE6A9DF15B2F99F006A3965 /* gamecode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE6A9D615B2F99F006A3965 /* gamecode.cpp */; }; @@ -70,7 +70,7 @@ 4C49B2D015B0991B003512CD /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 4C49B2D115B0991B003512CD /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 4C49B2D715B0991B003512CD /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - 4C49B2D815B0991B003512CD /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 4C49B2D815B0991B003512CD /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = ""; }; 4C49B2DB15B0991B003512CD /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPhone.xib; sourceTree = ""; }; 4C49B2DE15B0991B003512CD /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPad.xib; sourceTree = ""; }; 4C4C807415BA8F460037C6CE /* libsquirrel.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsquirrel.a; path = "../../libs/SQUIRREL2_1_1_sqplus/build-ios/ios-device/libsquirrel.a"; sourceTree = ""; }; @@ -86,7 +86,7 @@ 4C7C584A15C31E6500CAE4F4 /* libboost.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libboost.a; path = "../../libs/boost_1_47_0/build-ios/ios-simulator/libboost.a"; sourceTree = ""; }; 4C7FBF52165C1CDF008C1538 /* libboost.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libboost.a; path = "../../../libs/boost_1_52_0/build-ios/ios-device/libboost.a"; sourceTree = ""; }; 4CCC0ECA15B30D6A005432FB /* CustomGLKView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomGLKView.h; sourceTree = ""; }; - 4CCC0ECB15B30D6B005432FB /* CustomGLKView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomGLKView.m; sourceTree = ""; }; + 4CCC0ECB15B30D6B005432FB /* CustomGLKView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CustomGLKView.mm; sourceTree = ""; }; 4CCC0ECD15B310FB005432FB /* ios_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ios_api.h; sourceTree = ""; }; 4CE6A9D115B2F979006A3965 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = assets; path = ../assets; sourceTree = ""; }; 4CE6A9D315B2F99F006A3965 /* creditscode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = creditscode.cpp; path = ../../jni/creditscode.cpp; sourceTree = ""; }; @@ -171,12 +171,12 @@ 4C49B2D015B0991B003512CD /* AppDelegate.h */, 4C49B2D115B0991B003512CD /* AppDelegate.m */, 4C49B2D715B0991B003512CD /* ViewController.h */, - 4C49B2D815B0991B003512CD /* ViewController.m */, + 4C49B2D815B0991B003512CD /* ViewController.mm */, 4C49B2DA15B0991B003512CD /* ViewController_iPhone.xib */, 4C49B2DD15B0991B003512CD /* ViewController_iPad.xib */, 4C49B2C815B0991B003512CD /* Supporting Files */, 4CCC0ECA15B30D6A005432FB /* CustomGLKView.h */, - 4CCC0ECB15B30D6B005432FB /* CustomGLKView.m */, + 4CCC0ECB15B30D6B005432FB /* CustomGLKView.mm */, ); path = doublehitballs; sourceTree = ""; @@ -327,14 +327,14 @@ files = ( 4C49B2CE15B0991B003512CD /* main.m in Sources */, 4C49B2D215B0991B003512CD /* AppDelegate.m in Sources */, - 4C49B2D915B0991B003512CD /* ViewController.m in Sources */, + 4C49B2D915B0991B003512CD /* ViewController.mm in Sources */, 4C7AD44C15B1D77700A599F6 /* ios_api.cpp in Sources */, 4CE6A9DE15B2F99F006A3965 /* creditscode.cpp in Sources */, 4CE6A9DF15B2F99F006A3965 /* gamecode.cpp in Sources */, 4CE6A9E015B2F99F006A3965 /* loadingcode.cpp in Sources */, 4CE6A9E115B2F99F006A3965 /* main_code.cpp in Sources */, 4CE6A9E215B2F99F006A3965 /* menucode.cpp in Sources */, - 4CCC0ECC15B30D6B005432FB /* CustomGLKView.m in Sources */, + 4CCC0ECC15B30D6B005432FB /* CustomGLKView.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ios/doublehitballs/CustomGLKView.h b/ios/doublehitballs/CustomGLKView.h index 59184d3..77acd11 100644 --- a/ios/doublehitballs/CustomGLKView.h +++ b/ios/doublehitballs/CustomGLKView.h @@ -6,12 +6,8 @@ // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // -#import +#import "include/Utils/IosApi/ObjC/GLKViewTemplate.h" -@interface CustomGLKView : GLKView - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; -- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; +@interface CustomGLKView : GLKViewTemplate @end diff --git a/ios/doublehitballs/CustomGLKView.m b/ios/doublehitballs/CustomGLKView.m deleted file mode 100644 index 130b654..0000000 --- a/ios/doublehitballs/CustomGLKView.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// CustomGLKView.m -// doublehitballs -// -// Created by vvv ооо on 15.07.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "CustomGLKView.h" -#import "ios_api.h" - -bool touchMoved = false; -CGPoint prev_loc; - - -@implementation CustomGLKView - -- (id)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - // Initialization code - } - return self; -} - - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - - CGPoint location = [[[touches allObjects] objectAtIndex:0] locationInView:self]; - - prev_loc = location; - - touchMoved = false; - - AppOnTapDown(location.x, self.bounds.size.height - location.y); - -} - -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event -{ - CGPoint location = [[[touches allObjects] objectAtIndex:0] locationInView:self]; - - CGPoint prevLocation = [[[touches allObjects] objectAtIndex:0] previousLocationInView:self]; - - if (abs(prev_loc.x - location.x) > 10 || abs(prev_loc.y - location.y) > 10) - { - touchMoved = true; - } - - AppOnScroll(prevLocation.x - location.x, prevLocation.y - location.y); -} - -- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event -{ - CGPoint location = [[[touches allObjects] objectAtIndex:0] locationInView:self]; - - if (!touchMoved) - { - AppOnTapUp(location.x, self.bounds.size.height - location.y); - } -} - - - - -@end diff --git a/ios/doublehitballs/ViewController.h b/ios/doublehitballs/ViewController.h index e7f9748..38eb6ac 100644 --- a/ios/doublehitballs/ViewController.h +++ b/ios/doublehitballs/ViewController.h @@ -6,9 +6,10 @@ // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // -#import -#import -@interface ViewController : GLKViewController +#import "include/Utils/IosApi/ObjC/ViewControllerTemplate.h" + +@interface ViewController : ViewControllerTemplate @end + diff --git a/ios/doublehitballs/ViewController.m b/ios/doublehitballs/ViewController.m deleted file mode 100644 index b6f85ad..0000000 --- a/ios/doublehitballs/ViewController.m +++ /dev/null @@ -1,113 +0,0 @@ -// -// ViewController.m -// doublehitballs -// -// Created by vvv ооо on 13.07.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -#import "ViewController.h" -#import "ios_api.h" - -extern GLKView* defaultView; //Find this in IosApi.h/mm in Engine - - -@interface ViewController () { -} - -@property (strong, nonatomic) EAGLContext *context; -@property (strong, nonatomic) GLKBaseEffect *effect; - -- (void)setupGL; -- (void)tearDownGL; - -@end - -@implementation ViewController - -@synthesize context = _context; -@synthesize effect = _effect; - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; - - if (!self.context) { - NSLog(@"Failed to create ES context"); - } - - GLKView *view = (GLKView *)self.view; - view.context = self.context; - view.drawableDepthFormat = GLKViewDrawableDepthFormat24; - - defaultView = (GLKView *)self.view; - - [self setupGL]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - - [self tearDownGL]; - - if ([EAGLContext currentContext] == self.context) { - [EAGLContext setCurrentContext:nil]; - } - self.context = nil; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Release any cached data, images, etc. that aren't in use. -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - /* - if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { - return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); - } else { - return YES; - }*/ - return UIInterfaceOrientationIsLandscape(interfaceOrientation); -} - -- (void)setupGL -{ - [EAGLContext setCurrentContext:self.context]; - - AppInit(); - - GLKView *view = (GLKView *)self.view; - -} - -- (void)tearDownGL -{ - [EAGLContext setCurrentContext:self.context]; - - AppDeinit(); - -} - -#pragma mark - GLKView and GLKViewController delegate methods - -- (void)update -{ - - AppUpdate(self.timeSinceLastUpdate * 1000); -} - -- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect -{ - - AppDraw(); - -} - - -@end diff --git a/ios/doublehitballs/ios_api.cpp b/ios/doublehitballs/ios_api.cpp index 00f3f67..4a1606b 100644 --- a/ios/doublehitballs/ios_api.cpp +++ b/ios/doublehitballs/ios_api.cpp @@ -1,55 +1,8 @@ #include "include/Engine.h" #include "main_code.h" -TAndroidApplication* App; - -extern "C" void AppInit() +void CustomAppInit() { - CreateEngine(); - App = new TAndroidApplication; - App->OuterInit(480, 320, 480, 320); - -} - -extern "C" void AppDeinit() -{ - - App->OuterDeinit(); - delete App; - DestroyEngine(); - -} - - -extern "C" void AppUpdate(int dt) -{ - App->OuterUpdate(dt); -} - - - -extern "C" void AppDraw() -{ - App->OuterDraw(); -} - -extern "C" void AppOnTapDown(int posx, int posy) -{ - App->OuterOnTapDown(vec2(posx, posy)); -} - -extern "C" void AppOnTapUp(int posx, int posy) -{ - App->OuterOnTapUp(vec2(posx, posy)); -} - -extern "C" void AppOnTapUpAfterScroll(int posx, int posy) -{ - App->OuterOnTapUpAfterShift(vec2(posx, posy)); -} - -extern "C" void AppOnScroll(int shiftx, int shifty) -{ - App->OuterOnMove(vec2(shiftx, shifty)); + AppInit(480, 320); } diff --git a/ios/doublehitballs/ios_api.h b/ios/doublehitballs/ios_api.h index 66b7e7f..4e60656 100644 --- a/ios/doublehitballs/ios_api.h +++ b/ios/doublehitballs/ios_api.h @@ -1,15 +1 @@ -// -// Header.h -// doublehitballs -// -// Created by vvv ооо on 15.07.12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// - -void AppInit(); -void AppDeinit(); -void AppUpdate(int dt); -void AppDraw(); -void AppOnTapDown(int posx, int posy); -void AppOnTapUp(int posx, int posy); -void AppOnScroll(int shiftx, int shifty); \ No newline at end of file +void CustomAppInit(); \ No newline at end of file diff --git a/jni/creditscode.cpp b/jni/creditscode.cpp index 8561096..8caef29 100644 --- a/jni/creditscode.cpp +++ b/jni/creditscode.cpp @@ -65,7 +65,7 @@ void TGameCredits::Update(cardinal dt) void TGameCredits::OnTapDown(vec2 p) { - App->GoFromCreditsToMenu(); + Application->GoFromCreditsToMenu(); } void TGameCredits::StartAppear() diff --git a/jni/gamecode.cpp b/jni/gamecode.cpp index 0b068e5..0a1eaaa 100644 --- a/jni/gamecode.cpp +++ b/jni/gamecode.cpp @@ -890,7 +890,7 @@ void TGameLevel::SetPause() RenderBufferReady = false; LevelState = CONST_LEVELSTATE_GO_TO_PAUSE; StateTimer = CONST_PAUSE_APPEAR_TIME; - App->MarkSetGameLevelPause(); + Application->MarkSetGameLevelPause(); } void TGameLevel::ReleasePause() @@ -906,7 +906,7 @@ void TGameLevel::ReleasePause() { LevelState = CONST_LEVELSTATE_PLAYING; } - App->MarkReleaseGameLevelPause(); + Application->MarkReleaseGameLevelPause(); } bool TGameLevel::IsPaused() @@ -1085,8 +1085,8 @@ void TGameLevel::Update(cardinal dt) if (noMoreBlocks && LevelState != CONST_LEVELSTATE_FINISH_FREEZE) { - App->OpenNextLevel(); - App->MarkSetGameLevelPause(); + Application->OpenNextLevel(); + Application->MarkSetGameLevelPause(); SetFinishFreeze(); CheckGlError(); @@ -1538,11 +1538,9 @@ void TGameLevel::OnScroll(vec2 shift) else if (LevelState == CONST_LEVELSTATE_PAUSE) { -#ifdef TARGET_WIN32 + OutScale += shift.v[1]/320.f; -#else - OutScale -= shift.v[1]/320.f; -#endif + TryGoToMenu(); } } @@ -1553,7 +1551,7 @@ void TGameLevel::TryGoToMenu() { OutScale = 0.5f; LevelState = CONST_LEVELSTATE_NODRAW; - App->GoFromGameToMenu(); + Application->GoFromGameToMenu(); } if (OutScale > 1.f) { diff --git a/jni/main_code.cpp b/jni/main_code.cpp index df1a97a..8019bc7 100644 --- a/jni/main_code.cpp +++ b/jni/main_code.cpp @@ -46,9 +46,13 @@ const std::string CONST_CREDITS_TEXTURE = "credits"; const float CONST_CREDITS_SHOW_TIME = 150.f; +TAndroidApplication* Application; + void TAndroidApplication::InnerInit() { + Application = this; + #ifdef TARGET_WIN32 #ifdef NDEBUG ResourceManager->PathToResources = "resources/"; diff --git a/jni/main_code.h b/jni/main_code.h index 159861b..8ec5933 100644 --- a/jni/main_code.h +++ b/jni/main_code.h @@ -32,15 +32,9 @@ using namespace SE; -#ifdef TARGET_WIN32 class TAndroidApplication; -extern TAndroidApplication* App; -#endif +extern TAndroidApplication* Application; -#ifdef TARGET_IOS -class TAndroidApplication; -extern TAndroidApplication* App; -#endif extern boost::signal OnTapUpSignal; extern boost::signal OnTapDownSignal; @@ -145,26 +139,14 @@ public: void LoadResources(); -#ifdef TARGET_WIN32 + virtual void InnerOnTapDown(vec2 p); + + virtual void InnerOnTapUp(vec2 p); + + virtual void InnerOnMove(vec2 shift); + + virtual void OnFling(vec2 v); - virtual void InnerOnTapDown(vec2 p); - - virtual void InnerOnTapUp(vec2 p); - - virtual void InnerOnMove(vec2 shift); - - virtual void OnFling(vec2 v); -#endif -#ifdef TARGET_IOS - - virtual void InnerOnTapDown(vec2 p); - - virtual void InnerOnTapUp(vec2 p); - - virtual void InnerOnMove(vec2 shift); - - virtual void OnFling(vec2 v); -#endif }; diff --git a/jni/menucode.cpp b/jni/menucode.cpp index 24d1192..0185bc6 100644 --- a/jni/menucode.cpp +++ b/jni/menucode.cpp @@ -135,7 +135,7 @@ void TGameMenu::OnTapDown(vec2 pos) if (pos.v[1]<64.f && pos.v[0]>=265.f-128.f && pos.v[0]<=265.f+128.f) { - App->GoFromMenuToCredits(); + Application->GoFromMenuToCredits(); return; } @@ -171,7 +171,7 @@ void TGameMenu::OnTapUp(vec2 pos) if (SelectedGame != -1) { MenuPos = -CONST_MENU_WINDOW_DISTANCE*SelectedGame-40.f; - App->GoFromMenuToGame(SelectedGame); + Application->GoFromMenuToGame(SelectedGame); SelectedGame = -1; } }