From 04a09e18db4100be893bad4d89fad8b0513d6f6f Mon Sep 17 00:00:00 2001 From: Alexey Gulev Date: Wed, 18 Sep 2019 14:21:58 +0200 Subject: [PATCH] Added example. Initial commit --- game.project | 9 +- main/main.gui | 435 ++++++++++++++++++++++++++++++++++++++++++- main/main.gui_script | 57 +++++- 3 files changed, 488 insertions(+), 13 deletions(-) diff --git a/game.project b/game.project index f66136e..40320ed 100644 --- a/game.project +++ b/game.project @@ -10,14 +10,19 @@ height = 640 [android] input_method = HiddenInputField -package = com.defold.iap +package = com.defold.iaprtestapp +version_code = 3 [project] title = extension-iap +dependencies = https://github.com/andsve/dirtylarry/archive/master.zip [library] include_dirs = extension-iap [ios] -bundle_identifier = com.defold.iap +bundle_identifier = com.defold.iaprtestapp + +[iap] +auto_finish_transactions = 0 diff --git a/main/main.gui b/main/main.gui index a19a00f..80347aa 100644 --- a/main/main.gui +++ b/main/main.gui @@ -11,8 +11,8 @@ background_color { } nodes { position { - x: 467.0 - y: 350.0 + x: 171.0 + y: 569.0 z: 0.0 w: 1.0 } @@ -23,8 +23,8 @@ nodes { w: 1.0 } scale { - x: 2.0 - y: 2.0 + x: 1.0 + y: 1.0 z: 1.0 w: 1.0 } @@ -40,18 +40,112 @@ nodes { z: 1.0 w: 1.0 } + type: TYPE_TEMPLATE + id: "consumable" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/dirtylarry/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 300.0 + y: 88.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "button/button_normal" + id: "consumable/larrybutton" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "consumable" + layer: "" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.6 + y: 0.0 + z: 0.0 + w: 1.0 + } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "" - font: "system_font" - id: "text" + text: "consumable" + font: "larryfont" + id: "consumable/larrylabel" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER outline { - x: 1.0 - y: 1.0 - z: 1.0 + x: 0.0 + y: 0.0 + z: 0.0 w: 1.0 } shadow { @@ -62,12 +156,333 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false + parent: "consumable/larrybutton" layer: "" inherit_alpha: true alpha: 1.0 outline_alpha: 1.0 shadow_alpha: 1.0 + overridden_fields: 5 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 171.0 + y: 449.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "nonconsumable" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/dirtylarry/button.gui" template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 300.0 + y: 88.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "button/button_normal" + id: "nonconsumable/larrybutton" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "nonconsumable" + layer: "" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.6 + y: 0.0 + z: 0.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "non-consumable" + font: "larryfont" + id: "nonconsumable/larrylabel" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "nonconsumable/larrybutton" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 5 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 485.0 + y: 449.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "reset" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/dirtylarry/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 300.0 + y: 88.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "button/button_normal" + id: "reset/larrybutton" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "reset" + layer: "" + inherit_alpha: true + slice9 { + x: 32.0 + y: 32.0 + z: 32.0 + w: 32.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.6 + y: 0.0 + z: 0.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "<- reset" + font: "larryfont" + id: "reset/larrylabel" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "reset/larrybutton" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 5 + overridden_fields: 8 + template_node_child: true text_leading: 1.0 text_tracking: 0.0 } diff --git a/main/main.gui_script b/main/main.gui_script index 74c01d4..92eefbd 100644 --- a/main/main.gui_script +++ b/main/main.gui_script @@ -1,3 +1,58 @@ +local dirtylarry = require "dirtylarry/dirtylarry" + +local items = { + "consumable", + "nonconsumable" +} + +local product_items = {} + +local function list_callback(self, products, error) + if error == nil then + for k,p in pairs(products) do + product_items[p.ident] = p + local name = p.ident.."/larrylabel" + gui.set_color(gui.get_node(name), vmath.vector4(1,1,1,1)) + end + else + print(error.error) + end +end + +local function buy_listener(self, transaction, error) + if not error and transaction.ident == "nonconsumable" then + local name = "reset/larrylabel" + gui.set_color(gui.get_node(name), vmath.vector4(1,1,1,1)) + product_items["reset"] = transaction + elseif not error then + iap.finish(transaction) + end +end + function init(self) - + msg.post(".", "acquire_input_focus") + iap.list(items, list_callback) + iap.set_listener(buy_listener) +end + +function on_input(self, action_id, action) + if product_items["consumable"] then + dirtylarry:button("consumable", action_id, action, function() + iap.buy("consumable") + end) + end + + if product_items["nonconsumable"] then + dirtylarry:button("nonconsumable", action_id, action, function() + iap.buy("nonconsumable") + end) + end + + if product_items["reset"] then + dirtylarry:button("reset", action_id, action, function() + iap.finish(product_items["reset"]) + product_items["reset"] = nil + gui.set_color(gui.get_node("reset/larrylabel"), vmath.vector4(1,0,0,1)) + end) + end end \ No newline at end of file