mirror of https://github.com/axmolengine/axmol.git
108 lines
3.0 KiB
Lua
108 lines
3.0 KiB
Lua
-- cclog
|
|
cclog = function(...)
|
|
print(string.format(...))
|
|
end
|
|
|
|
-- change table to enum type
|
|
function CreateEnumTable(tbl, index)
|
|
local enumTable = {}
|
|
local enumIndex = index or -1
|
|
for i, v in ipairs(tbl) do
|
|
enumTable[v] = enumIndex + i
|
|
end
|
|
return enumTable
|
|
end
|
|
|
|
-- back menu callback
|
|
local function MainMenuCallback()
|
|
local scene = CCScene:create()
|
|
scene:addChild(CreateTestMenu())
|
|
|
|
CCDirector:sharedDirector():replaceScene(scene)
|
|
end
|
|
|
|
-- add the menu item for back to main menu
|
|
function CreateBackMenuItem()
|
|
local label = CCLabelTTF:create("MainMenu", "Arial", 20)
|
|
local MenuItem = CCMenuItemLabel:create(label)
|
|
MenuItem:registerScriptTapHandler(MainMenuCallback)
|
|
|
|
local s = CCDirector:sharedDirector():getWinSize()
|
|
local Menu = CCMenu:create()
|
|
Menu:addChild(MenuItem)
|
|
Menu:setPosition(0, 0)
|
|
MenuItem:setPosition(s.width - 50, 25)
|
|
|
|
return Menu
|
|
end
|
|
|
|
Helper = {
|
|
index = 1,
|
|
createFunctioinTable = nil,
|
|
currentLayer = nil,
|
|
titleLabel = nil,
|
|
subtitleLabel = nil
|
|
}
|
|
function Helper.nextAction()
|
|
Helper.index = Helper.index + 1
|
|
if Helper.index > table.getn(Helper.createFunctionTable) then
|
|
Helper.index = 1
|
|
end
|
|
|
|
return Helper.newScene()
|
|
end
|
|
|
|
function Helper.backAction()
|
|
Helper.index = Helper.index - 1
|
|
if Helper.index == 0 then
|
|
Helper.index = table.getn(Helper.createFunctionTable)
|
|
end
|
|
|
|
return Helper.newScene()
|
|
end
|
|
|
|
function Helper.restartAction()
|
|
return Helper.newScene()
|
|
end
|
|
|
|
function Helper.newScene()
|
|
local scene = CCScene:create()
|
|
Helper.currentLayer = Helper.createFunctionTable[Helper.index]()
|
|
scene:addChild(Helper.currentLayer)
|
|
scene:addChild(CreateBackMenuItem())
|
|
|
|
CCDirector:sharedDirector():replaceScene(scene)
|
|
end
|
|
|
|
function Helper.initWithLayer(layer)
|
|
local size = CCDirector:sharedDirector():getWinSize()
|
|
Helper.titleLabel = CCLabelTTF:create("", "Arial", 28)
|
|
layer:addChild(Helper.titleLabel, 1)
|
|
Helper.titleLabel:setPosition(size.width / 2, size.height - 50)
|
|
|
|
Helper.subtitleLabel = CCLabelTTF:create("", "Thonburi", 16)
|
|
layer:addChild(Helper.subtitleLabel, 1)
|
|
Helper.subtitleLabel:setPosition(size.width / 2, size.height - 80)
|
|
|
|
-- menu
|
|
local item1 = CCMenuItemImage:create(s_pPathB1, s_pPathB2)
|
|
local item2 = CCMenuItemImage:create(s_pPathR1, s_pPathR2)
|
|
local item3 = CCMenuItemImage:create(s_pPathF1, s_pPathF2)
|
|
item1:registerScriptTapHandler(Helper.backAction)
|
|
item2:registerScriptTapHandler(Helper.restartAction)
|
|
item3:registerScriptTapHandler(Helper.nextAction)
|
|
|
|
local menu = CCMenu:create()
|
|
menu:addChild(item1)
|
|
menu:addChild(item2)
|
|
menu:addChild(item3)
|
|
menu:setPosition(CCPointMake(0, 0))
|
|
item1:setPosition(CCPointMake(size.width / 2 - item2:getContentSize().width * 2, item2:getContentSize().height / 2))
|
|
item2:setPosition(CCPointMake(size.width / 2, item2:getContentSize().height / 2))
|
|
item3:setPosition(CCPointMake(size.width / 2 + item2:getContentSize().width * 2, item2:getContentSize().height / 2))
|
|
layer:addChild(menu, 1)
|
|
|
|
local background = CCLayer:create()
|
|
layer:addChild(background, -10)
|
|
end
|