Added example. Initial commit

This commit is contained in:
Alexey Gulev 2019-09-18 14:21:58 +02:00
parent 18e510ea49
commit 04a09e18db
3 changed files with 488 additions and 13 deletions

View File

@ -10,14 +10,19 @@ height = 640
[android] [android]
input_method = HiddenInputField input_method = HiddenInputField
package = com.defold.iap package = com.defold.iaprtestapp
version_code = 3
[project] [project]
title = extension-iap title = extension-iap
dependencies = https://github.com/andsve/dirtylarry/archive/master.zip
[library] [library]
include_dirs = extension-iap include_dirs = extension-iap
[ios] [ios]
bundle_identifier = com.defold.iap bundle_identifier = com.defold.iaprtestapp
[iap]
auto_finish_transactions = 0

View File

@ -11,8 +11,8 @@ background_color {
} }
nodes { nodes {
position { position {
x: 467.0 x: 171.0
y: 350.0 y: 569.0
z: 0.0 z: 0.0
w: 1.0 w: 1.0
} }
@ -23,8 +23,8 @@ nodes {
w: 1.0 w: 1.0
} }
scale { scale {
x: 2.0 x: 1.0
y: 2.0 y: 1.0
z: 1.0 z: 1.0
w: 1.0 w: 1.0
} }
@ -40,18 +40,112 @@ nodes {
z: 1.0 z: 1.0
w: 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 type: TYPE_TEXT
blend_mode: BLEND_MODE_ALPHA blend_mode: BLEND_MODE_ALPHA
text: "<text>" text: "consumable"
font: "system_font" font: "larryfont"
id: "text" id: "consumable/larrylabel"
xanchor: XANCHOR_NONE xanchor: XANCHOR_NONE
yanchor: YANCHOR_NONE yanchor: YANCHOR_NONE
pivot: PIVOT_CENTER pivot: PIVOT_CENTER
outline { outline {
x: 1.0 x: 0.0
y: 1.0 y: 0.0
z: 1.0 z: 0.0
w: 1.0 w: 1.0
} }
shadow { shadow {
@ -62,12 +156,333 @@ nodes {
} }
adjust_mode: ADJUST_MODE_FIT adjust_mode: ADJUST_MODE_FIT
line_break: false line_break: false
parent: "consumable/larrybutton"
layer: "" layer: ""
inherit_alpha: true inherit_alpha: true
alpha: 1.0 alpha: 1.0
outline_alpha: 1.0 outline_alpha: 1.0
shadow_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 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_leading: 1.0
text_tracking: 0.0 text_tracking: 0.0
} }

View File

@ -1,3 +1,58 @@
function init(self) 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 end