1package {
2	import com.milkmangames.nativeextensions.ios.*;
3	import com.milkmangames.nativeextensions.ios.events.*;
4	import flash.display.Stage;
5
6	public class scoreclass {
7		public function init(mystage:Stage):void {
8			if (!GameCenter.isSupported()){
9				trace("GameCenter is not supported on this platform.");
10			}
11
12			trace("Loading game center:");
13			gameCenter = GameCenter.create(mystage);
14			if(!GameCenter.gameCenter.isGameCenterAvailable()){
15				trace("this device doesn't have gamecenter.");
16			}
17
18			if (GameCenter.gameCenter.areBannersAvailable()){
19				GameCenter.gameCenter.showAchievementBanners(true);
20			}
21
22			gameCenter.addEventListener(GameCenterEvent.AUTH_SUCCEEDED,onAuthSucceeded);
23			gameCenter.addEventListener(GameCenterErrorEvent.AUTH_FAILED,onAuthFailed);
24			gameCenter.addEventListener(GameCenterEvent.ACHIEVEMENTS_VIEW_OPENED,onViewOpened);
25			gameCenter.addEventListener(GameCenterEvent.ACHIEVEMENTS_VIEW_CLOSED,onViewClosed);
26			gameCenter.addEventListener(GameCenterEvent.LEADERBOARD_VIEW_OPENED,onViewOpened);
27			gameCenter.addEventListener(GameCenterEvent.LEADERBOARD_VIEW_CLOSED,onViewClosed);
28			gameCenter.addEventListener(GameCenterEvent.ACHIEVEMENT_REPORT_SUCCEEDED,onAchievementReported);
29			gameCenter.addEventListener(GameCenterEvent.ACHIEVEMENT_RESET_SUCCEEDED,onAchievementReset);
30			gameCenter.addEventListener(GameCenterEvent.SCORE_REPORT_SUCCEEDED,onScoreReported);
31			gameCenter.addEventListener(GameCenterErrorEvent.SCORE_REPORT_FAILED,onScoreFailed);
32			gameCenter.addEventListener(GameCenterErrorEvent.ACHIEVEMENT_REPORT_FAILED,onAchievementFailed);
33			gameCenter.addEventListener(GameCenterErrorEvent.ACHIEVEMENT_RESET_FAILED,onResetFailed);
34			GameCenter.gameCenter.authenticateLocalUser();
35		}
36
37
38	  CONFIG::iphonemode {
39			/** Check Authentication */
40			private function checkAuthentication():Boolean{
41				if (!GameCenter.gameCenter.isUserAuthenticated()){
42					trace("not logged in!");
43					return false;
44				}
45				return true;
46			}
47
48			/** Reset Achievements */
49			public function resetAchievements():void{
50				if (!checkAuthentication()) return;
51
52				GameCenter.gameCenter.resetAchievements();
53			}
54
55			public function reportScore(t:int):void{
56				// we make sure you're logged in before bothering to report the score.
57				// later iOS versions may take care of waiting/resubmitting for you, but earlier ones won't.
58				if (!checkAuthentication()) return;
59				t = t * 2; //Score is in 30 frame increments
60				GameCenter.gameCenter.reportScoreForCategory(t, "grp.supgravleaderboard");
61			}
62
63			public function opengamecenter():void {
64				if (!checkAuthentication()) return;
65				GameCenter.gameCenter.showLeaderboardForCategory("grp.supgravleaderboard");
66			}
67
68			/** Show Achievements */
69			public function showAchievements():void{
70				if (!checkAuthentication()) return;
71
72				//trace("showing achievements...");
73				try{
74					GameCenter.gameCenter.showAchievements();
75				}catch (e:Error){
76					//trace("ERR showachievements:"+e.message+"/"+e.name+"/"+e.errorID);
77				}
78			}
79
80			public var vvvvvvgamecomplete:int = 0;
81			public var vvvvvvgamecompleteflip:int = 1;
82			public var vvvvvvcomplete500:int = 2;
83			public var vvvvvvcomplete250:int = 3;
84			public var vvvvvvcomplete100:int = 4;
85			public var vvvvvvcomplete50:int = 5;
86			public var vvvvvvtimetrial_station1:int = 6;
87			public var vvvvvvtimetrial_lab:int = 7;
88			public var vvvvvvtimetrial_tower:int = 8;
89			public var vvvvvvtimetrial_station2:int = 9;
90			public var vvvvvvtimetrial_warp:int = 10;
91			public var vvvvvvtimetrial_final:int = 11;
92			public var vvvvvvsupgrav5:int = 12;
93			public var vvvvvvsupgrav10:int = 13;
94			public var vvvvvvsupgrav15:int = 14;
95			public var vvvvvvsupgrav20:int = 15;
96			public var vvvvvvsupgrav30:int = 16
97			public var vvvvvvsupgrav60:int = 17;
98			public var vvvvvvmaster:int = 18;
99
100			public function reportAchievement(t:int):void{
101				if (!checkAuthentication()) return;
102
103				// the '1.0' is a float (Number) value from 0.0-100.0 the percent completion of the achievement.
104				switch(t) {
105					case 0: GameCenter.gameCenter.reportAchievement("grp.vvvvvvgamecomplete", 100.0); break;
106					case 1: GameCenter.gameCenter.reportAchievement("grp.vvvvvvgamecompleteflip", 100.0); break;
107					case 2: GameCenter.gameCenter.reportAchievement("grp.vvvvvvcomplete500", 100.0); break;
108					case 3: GameCenter.gameCenter.reportAchievement("grp.vvvvvvcomplete250", 100.0); break;
109					case 4: GameCenter.gameCenter.reportAchievement("grp.vvvvvvcomplete100", 100.0); break;
110					case 5: GameCenter.gameCenter.reportAchievement("grp.vvvvvvcomplete50", 100.0); break;
111					case 6: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_station1", 100.0); break;
112					case 7: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_lab", 100.0); break;
113					case 8: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_tower", 100.0); break;
114					case 9: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_station2", 100.0); break;
115					case 10: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_warp", 100.0); break;
116					case 11: GameCenter.gameCenter.reportAchievement("grp.vvvvvvtimetrial_final", 100.0); break;
117					case 12: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav5", 100.0); break;
118					case 13: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav10", 100.0); break;
119					case 14: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav15", 100.0); break;
120					case 15: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav20", 100.0); break;
121					case 16: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav30", 100.0); break;
122					case 17: GameCenter.gameCenter.reportAchievement("grp.vvvvvvsupgrav60", 100.0); break;
123					case 18: GameCenter.gameCenter.reportAchievement("grp.vvvvvvmaster", 100.0); break;
124				}
125			}
126
127			//
128			// Events
129			//
130			private function onAuthSucceeded(e:GameCenterEvent):void
131			{
132				trace("Auth succeeded!");
133				//showFullUI();
134				trace("auth player:" + GameCenter.gameCenter.getPlayerAlias() + "=" + GameCenter.gameCenter.getPlayerID() + ",underage?" + GameCenter.gameCenter.isPlayerUnderage());
135				gamecenteron = true;
136			}
137
138			private function onAuthFailed(e:GameCenterErrorEvent):void
139			{
140				trace("Auth failed:"+e.message);
141				//showAuthUI();
142			}
143
144			private function onViewOpened(e:GameCenterEvent):void
145			{
146				trace("gamecenter view opened.");
147			}
148			private function onViewClosed(e:GameCenterEvent):void
149			{
150				trace("gamecenter view closed.");
151			}
152			private function onAchievementReported(e:GameCenterEvent):void
153			{
154				trace("achievement report success:"+e.achievementID);
155			}
156			private function onAchievementFailed(e:GameCenterErrorEvent):void
157			{
158				trace("achievement report failed:msg="+e.message+",cd="+e.errorID+",ach="+e.achievementID);
159			}
160			private function onScoreReported(e:GameCenterEvent):void
161			{
162				trace("score report success:"+e.score+"/"+e.category);
163			}
164			private function onScoreFailed(e:GameCenterErrorEvent):void
165			{
166				trace("score report failed:msg="+e.message+",cd="+e.errorID+",scr="+e.score+",cat="+e.category);
167			}
168			private function onAchievementReset(e:GameCenterEvent):void
169			{
170				trace("achievements reset.");
171				//this.score=0;
172				//saveScore();
173				//this.txtScore.text="Score: "+score;
174			}
175			private function onResetFailed(e:GameCenterErrorEvent):void
176			{
177				trace("failed to reset:"+e.message);
178			}
179		}
180
181		CONFIG::iphonemode {
182		  public var gameCenter:GameCenter;
183		  public var gamecenteron:Boolean = true;
184		}
185	}
186}
187