--==============================================================
-- Copyright (c) 2010-2017 Zipline Games, Inc.
-- All Rights Reserved.
-- http://getmoai.com
--==============================================================
--============================================================--
-- initTextLabelInterface
--============================================================--
local function initTextLabelInterface ( interface, superInterface )
----------------------------------------------------------------
function interface.affirmStyle ( self )
local style = self:getStyle ()
if not style then
style = MOAITextStyle.new ()
self:setStyle ( style )
end
return style
end
----------------------------------------------------------------
function interface.setFont ( self, font )
local style = self:affirmStyle ()
style:setFont ( font )
end
----------------------------------------------------------------
function interface.setTextSize ( self, points, dpi )
local style = self:affirmStyle ()
style:setSize ( points, dpi )
end
end
--============================================================--
-- MOAIFreeTypeFontReader
--============================================================--
if MOAIFreeTypeFontReader then
MOAIFont.extend (
'MOAIFont',
----------------------------------------------------------------
function ( interface, class, superInterface, superClass )
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the interface
function interface.loadFromTTF ( self, filename, charcodes, points, dpi )
self:load ( filename )
self:preloadGlyphs ( charcodes, points, dpi )
end
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the class
local new = class.new
function class.new ()
local self = new ()
superInterface.setCache ( self, MOAIDynamicGlyphCache.new ())
superInterface.setReader ( self, MOAIFreeTypeFontReader.new ())
return self
end
end
)
end
--============================================================--
-- MOAIHttpTask
--============================================================--
MOAIHttpTask = MOAIHttpTaskNSURL or MOAIHttpTaskNaCl or MOAIHttpTaskCurl
--============================================================--
-- MOAIJsonParser
--============================================================--
if MOAIJsonParser then
MOAIJsonParser.extend (
'MOAIJsonParser',
----------------------------------------------------------------
function ( class, superClass )
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the class
function class.decodeFromFile ( filename )
local json = MOAIFileSystem.loadFile ( filename )
return json and MOAIJsonParser.decode ( json )
end
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the class
function class.encodeToFile ( filename, table, flags )
flags = flags or ( MOAIJsonParser.JSON_INDENT + MOAIJsonParser.JSON_SORT_KEYS )
local json = MOAIJsonParser.encode ( table, flags )
MOAIFileSystem.saveFile ( filename, json )
end
end
)
end
--============================================================--
-- MOAIScriptNode
--============================================================--
MOAIScriptNode.extend (
'MOAIScriptNode',
----------------------------------------------------------------
function ( interface, class, superInterface, superClass )
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
function interface.connect ( self, srcField, node, dstField )
local attrSrc = self.__attrNames [ srcField ]
local attrDst = node.__attrNames [ dstField ]
if attrSrc and attrDst then
interface.setAttrLink ( self, attrSrc, node, attrDst )
end
end
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the class
local new = class.new
function class.new ()
local self = new ()
self.__attrNames = {}
local ref = superInterface.getRefTable ( self )
local mem = superInterface.getMemberTable ( self )
ref.__newindex = function ( self, key, value )
if self.__attrNames [ key ] then
mem [ key ] = value
superInterface.scheduleUpdate ( self )
else
mem [ key ] = value
end
end
return self
end
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
function interface.setAttrName ( self, attrId, attrName )
superInterface.setAttrName ( self, attrId, attrName )
self.__attrNames [ attrName ] = attrId
end
end
)
--============================================================--
-- MOAITextLabel
--============================================================--
MOAITextLabel.extend (
'MOAITextLabel',
----------------------------------------------------------------
function ( interface, class, superInterface, superClass )
initTextLabelInterface ( interface, superInterface )
interface.getString = superInterface.getText
interface.getStringBounds = superInterface.getTextBounds
interface.setString = superInterface.setText
end
)
--============================================================--
-- MOAIXmlParser
--============================================================--
if MOAIXmlParser then
MOAIXmlParser.extend (
'MOAIXmlParser',
----------------------------------------------------------------
function ( interface, class, superInterface, superClass )
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- extend the class
function class.events ( stream )
local parser = MOAIXmlParser.new ()
parser:setStream ( stream )
local more = true
local element = {
getAttribute = function ( name ) return parser:getElementAttribute ( name ) end,
getAttributes = function () return parser:getElementAttributes () end,
getErrorString = function () return parser:getErrorString () end,
getLineNumber = function () return parser:getLineNumber () end,
getName = function () return parser:getElementName () end,
getText = function () return parser:getElementText () end,
}
return function ()
if more then
local event = parser:step ()
more = ( event ~= MOAIXmlParser.XML_ERROR ) and ( event ~= MOAIXmlParser.DONE )
return event, element
end
end
end
end
)
end
--============================================================--
-- renames
--============================================================--
MOAIHashWriter = MOAIHashWriterCrypto or MOAIHashWriter
MOAIProp = MOAIGraphicsProp
MOAIStreamReader = MOAIStreamAdapter
MOAIStreamWriter = MOAIStreamAdapter
--============================================================--
-- Cross Platform
--============================================================--
MOAIApp = MOAIApp or MOAIAppAndroid or MOAIAppIOS
MOAIAudioSampler = MOAIAudioSampler or MOAIAudioSamplerCocoa or MOAIAudioSamplerAndroid
MOAIBrowser = MOAIBrowser or MOAIBrowserAndroid or MOAIBrowserIOS
MOAISafariIOS = MOAIBrowserIOS
MOAIDialog = MOAIDialog or MOAIDialogAndroid or MOAIDialogIOS or MOAIDialogSDL
MOAIMoviePlayer = MOAIMoviePlayer or MOAIMoviePlayerAndroid or MOAIMoviePlayerIOS
-- Optional 3rd party extensions
MOAIAdColony = MOAIAdColonyAndroid or MOAIAdColonyIOS
MOAIBilling = MOAIBilling or MOAIBillingAndroid or MOAIBillingIOS
MOAIChartBoost = MOAIChartBoostAndroid or MOAIChartBoostIOS
MOAICrittercism = MOAICrittercismAndroid or MOAICrittercismIOS
MOAIFacebook = MOAIFacebookAndroid or MOAIFacebookIOS
MOAINotifications = MOAINotificationsAndroid or MOAINotificationsIOS
MOAITapjoy = MOAITapjoyAndroid or MOAITapjoyIOS
MOAITwitter = MOAITwitterAndroid or MOAITwitterIOS
-- Compatibility
if MOAITwitterIOS then
MOAITwitter.sendTweet = function(text, url) MOAITwitterIOS.composeTweet(text, url) end
MOAITwitter.setAccessToken = function() end
MOAITwitter.init = function() end
MOAITwitter.isLoggedIn = function () return MOAITwitterIOS.canTweet() end
MOAITwitter.SESSION_DID_LOGIN = MOAITwitter.TWEET_SUCCESSFUL + 1
MOAITwitter.SESSION_DID_NOT_LOGIN = MOAITwitter.SESSION_DID_LOGIN + 1
MOAITwitter.login = function()
local listener = MOAITwitter.loginListeners[MOAITwitter.SESSION_DID_NOT_LOGIN]
if MOAITwitter.isLoggedIn() then
listener = MOAITwitter.loginListeners[MOAITwitter.SESSION_DID_LOGIN]
end
listener()
end
MOAITwitter._oldSetListener = MOAITwitter.setListener
MOAITwitter.setListener = function(event, listener)
if event == MOAITwitter.SESSION_DID_LOGIN or event == MOAITwitter.SESSION_DID_NOT_LOGIN then
MOAITwitter.loginListeners = MOAITwitter.loginListeners or {}
MOAITwitter.loginListeners[event] = listener
else
MOAITwitter._oldSetListener(event, listener)
end
end
end
--============================================================--
-- Managers
--============================================================--
local wrapGlobal = function ( obj, func )
return function ( ... ) return func ( obj, ... ) end
end
MOAIActionMgr = MOAISim.getActionMgr ()
MOAIActionMgr.getRoot = wrapGlobal ( MOAIActionMgr, MOAIActionMgr.getRoot )
MOAIActionMgr.setProfilingEnabled = wrapGlobal ( MOAIActionMgr, MOAIActionMgr.setProfilingEnabled )
MOAIActionMgr.setRoot = wrapGlobal ( MOAIActionMgr, MOAIActionMgr.setRoot )
MOAIActionMgr.setThreadInfoEnabled = wrapGlobal ( MOAIActionMgr, MOAIActionMgr.setThreadInfoEnabled )
if MOAIApp then
MOAIApp.lifecycle = {}
MOAIApp.addLifecycleListener = function ( eventID, listener )
local listeners = MOAIApp.lifecycle [ eventID ] or {}
MOAIApp.lifecycle [ eventID ] = listeners
table.insert ( listeners, listener )
end
MOAIApp.invokeLifecycleListener = function ( eventID, ... )
local listeners = MOAIApp.lifecycle [ eventID ]
if listeners then
for i, listener in pairs ( listeners ) do
listener ( ... )
end
end
end
end