-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchartboost.monkey
466 lines (394 loc) · 12.1 KB
/
chartboost.monkey
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
' This is a wrapper for the chartboost module written by Jonathan Pittock (skn3) under contract.
' The module is currently iOS and android only.
' This module is 100% FREE as long as you use it for good and not evil.
' Feel free to contribute, dream, share, create and call it your own if you want to! :)
' You are allowed to remove these comments.
' This module was part of a Crowdfunding initiative in the Monkey Community. Enjoy.
Strict
'version 5
' - tweaked android implementation
' - updated examples
'version 4
' - updated to version 3.1.5 of chartboost lib for android
' - updated to version 3.2 for ios
' - fixed blank screen issues
'version 3
' - fixed implements non chartboost classes
'version 2
' - added license
'version 1
' - first release
Private
' --------------------------------- imports ---------------------------------
#If TARGET="ios"
'[ios imports]
'frameworks
#LIBS+="QuartzCore.framework"
#LIBS+="SystemConfiguration.framework"
#LIBS+="StoreKit.framework"
#LIBS+="AdSupport.framework" 'Must weak-link AdSupport.framework in your app For iOS 6 compatibility (Select "Optional")
'#LIBS+="CoreGraphics.framework" Already in project so dont need to add (according to brl.admob)
#LIBS+="GameKit.framework"
'libs
#LIBS+="${CD}/native/chartboost-3.2/ios/libChartboost.a"
#LIBS+="${CD}/native/chartboost-3.2/ios/Chartboost.h"
'glue
#LIBS+="${CD}/native/chartboostglue.ios.h"
Import "native/chartboostglue.ios.cpp"
'[android imports]
#Elseif TARGET="android"
'libs
#LIBS+="${CD}/native/chartboost-3.1.5/android/chartboost.jar"
'glue
Import "native/chartboostglue.android.java"
#end
' --------------------------------- glue class ---------------------------------
'supported device
#If TARGET="ios" Or TARGET="android"
Extern
Class ChartboostGlue Abstract
Method shouldRequestInterstitial:Bool(location:String)
Method shouldDisplayInterstitial:Bool(location:String)
Method didCacheInterstitial:Void(location:String)
Method didFailToLoadInterstitial:Void(location:String)
Method didDismissInterstitial:Void(location:String)
Method didCloseInterstitial:Void(location:String)
Method didClickInterstitial:Void(location:String)
Method didShowInterstitial:Void(location:String)
Method shouldDisplayLoadingViewForMoreApps:Bool()
Method shouldRequestMoreApps:Bool()
Method shouldDisplayMoreApps:Bool()
Method didCacheMoreApps:Void()
Method didFailToLoadMoreApps:Void()
Method didDismissMoreApps:Void()
Method didCloseMoreApps:Void()
Method didClickMoreApps:Void()
Method didShowMoreApps:Void()
Method shouldRequestInterstitialsInFirstSession:Bool()
Method StartSession:Bool(appId:String, appSignature:String)
Method CacheInterstitial:Void()
Method CacheInterstitial:Void(location:String)
Method ShowInterstitial:Void()
Method ShowInterstitial:Void(location:String)
Method HasCachedInterstitial:Bool()
Method HasCachedInterstitial:Bool(location:String)
Method CacheMoreApps:Void()
Method HasCachedMoreApps:Bool()
Method ShowMoreApps:Void()
End
Public
Class Chartboost Extends ChartboostGlue Final
Public
Field delegate:ChartboostDelegate
Field interstitialOpen:bool
Field appsOpen:Bool
'chartboost events
Method shouldRequestInterstitial:Bool(location:String)
'pass this onto the user delegate
If delegate Return delegate.shouldRequestInterstitial(location)
'default action
Return True
End
Method shouldDisplayInterstitial:Bool(location:String)
'pass this onto the user delegate
If delegate Return delegate.shouldDisplayInterstitial(location)
'default action
Return True
End
Method didCacheInterstitial:Void(location:String)
'pass this onto the user delegate
If delegate delegate.didCacheInterstitial(location)
End
Method didFailToLoadInterstitial:Void(location:String)
'pass this onto the user delegate
If delegate delegate.didFailToLoadInterstitial(location)
End
Method didDismissInterstitial:Void(location:String)
'pass this onto the user delegate
If delegate delegate.didDismissInterstitial(location)
End
Method didCloseInterstitial:Void(location:String)
'pass this onto the user delegate
interstitialOpen = False
If delegate delegate.didCloseInterstitial(location)
End
Method didClickInterstitial:Void(location:String)
'pass this onto the user delegate
If delegate delegate.didClickInterstitial(location)
End
Method didShowInterstitial:Void(location:String)
'pass this onto the user delegate
interstitialOpen = True
If delegate delegate.didShowInterstitial(location)
End
Method shouldDisplayLoadingViewForMoreApps:Bool()
'pass this onto the user delegate
If delegate Return delegate.shouldDisplayLoadingViewForMoreApps()
'default action
Return True
End
Method shouldRequestMoreApps:Bool()
'pass this onto the user delegate
If delegate Return delegate.shouldRequestMoreApps()
'default action
Return True
End
Method shouldDisplayMoreApps:Bool()
'pass this onto the user delegate
If delegate Return delegate.shouldDisplayMoreApps()
'default action
Return True
End
Method didCacheMoreApps:Void()
'pass this onto the user delegate
If delegate delegate.didCacheMoreApps()
End
Method didFailToLoadMoreApps:Void()
'pass this onto the user delegate
If delegate delegate.didFailToLoadMoreApps()
End
Method didDismissMoreApps:Void()
'pass this onto the user delegate
If delegate delegate.didDismissMoreApps()
End
Method didCloseMoreApps:Void()
'pass this onto the user delegate
appsOpen = False
If delegate delegate.didCloseMoreApps()
End
Method didClickMoreApps:Void()
'pass this onto the user delegate
If delegate delegate.didClickMoreApps()
End
Method didShowMoreApps:Void()
'pass this onto the user delegate
appsOpen = True
If delegate delegate.didShowMoreApps()
End
Method shouldRequestInterstitialsInFirstSession:Bool()
'pass this onto the user delegate
If delegate Return delegate.shouldRequestInterstitialsInFirstSession()
'default action
Return True
End
'monkey api
Method SetDelegate:Void(delegate:ChartboostDelegate)
'this is a monkey delegate and acts as a message router from chartboost to monkey
'it doesn't have a inheritance with chartboosts own delegate
Self.delegate = delegate
End
End
#Else
'unsupported device
Public
Class Chartboost
'chartboost api
Method StartSession:Bool(appId:String, appSignature:String)
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method CacheInterstitial:Void()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method CacheInterstitial:Void(location:String)
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method ShowInterstitial:Void()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method ShowInterstitial:Void(location:String)
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method HasCachedInterstitial:Bool()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method HasCachedInterstitial:Bool(location:String)
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method HasCachedMoreApps:Bool()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method CacheMoreApps:Void()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
Method ShowMoreApps:Void()
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
'monkey api
Method SetDelegate:Void(delegate:ChartboostDelegate)
#If CONFIG = "debug"
Print "Chartboost not supported on this device"
#End
End
End
#End
' --------------------------------- runtime stuff ---------------------------------
Private
Global chartboost:Chartboost
' --------------------------------- user api ---------------------------------
Public
'interfaces
Interface ChartboostDelegate
'this allows for advanced usage of the api and should be implemented by your app
Method shouldRequestInterstitial:Bool(location:String)
Method shouldDisplayInterstitial:Bool(location:String)
Method didCacheInterstitial:Void(location:String)
Method didFailToLoadInterstitial:Void(location:String)
Method didDismissInterstitial:Void(location:String)
Method didCloseInterstitial:Void(location:String)
Method didClickInterstitial:Void(location:String)
Method didShowInterstitial:Void(location:String)
Method shouldDisplayLoadingViewForMoreApps:Bool()
Method shouldRequestMoreApps:Bool()
Method shouldDisplayMoreApps:Bool()
Method didCacheMoreApps:Void()
Method didFailToLoadMoreApps:Void()
Method didDismissMoreApps:Void()
Method didCloseMoreApps:Void()
Method didClickMoreApps:Void()
Method didShowMoreApps:Void()
Method shouldRequestInterstitialsInFirstSession:Bool()
End
'stock delegates
Class ChartboostDebugDelegate Implements ChartboostDelegate
Method shouldRequestInterstitial:Bool(location:String)
Print "shouldRequestInterstitial:"+location
Return true
End
Method shouldDisplayInterstitial:Bool(location:String)
Print "shouldDisplayInterstitial:"+location
Return true
End
Method didCacheInterstitial:Void(location:String)
Print "didCacheInterstitial:" + location
End
Method didFailToLoadInterstitial:Void(location:String)
Print "didFailToLoadInterstitial:"+location
End
Method didDismissInterstitial:Void(location:String)
Print "didDismissInterstitial:"+location
End
Method didCloseInterstitial:Void(location:String)
Print "didCloseInterstitial:"+location
End
Method didClickInterstitial:Void(location:String)
Print "didClickInterstitial:"+location
End
Method didShowInterstitial:Void(location:String)
Print "didShowInterstitial:"+location
End
Method shouldDisplayLoadingViewForMoreApps:Bool()
Print "shouldDisplayLoadingViewForMoreApps"
Return true
End
Method shouldRequestMoreApps:Bool()
Print "shouldRequestMoreApps"
Return True
End
Method shouldDisplayMoreApps:Bool()
Print "shouldDisplayMoreApps"
Return True
End
Method didCacheMoreApps:Void()
Print "didCacheMoreApps"
End
Method didFailToLoadMoreApps:Void()
Print "didFailToLoadMoreApps"
End
Method didDismissMoreApps:Void()
Print "didDismissMoreApps"
End
Method didCloseMoreApps:Void()
Print "didCloseMoreApps"
End
Method didClickMoreApps:Void()
Print "didClickMoreApps"
End
Method didShowMoreApps:Void()
Print "didShowMoreApps"
End
Method shouldRequestInterstitialsInFirstSession:Bool()
Print "shouldRequestInterstitialsInFirstSession"
Return true
End
End
'api
Function ChartboostSetDelegate:Void(delegate:ChartboostDelegate)
' --- change the delegate (monkey object) ---
If chartboost = Null chartboost = New Chartboost
'create global chartboost object if it hasnt been
'change delegate
chartboost.SetDelegate(delegate)
End
Function ChartboostStartSession:Bool(appId:String,appSignature:String)
' --- start chartboost ---
'create global chartboost object if it hasnt been
If chartboost = Null chartboost = New Chartboost
'start the chartboost session
chartboost.StartSession(appId,appSignature)
'success
Return True
End
Function ChartboostCacheInterstitial:Void(location:String="")
' --- cache chartboost inerstitial ---
'send command to chartboost
If location.Length
'with location
chartboost.CacheInterstitial(location)
Else
'without location
chartboost.CacheInterstitial()
Endif
End
Function ChartboostShowInterstitial:Void(location:String="")
' --- show an interstitial ---
'send command to chartboost
If location.Length
chartboost.ShowInterstitial(location)
Else
chartboost.ShowInterstitial()
Endif
End
Function ChartboostHasCachedInterstitial:Bool(location:String="")
' --- check for cache ---
'send command to chartboost
If location.Length
Return chartboost.HasCachedInterstitial(location)
Else
Return chartboost.HasCachedInterstitial()
Endif
End
Function ChartboostCacheMoreApps:Void()
' --- cache more apps ---
'send command to chartboost
chartboost.CacheMoreApps()
End
Function ChartboostHasCachedMoreApps:Bool()
' --- cache more apps ---
'send command to chartboost
Return chartboost.HasCachedMoreApps()
End
Function ChartboostShowMoreApps:Void()
' --- cache more apps ---
'send command to chartboost
chartboost.ShowMoreApps()
End