axmol/tests/lua-tests/src/mainMenu.lua

275 lines
14 KiB
Lua

require "helper"
require "testResource"
require "VisibleRect"
require "AccelerometerTest/AccelerometerTest"
require "ActionManagerTest/ActionManagerTest"
require "ActionsEaseTest/ActionsEaseTest"
require "ActionsProgressTest/ActionsProgressTest"
require "ActionsTest/ActionsTest"
require "AssetsManagerTest/AssetsManagerTest"
require "AssetsManagerExTest/AssetsManagerExTest"
require "BillBoardTest/BillBoardTest"
require "BugsTest/BugsTest"
require "Camera3DTest/Camera3DTest"
require "ClickAndMoveTest/ClickAndMoveTest"
require "CocosDenshionTest/CocosDenshionTest"
require "ComponentTest/main"
require "CurrentLanguageTest/CurrentLanguageTest"
require "DrawPrimitivesTest/DrawPrimitivesTest"
require "EffectsTest/EffectsTest"
require "EffectsAdvancedTest/EffectsAdvancedTest"
require "ExtensionTest/ExtensionTest"
require "FileUtilsTest/FileUtilsTest"
require "FontTest/FontTest"
require "IntervalTest/IntervalTest"
require "KeypadTest/KeypadTest"
require "LabelTest/LabelTest"
require "LabelTestNew/LabelTestNew"
require "LayerTest/LayerTest"
require "LightTest/LightTest"
require "MenuTest/MenuTest"
require "MotionStreakTest/MotionStreakTest"
require "NewEventDispatcherTest/NewEventDispatcherTest"
require "NodeTest/NodeTest"
require "OpenGLTest/OpenGLTest"
require "ParallaxTest/ParallaxTest"
require "ParticleTest/ParticleTest"
require "Particle3DTest/Particle3DTest"
require "RenderTextureTest/RenderTextureTest"
require "RotateWorldTest/RotateWorldTest"
require "Sprite3DTest/Sprite3DTest"
require "SpriteTest/SpriteTest"
require "SceneTest/SceneTest"
require "SpineTest/SpineTest"
require "TerrainTest/TerrainTest"
require "TextInputTest/TextInputTest"
require "Texture2dTest/Texture2dTest"
require "TileMapTest/TileMapTest"
require "TouchesTest/TouchesTest"
require "TransitionsTest/TransitionsTest"
require "UserDefaultTest/UserDefaultTest"
require "VibrateTest/VibrateTest"
require "ZwoptexTest/ZwoptexTest"
require "LuaBridgeTest/LuaBridgeTest"
require "XMLHttpRequestTest/XMLHttpRequestTest"
require "PhysicsTest/PhysicsTest"
require "CaptureScreenTest/CaptureScreenTest"
require "VideoPlayerTest/VideoPlayerTest"
require "FastTiledMapTest/FastTiledMapTest"
require "NewAudioEngineTest/NewAudioEngineTest"
require "WebViewTest/WebViewTest"
require "SpritePolygonTest/SpritePolygonTest"
require "Physics3DTest/Physics3DTest"
require "Scene3DTest/Scene3DTest"
require "MaterialSystemTest/MaterialSystemTest"
require "NavMeshTest/NavMeshTest"
local LINE_SPACE = 40
local CurPos = {x = 0, y = 0}
local BeginPos = {x = 0, y = 0}
local audioEndineSupported = false
local currPlatform = cc.Application:getInstance():getTargetPlatform()
if (cc.PLATFORM_OS_WINDOWS == currPlatform or cc.PLATFORM_OS_MAC == currPlatform or cc.PLATFORM_OS_IPHONE == currPlatform or cc.PLATFORM_OS_IPAD == currPlatform or cc.PLATFORM_OS_ANDROID == currPlatform) then
audioEndineSupported = true
end
local assetManagerSupported = true;
if (currPlatform == cc.PLATFORM_OS_TIZEN) then
assetManagerSupported = false;
end
local luaByteCodeSupported = true;
if (currPlatform == cc.PLATFORM_OS_TIZEN) then
luaByteCodeSupported = false;
end
local _allTests = {
{ isSupported = true, name = "Accelerometer" , create_func= AccelerometerMain },
{ isSupported = true, name = "ActionManagerTest" , create_func = ActionManagerTestMain },
{ isSupported = true, name = "ActionsEaseTest" , create_func = EaseActionsTest },
{ isSupported = true, name = "ActionsProgressTest" , create_func = ProgressActionsTest },
{ isSupported = true, name = "ActionsTest" , create_func = ActionsTest },
{ isSupported = assetManagerSupported, name = "AssetsManagerTest" , create_func = AssetsManagerTestMain },
{ isSupported = true, name = "AssetsManagerExTest" , create_func = AssetsManagerExTestMain },
{ isSupported = audioEndineSupported, name = "AudioEngineTest", create_func = AudioEngineTest},
{ isSupported = false, name = "Box2dTest" , create_func= Box2dTestMain },
{ isSupported = false, name = "Box2dTestBed" , create_func= Box2dTestBedMain },
{ isSupported = true, name = "BillBoardTest" , create_func= BillBoardTestMain},
{ isSupported = true, name = "BugsTest" , create_func= BugsTestMain },
{ isSupported = true, name = "Camera3DTest" , create_func= Camera3DTestMain },
{ isSupported = true, name = "CaptureScreenTest" , create_func = CaptureScreenTestMain },
{ isSupported = false, name = "ChipmunkAccelTouchTest" , create_func= ChipmunkAccelTouchTestMain },
{ isSupported = true, name = "ClickAndMoveTest" , create_func = ClickAndMoveTest },
{ isSupported = true, name = "CocosDenshionTest" , create_func = CocosDenshionTestMain },
{ isSupported = true, name = "ComponentTest" , create_func = ComponentTestMain },
{ isSupported = false, name = "CurlTest" , create_func= CurlTestMain },
{ isSupported = true, name = "CurrentLanguageTest" , create_func= CurrentLanguageTestMain },
{ isSupported = true, name = "DrawPrimitivesTest" , create_func= DrawPrimitivesTest },
{ isSupported = true, name = "EffectsTest" , create_func = EffectsTest },
{ isSupported = true, name = "EffectAdvancedTest" , create_func = EffectAdvancedTestMain },
{ isSupported = true, name = "ExtensionsTest" , create_func= ExtensionsTestMain },
{ isSupported = true, name = "FastTiledMapTest" , create_func = FastTiledMapTestMain},
{ isSupported = true, name = "FileUtilsTest" , create_func = FileUtilsTestMain},
{ isSupported = true, name = "FontTest" , create_func = FontTestMain },
{ isSupported = true, name = "IntervalTest" , create_func = IntervalTestMain },
{ isSupported = true, name = "KeypadTest" , create_func= KeypadTestMain },
{ isSupported = true, name = "LabelTest" , create_func = LabelTest },
{ isSupported = true, name = "LabelTestNew" , create_func = LabelTestNew },
{ isSupported = true, name = "LayerTest" , create_func = LayerTestMain },
{ isSupported = true, name = "LightTest" , create_func = LightTestMain },
{ isSupported = true, name = "LuaBridgeTest" , create_func = LuaBridgeMainTest },
{ isSupported = true, name = "MaterialSystemTest" , create_func = MaterialSystemTest },
{ isSupported = true, name = "MenuTest" , create_func = MenuTestMain },
{ isSupported = true, name = "MotionStreakTest" , create_func = MotionStreakTest },
{ isSupported = false, name = "MutiTouchTest" , create_func= MutiTouchTestMain },
{ isSupported = true, name = "NavMeshTest" , create_func = NavMeshTest },
{ isSupported = true, name = "NewEventDispatcherTest" , create_func = NewEventDispatcherTest },
{ isSupported = true, name = "NodeTest" , create_func = CocosNodeTest },
{ isSupported = true, name = "OpenGLTest" , create_func= OpenGLTestMain },
{ isSupported = true, name = "ParallaxTest" , create_func = ParallaxTestMain },
{ isSupported = true, name = "ParticleTest" , create_func = ParticleTest },
{ isSupported = true, name = "Particle3D (PU)" , create_func = Particle3DTest },
{ isSupported = true, name = "PhysicsTest" , create_func = PhysicsTest },
{ isSupported = true, name = "Physics3DTest" , create_func = Physics3DTest },
{ isSupported = true, name = "RenderTextureTest" , create_func = RenderTextureTestMain },
{ isSupported = true, name = "RotateWorldTest" , create_func = RotateWorldTest },
{ isSupported = true, name = "SceneTest" , create_func = SceneTestMain },
{ isSupported = true, name = "Scene3DTest" , create_func= Scene3DTestMain },
{ isSupported = true, name = "SpineTest" , create_func = SpineTestMain },
{ isSupported = false, name = "SchdulerTest" , create_func= SchdulerTestMain },
{ isSupported = false, name = "ShaderTest" , create_func= ShaderTestMain },
{ isSupported = true, name = "Sprite3DTest" , create_func = Sprite3DTest },
{ isSupported = true, name = "TerrainTest" , create_func = TerrainTest },
{ isSupported = true, name = "SpriteTest" , create_func = SpriteTest },
{ isSupported = true, name = "SpritePolygonTest" , create_func = SpritePolygonTest },
{ isSupported = true, name = "TextInputTest" , create_func= TextInputTestMain },
{ isSupported = true, name = "Texture2DTest" , create_func = Texture2dTestMain },
{ isSupported = false, name = "TextureCacheTest" , create_func= TextureCacheTestMain },
{ isSupported = true, name = "TileMapTest" , create_func = TileMapTestMain },
{ isSupported = true, name = "TouchesTest" , create_func = TouchesTest },
{ isSupported = true, name = "TransitionsTest" , create_func = TransitionsTest },
{ isSupported = true, name = "UserDefaultTest" , create_func= UserDefaultTestMain },
{ isSupported = true, name = "VideoPlayerTest" , create_func= VideoPlayerTestMain },
{ isSupported = true, name = "WebViewTest" , create_func= WebViewTestMain },
{ isSupported = true, name = "XMLHttpRequestTest" , create_func = XMLHttpRequestTestMain },
{ isSupported = true, name = "VibrateTest" , create_func = VibrateTestMain },
{ isSupported = true, name = "ZwoptexTest" , create_func = ZwoptexTestMain }
}
local TESTS_COUNT = table.getn(_allTests)
-- create scene
local function CreateTestScene(nIdx)
cc.Director:getInstance():purgeCachedData()
local scene = _allTests[nIdx].create_func()
return scene
end
-- create menu
function CreateTestMenu()
local menuLayer = cc.Layer:create()
local function closeCallback()
cc.Director:getInstance():endToLua()
end
local function menuCallback(tag)
print(tag)
local Idx = tag - 10000
local testScene = CreateTestScene(Idx)
if testScene then
cc.Director:getInstance():replaceScene(testScene)
end
end
-- add close menu
local s = cc.Director:getInstance():getWinSize()
local CloseItem = cc.MenuItemImage:create(s_pPathClose, s_pPathClose)
CloseItem:registerScriptTapHandler(closeCallback)
CloseItem:setPosition(cc.p(s.width - 30, s.height - 30))
local CloseMenu = cc.Menu:create()
CloseMenu:setPosition(0, 0)
CloseMenu:addChild(CloseItem)
menuLayer:addChild(CloseMenu)
local targetPlatform = cc.Application:getInstance():getTargetPlatform()
if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) then
CloseMenu:setVisible(false)
end
-- add menu items for tests
local MainMenu = cc.Menu:create()
local index = 0
local obj = nil
for index, obj in pairs(_allTests) do
local testLabel = cc.Label:createWithTTF(obj.name, s_arialPath, 24)
testLabel:setAnchorPoint(cc.p(0.5, 0.5))
local testMenuItem = cc.MenuItemLabel:create(testLabel)
if not obj.isSupported then
testMenuItem:setEnabled(false)
end
if obj.name == "WebViewTest"
or obj.name == "VibrateTest"
or obj.name == "VideoPlayerTest" then
if cc.PLATFORM_OS_IPHONE ~= targetPlatform and cc.PLATFORM_OS_ANDROID ~= targetPlatform then
testMenuItem:setEnabled(false)
end
end
if obj.name == "Physics3DTest" and nil == cc.Physics3DComponent then
testMenuItem:setEnabled(false)
end
if obj.name == "NavMeshTest" and nil == cc.NavMesh then
testMenuItem:setEnabled(false)
end
testMenuItem:registerScriptTapHandler(menuCallback)
testMenuItem:setPosition(cc.p(s.width / 2, (s.height - (index) * LINE_SPACE)))
MainMenu:addChild(testMenuItem, index + 10000, index + 10000)
end
MainMenu:setContentSize(cc.size(s.width, (TESTS_COUNT + 1) * (LINE_SPACE)))
MainMenu:setPosition(CurPos.x, CurPos.y)
menuLayer:addChild(MainMenu)
-- handling touch events
local function onTouchBegan(touch, event)
BeginPos = touch:getLocation()
-- CCTOUCHBEGAN event must return true
return true
end
local function onTouchMoved(touch, event)
local location = touch:getLocation()
local nMoveY = location.y - BeginPos.y
local curPosx, curPosy = MainMenu:getPosition()
local nextPosy = curPosy + nMoveY
local winSize = cc.Director:getInstance():getWinSize()
if nextPosy < 0 then
MainMenu:setPosition(0, 0)
return
end
if nextPosy > ((TESTS_COUNT + 1) * LINE_SPACE - winSize.height) then
MainMenu:setPosition(0, ((TESTS_COUNT + 1) * LINE_SPACE - winSize.height))
return
end
MainMenu:setPosition(curPosx, nextPosy)
BeginPos = {x = location.x, y = location.y}
CurPos = {x = curPosx, y = nextPosy}
end
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
local eventDispatcher = menuLayer:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, menuLayer)
return menuLayer
end