iap_android.monkey2 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. Namespace iap
  2. #Import "<sdl2>"
  3. #Import "<jni>"
  4. #Import "native/Monkey2IAP.java"
  5. Using jni..
  6. Class Product
  7. Method New( identifier:String,type:ProductType )
  8. Init()
  9. _instance=Env.NewObject( _class,_ctor,New Variant[]( identifier,Cast<Int>( type ) ) )
  10. _globalref=Env.NewGlobalRef( _instance )
  11. End
  12. Property Identifier:String()
  13. Return Env.GetStringField( _instance,_identifier )
  14. End
  15. Property Type:ProductType()
  16. Return Cast<ProductType>( Env.GetIntField( _instance,_type ) )
  17. End
  18. Property Valid:Bool()
  19. Return Env.GetBooleanField( _instance,_valid )
  20. End
  21. Property Title:String()
  22. Return Env.GetStringField( _instance,_title )
  23. End
  24. Property Description:String()
  25. Return Env.GetStringField( _instance,_description )
  26. End
  27. Property Price:String()
  28. Return Env.GetStringField( _instance,_price )
  29. End
  30. Internal
  31. Property Owned:Bool()
  32. Return Env.GetBooleanField( _instance,_owned )
  33. End
  34. Property Interrupted:Bool()
  35. Return Env.GetBooleanField( _instance,_interrupted )
  36. End
  37. Private
  38. Global _class:jclass
  39. Global _ctor:jmethodID
  40. Global _valid:jfieldID
  41. Global _title:jfieldID
  42. Global _description:jfieldID
  43. Global _price:jfieldID
  44. Global _identifier:jfieldID
  45. Global _type:jfieldID
  46. Global _owned:jfieldID
  47. Global _interrupted:jfieldID
  48. Function Init()
  49. If _class Return
  50. Local env:=sdl2.Android_JNI_GetEnv()
  51. _class=env.FindClass( "com/monkey2/lib/Monkey2IAP$Product" )
  52. _ctor=env.GetMethodID( _class,"<init>","(Ljava/lang/String;I)V" )
  53. _valid=env.GetFieldID( _class,"valid","Z" )
  54. _title=env.GetFieldID( _class,"title","Ljava/lang/String;" )
  55. _description=env.GetFieldID( _class,"description","Ljava/lang/String;" )
  56. _price=env.GetFieldID( _class,"price","Ljava/lang/String;" )
  57. _identifier=env.GetFieldID( _class,"identifier","Ljava/lang/String;" )
  58. _type=env.GetFieldID( _class,"type","I" )
  59. _owned=env.GetFieldID( _class,"owned","Z" )
  60. _interrupted=env.GetFieldID( _class,"interrupted","Z" )
  61. End
  62. Field _instance:jobject
  63. Field _globalref:jobject
  64. Property Env:JNIEnv()
  65. Return sdl2.Android_JNI_GetEnv()
  66. End
  67. End
  68. Internal
  69. Class IAPStoreRep
  70. Method New()
  71. Init()
  72. _instance=Env.NewObject( _class,_ctor,Null )
  73. End
  74. Method OpenStoreAsync:Bool( products:Product[] )
  75. Local jarray:jobjectArray=Env.NewObjectArray( products.Length,Product._class,Null )
  76. For Local i:=0 Until products.Length
  77. Env.SetObjectArrayElement( jarray,i,products[i]._instance )
  78. Next
  79. Return Env.CallBooleanMethod( _instance,_openstoreasync,New Variant[]( Cast<jobject>( jarray ) ) )
  80. End
  81. Method BuyProductAsync:Bool( product:Product )
  82. Return Env.CallBooleanMethod( _instance,_buyproductasync,New Variant[]( product._instance ) )
  83. End
  84. Method GetOwnedProductsAsync:Bool()
  85. Return Env.CallBooleanMethod( _instance,_getownedproductsasync,Null )
  86. End
  87. Method IsRunning:Bool()
  88. Return Env.CallBooleanMethod( _instance,_isrunning,Null )
  89. End
  90. Method GetResult:Int()
  91. Return Env.CallIntMethod( _instance,_getresult,Null )
  92. End
  93. Private
  94. Global _class:jclass
  95. Global _ctor:jmethodID
  96. Global _openstoreasync:jmethodID
  97. Global _buyproductasync:jmethodID
  98. Global _getownedproductsasync:jmethodID
  99. Global _isrunning:jmethodID
  100. Global _getresult:jmethodID
  101. Method Init()
  102. If _class Return
  103. Local env:=sdl2.Android_JNI_GetEnv()
  104. _class=env.FindClass( "com/monkey2/lib/Monkey2IAP" )
  105. _ctor=env.GetMethodID( _class,"<init>","()V" )
  106. _openstoreasync=env.GetMethodID( _class,"OpenStoreAsync","([Lcom/monkey2/lib/Monkey2IAP$Product;)Z" )
  107. _buyproductasync=env.GetMethodID( _class,"BuyProductAsync","(Lcom/monkey2/lib/Monkey2IAP$Product;)Z" )
  108. _getownedproductsasync=env.GetMethodID( _class,"GetOwnedProductsAsync","()Z" )
  109. _isrunning=env.GetMethodID( _class,"IsRunning","()Z" )
  110. _getresult=env.GetMethodID( _class,"GetResult","()I" )
  111. End
  112. Field _instance:jobject
  113. Property Env:JNIEnv()
  114. Return sdl2.Android_JNI_GetEnv()
  115. End
  116. End