Commit 59174af6 59174af6308ab45c913210b0aa82b0f327435070 by jinwawa

0806

1 parent bfabb962
Showing 170 changed files with 3641 additions and 95 deletions
......@@ -36,7 +36,7 @@ function LoadingScene:onCreate()
end
self:addChild(self.ui);
--logD("LoadingScene------------->"..display.width);
self.ui:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self.ui);
......
{
"init_cfg": {
"isLandscape": true,
"isWindowTop": false,
"name": "rubbish",
"width": 960,
"height": 640,
"entry": "src/main.lua",
"consolePort": 6050,
"uploadPort": 6060
},
"simulator_screen_size": [
{
"title": "iPhone 3Gs (480x320)",
"width": 480,
"height": 320
},
{
"title": "iPhone 4 (960x640)",
"width": 960,
"height": 640
},
{
"title": "iPhone 5 (1136x640)",
"width": 1136,
"height": 640
},
{
"title": "iPad (1024x768)",
"width": 1024,
"height": 768
},
{
"title": "iPad Retina (2048x1536)",
"width": 2048,
"height": 1536
},
{
"title": "Android (800x480)",
"width": 800,
"height": 480
},
{
"title": "Android (854x480)",
"width": 854,
"height": 480
},
{
"title": "Android (1280x720)",
"width": 1280,
"height": 720
},
{
"title": "Android (1920x1080)",
"width": 1920,
"height": 1080
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>frames</key>
<dict>
<key>defaultarmature1.png</key>
<dict>
<key>width</key>
<integer>20</integer>
<key>height</key>
<integer>32</integer>
<key>originalWidth</key>
<integer>20</integer>
<key>originalHeight</key>
<integer>32</integer>
<key>x</key>
<integer>0</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmaturehat.png</key>
<dict>
<key>width</key>
<integer>45</integer>
<key>height</key>
<integer>45</integer>
<key>originalWidth</key>
<integer>45</integer>
<key>originalHeight</key>
<integer>45</integer>
<key>x</key>
<integer>22</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature7.png</key>
<dict>
<key>width</key>
<integer>14</integer>
<key>height</key>
<integer>11</integer>
<key>originalWidth</key>
<integer>14</integer>
<key>originalHeight</key>
<integer>11</integer>
<key>x</key>
<integer>69</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature2.png</key>
<dict>
<key>width</key>
<integer>18</integer>
<key>height</key>
<integer>25</integer>
<key>originalWidth</key>
<integer>18</integer>
<key>originalHeight</key>
<integer>25</integer>
<key>x</key>
<integer>85</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature6.png</key>
<dict>
<key>width</key>
<integer>47</integer>
<key>height</key>
<integer>40</integer>
<key>originalWidth</key>
<integer>47</integer>
<key>originalHeight</key>
<integer>40</integer>
<key>x</key>
<integer>105</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature4.png</key>
<dict>
<key>width</key>
<integer>14</integer>
<key>height</key>
<integer>11</integer>
<key>originalWidth</key>
<integer>14</integer>
<key>originalHeight</key>
<integer>11</integer>
<key>x</key>
<integer>154</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature5.png</key>
<dict>
<key>width</key>
<integer>19</integer>
<key>height</key>
<integer>23</integer>
<key>originalWidth</key>
<integer>19</integer>
<key>originalHeight</key>
<integer>23</integer>
<key>x</key>
<integer>170</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature3.png</key>
<dict>
<key>width</key>
<integer>24</integer>
<key>height</key>
<integer>47</integer>
<key>originalWidth</key>
<integer>24</integer>
<key>originalHeight</key>
<integer>47</integer>
<key>x</key>
<integer>191</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
<key>defaultarmature8.png</key>
<dict>
<key>width</key>
<integer>13</integer>
<key>height</key>
<integer>18</integer>
<key>originalWidth</key>
<integer>13</integer>
<key>originalHeight</key>
<integer>18</integer>
<key>x</key>
<integer>217</integer>
<key>y</key>
<integer>0</integer>
<key>offsetX</key>
<real>0</real>
<key>offsetY</key>
<real>0</real>
</dict>
</dict>
<key>metadata</key>
<dict>
<key>format</key>
<integer>0</integer>
<key>textureFileName</key>
<string>DemoPlayer0.png</string>
<key>realTextureFileName</key>
<string>DemoPlayer0.png</string>
<key>size</key>
<string>{1024,1024}</string>
</dict>
<key>texture</key>
<dict>
<key>width</key>
<integer>1024</integer>
<key>height</key>
<integer>1024</integer>
</dict>
</dict>
</plist>
\ No newline at end of file
No preview for this file type
info face="΢ź" size=-72 bold=1 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0
common lineHeight=96 base=76 scaleW=256 scaleH=512 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
page id=0 file="num_cake_green_0.png"
chars count=11
char id=43 x=93 y=336 width=78 height=70 xoffset=-1 yoffset=-1 xadvance=76 page=0 chnl=15
char id=48 x=101 y=84 width=98 height=83 xoffset=-1 yoffset=-1 xadvance=96 page=0 chnl=15
char id=49 x=202 y=0 width=52 height=83 xoffset=-1 yoffset=-1 xadvance=50 page=0 chnl=15
char id=50 x=0 y=336 width=92 height=83 xoffset=-1 yoffset=-1 xadvance=90 page=0 chnl=15
char id=51 x=0 y=168 width=96 height=83 xoffset=-1 yoffset=-1 xadvance=94 page=0 chnl=15
char id=52 x=97 y=168 width=96 height=83 xoffset=-1 yoffset=-1 xadvance=94 page=0 chnl=15
char id=53 x=0 y=252 width=96 height=83 xoffset=-1 yoffset=-1 xadvance=94 page=0 chnl=15
char id=54 x=97 y=252 width=96 height=83 xoffset=-1 yoffset=-1 xadvance=94 page=0 chnl=15
char id=55 x=0 y=0 width=100 height=83 xoffset=-1 yoffset=-1 xadvance=98 page=0 chnl=15
char id=56 x=101 y=0 width=100 height=83 xoffset=-1 yoffset=-1 xadvance=98 page=0 chnl=15
char id=57 x=0 y=84 width=100 height=83 xoffset=-1 yoffset=-1 xadvance=98 page=0 chnl=15
info face="΢ź" size=-72 bold=1 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0
common lineHeight=96 base=76 scaleW=128 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
page id=0 file="num_clock_0.png"
chars count=10
char id=48 x=0 y=0 width=43 height=54 xoffset=-1 yoffset=-1 xadvance=41 page=0 chnl=15
char id=49 x=0 y=165 width=27 height=54 xoffset=-1 yoffset=-1 xadvance=25 page=0 chnl=15
char id=50 x=88 y=0 width=39 height=54 xoffset=-1 yoffset=-1 xadvance=37 page=0 chnl=15
char id=51 x=42 y=55 width=40 height=54 xoffset=-1 yoffset=-1 xadvance=38 page=0 chnl=15
char id=52 x=44 y=0 width=43 height=54 xoffset=-1 yoffset=-1 xadvance=41 page=0 chnl=15
char id=53 x=82 y=110 width=39 height=54 xoffset=-1 yoffset=-1 xadvance=37 page=0 chnl=15
char id=54 x=83 y=55 width=40 height=54 xoffset=-1 yoffset=-1 xadvance=38 page=0 chnl=15
char id=55 x=0 y=55 width=41 height=54 xoffset=-1 yoffset=-1 xadvance=39 page=0 chnl=15
char id=56 x=0 y=110 width=40 height=54 xoffset=-1 yoffset=-1 xadvance=38 page=0 chnl=15
char id=57 x=41 y=110 width=40 height=54 xoffset=-1 yoffset=-1 xadvance=38 page=0 chnl=15
No preview for this file type
No preview for this file type
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>frames</key>
<dict>
<key>bg_best_show.png</key>
<dict>
<key>frame</key>
<string>{{270,2},{202,82}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,1},{202,82}}</string>
<key>sourceSize</key>
<string>{202,84}</string>
</dict>
<key>bg_fanpai_num.png</key>
<dict>
<key>frame</key>
<string>{{270,86},{198,54}}</string>
<key>offset</key>
<string>{-1,1}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,2},{198,54}}</string>
<key>sourceSize</key>
<string>{200,60}</string>
</dict>
<key>btn_guess_introduce.png</key>
<dict>
<key>frame</key>
<string>{{260,399},{93,90}}</string>
<key>offset</key>
<string>{0,1}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{2,1},{93,90}}</string>
<key>sourceSize</key>
<string>{97,94}</string>
</dict>
<key>btn_guess_next.png</key>
<dict>
<key>frame</key>
<string>{{2,2},{266,91}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{266,91}}</string>
<key>sourceSize</key>
<string>{266,91}</string>
</dict>
<key>candy_1.png</key>
<dict>
<key>frame</key>
<string>{{96,294},{107,106}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{0,0},{107,106}}</string>
<key>sourceSize</key>
<string>{107,106}</string>
</dict>
<key>candy_1001.png</key>
<dict>
<key>frame</key>
<string>{{265,142},{42,60}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{42,60}}</string>
<key>sourceSize</key>
<string>{42,60}</string>
</dict>
<key>candy_1002.png</key>
<dict>
<key>frame</key>
<string>{{2,427},{72,78}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{72,78}}</string>
<key>sourceSize</key>
<string>{72,78}</string>
</dict>
<key>candy_1003.png</key>
<dict>
<key>frame</key>
<string>{{76,427},{88,75}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{88,75}}</string>
<key>sourceSize</key>
<string>{88,75}</string>
</dict>
<key>candy_1004.png</key>
<dict>
<key>frame</key>
<string>{{136,224},{93,67}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{93,67}}</string>
<key>sourceSize</key>
<string>{93,67}</string>
</dict>
<key>candy_1005.png</key>
<dict>
<key>frame</key>
<string>{{231,224},{61,44}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{0,0},{61,44}}</string>
<key>sourceSize</key>
<string>{61,44}</string>
</dict>
<key>candy_2.png</key>
<dict>
<key>frame</key>
<string>{{166,403},{104,92}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{0,0},{104,92}}</string>
<key>sourceSize</key>
<string>{104,92}</string>
</dict>
<key>candy_2001.png</key>
<dict>
<key>frame</key>
<string>{{2,294},{131,92}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{0,0},{131,92}}</string>
<key>sourceSize</key>
<string>{131,92}</string>
</dict>
<key>candy_2002.png</key>
<dict>
<key>frame</key>
<string>{{165,95},{98,127}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{98,127}}</string>
<key>sourceSize</key>
<string>{98,127}</string>
</dict>
<key>candy_2003.png</key>
<dict>
<key>frame</key>
<string>{{2,198},{94,132}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<true/>
<key>sourceColorRect</key>
<string>{{0,0},{94,132}}</string>
<key>sourceSize</key>
<string>{94,132}</string>
</dict>
<key>candy_3.png</key>
<dict>
<key>frame</key>
<string>{{204,293},{88,104}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{88,104}}</string>
<key>sourceSize</key>
<string>{88,104}</string>
</dict>
<key>candy_3001.png</key>
<dict>
<key>frame</key>
<string>{{2,95},{161,101}}</string>
<key>offset</key>
<string>{0,0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0,0},{161,101}}</string>
<key>sourceSize</key>
<string>{161,101}</string>
</dict>
</dict>
<key>metadata</key>
<dict>
<key>format</key>
<integer>2</integer>
<key>realTextureFileName</key>
<string>candy_textures.png</string>
<key>size</key>
<string>{512,512}</string>
<key>smartupdate</key>
<string>$TexturePacker:SmartUpdate:fcc5e2e8bfcc5afc79643ea454503b13:1/1$</string>
<key>textureFileName</key>
<string>candy_textures.png</string>
</dict>
</dict>
</plist>
<?xml version="1.0"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<propertyGroup>
<StartProgram>D:\xhx\client\runtime\win32\GuandanAndroid.exe</StartProgram>
<StartArguments>-workdir D:\xhx\client\rubbish\client</StartArguments>
<StartWorkingDirectory>D:\xhx\client\runtime\win32</StartWorkingDirectory>
</propertyGroup>
</Project>
\ No newline at end of file
......@@ -36,7 +36,7 @@
<Folder Include="src\app\tools\pl\" />
<Folder Include="src\app\views\" />
<Folder Include="src\app\views\effect\" />
<Folder Include="src\app\views\candy\" />
<Folder Include="src\app\views\rubbish\" />
<Folder Include="src\app\views\scene\" />
<Folder Include="src\app\views\view\" />
<Folder Include="src\cocos\" />
......@@ -91,14 +91,14 @@
<Compile Include="src\app\tools\pl\compat.lua" />
<Compile Include="src\app\tools\pl\utils.lua" />
<Compile Include="src\app\tools\pl\xml.lua" />
<Compile Include="src\app\views\candy\Candy.lua" />
<Compile Include="src\app\views\candy\GameFailView.lua" />
<Compile Include="src\app\views\candy\GameNextView.lua" />
<Compile Include="src\app\views\candy\GamePayConfirmView.lua" />
<Compile Include="src\app\views\candy\GamePayView.lua" />
<Compile Include="src\app\views\candy\game_data.lua" />
<Compile Include="src\app\views\candy\GameOverView.lua" />
<Compile Include="src\app\views\candy\GameStartView.lua" />
<Compile Include="src\app\views\rubbish\Rubbish.lua" />
<Compile Include="src\app\views\rubbish\GameFailView.lua" />
<Compile Include="src\app\views\rubbish\GameNextView.lua" />
<Compile Include="src\app\views\rubbish\GamePayConfirmView.lua" />
<Compile Include="src\app\views\rubbish\GamePayView.lua" />
<Compile Include="src\app\views\rubbish\game_data.lua" />
<Compile Include="src\app\views\rubbish\GameOverView.lua" />
<Compile Include="src\app\views\rubbish\GameStartView.lua" />
<Compile Include="src\app\views\effect\EffectBoom.lua" />
<Compile Include="src\app\views\effect\EffectFntPop.lua" />
<Compile Include="src\app\views\effect\EffectFruitLight.lua" />
......@@ -110,9 +110,9 @@
<Compile Include="src\app\views\effect\EffectStright.lua" />
<Compile Include="src\app\views\effect\EffectVoiceChat.lua" />
<Compile Include="src\app\views\scene\BaseScene.lua" />
<Compile Include="src\app\views\candy\LoadingScene.lua" />
<Compile Include="src\app\views\candy\GameScene.lua" />
<Compile Include="src\app\views\scene\BaseSceneNew.lua" />
<Compile Include="src\app\views\rubbish\LoadingScene.lua" />
<Compile Include="src\app\views\rubbish\GameScene.lua" />
<Compile Include="src\app\views\view\AlertView.lua" />
<Compile Include="src\app\views\view\BaseView.lua" />
<Compile Include="src\app\views\view\BaseViewNew.lua" />
......
local BaseData = class("BaseData")
local password = "zhjianctkj0571";
function BaseData:ctor( fileName )
self.fileName = fileName
self.data = {}
end
function BaseData:saveToFile( )
local str = json.encode(self.data)
local targetPlatform = cc.Application:getInstance():getTargetPlatform()
if targetPlatform ~= cc.PLATFORM_OS_WINDOWS then
-- str = MCCrypto:encryptXXTEA(str, string.len(str), password, string.len(password));
end
local fullFilename = cc.FileUtils:getInstance():getWritablePath()..self.fileName
local file = io.open(fullFilename, "w")
file:write(str)
file:close()
end
function BaseData:readFromFile( )
local result = false
local fullFilename = cc.FileUtils:getInstance():getWritablePath()..self.fileName
local file = io.open(fullFilename, "r")
if file then
local str= file:read("*all")
-- print(str)
file:close()
if pcall(function()
local targetPlatform = cc.Application:getInstance():getTargetPlatform()
if targetPlatform ~= cc.PLATFORM_OS_WINDOWS then
-- str = MCCrypto:decryptXXTEA(str, string.len(str), password, string.len(password))
end
self.data = json.decode(str)
result = true
end) then
--todo
else
self.data = {}
print("invalid json data: "..self.fileName)
end
else
self.data = {}
end
return result
end
function BaseData:resetData( )
self.data = {}
self:saveToFile()
end
return BaseData
\ No newline at end of file
local MyApp = class("MyApp", cc.load("mvc").AppBase)
function MyApp:onCreate()
math.randomseed(os.time())
math.randomseed(os.time());
end
--function MyApp:enterScene(sceneName, transition, time, more)
-- return display.runScene(display.newScene(sceneName),transition,time,more)
--end
function MyApp:enterScene(sceneName, args, transitionType, time, more)
local scenePackageName = "src.app.views.scene."..sceneName;
print("볡"..scenePackageName);
local sceneClass = require(scenePackageName)
-- local scene = sceneClass.new(unpack(checktable(args)))
local scene = sceneClass.new(args)
display.runScene(scene, transitionType, time, more)
end
function MyApp:enterMiniGameScene(sceneName, args, transitionType, time, more)
local scenePackageName = "src.app.views."..sceneName;
print("볡"..scenePackageName);
local sceneClass = require(scenePackageName)
-- local scene = sceneClass.new(unpack(checktable(args)))
local scene = sceneClass.new(args)
display.runScene(scene, transitionType, time, more)
end
return MyApp
......
cc.exports.GameConfig={}; local xml = require("core.utils.pl.xml"); GameConfig.relief_cnt = 2;GameConfig.relief_base = 2000; --低保底限 return GameConfig;
\ No newline at end of file
cc.exports.strings = {}
strings.msg_100 = "版本已经升级,请更新以便更好的体验游戏!";
strings.msg_101 = "无法获取服务器地址,请联系商家!";
strings.msg_1001 = "服务器出现异常,请重新登录!";
strings.msg_1002 = "网络已断开,请检查网络是否正常!";
strings.msg_1003 = "点券不足,去充值吧?";
strings.msg_1004 = "登录失败,请检查网络连接是否正常!";
strings.msg_1005 = "您的账号已在其他地方登录!";
strings.msg_1006 = "你慢了一步,此昵称已被使用!";
strings.msg_1007 = "昵称修改成功!";
strings.msg_1008 = "请随机选择一个昵称!";
strings.msg_1009 = "头像修改成功!";
strings.msg_1010 = "未知错误";
strings.msg_1011 = "已经是当前头像!";
strings.msg_1012 = "每局扣除1张房卡";
strings.msg_1013 = "房主每局扣除4张房卡";
strings.msg_1014 = "每局开始消耗%s金币";
strings.msg_1015 = "我的房卡数量:%s张";
strings.msg_1016 = "今日抽奖已完成!";
strings.msg_1017 = "需要完成%s局才能进行抽奖";
strings.msg_1018 = "时间没到,无法领取!";
strings.msg_1019 = "每局扣除4张房卡";
strings.msg_1020 = "你的金币太多啦,高倍场才适合您!前往赚个盆满钵满吧!";
strings.msg_1021 = "长时间未操作,你已经离开游戏";
strings.msg_1022 = "你已经离开游戏";
strings.msg_1023 = "目前金币不足,给您发放今日补助\n金币%s,祝您游戏愉快!";
strings.msg_1024 = "返回到游戏大厅?";
strings.msg_1025 = "今日获得%s已达上限";
strings.msg_1026 = "勋章不足";
strings.msg_2001 = "牌型不对哦!";
strings.msg_2002 = "是否确定要退出游戏房间?";
strings.msg_2003 = "金币不足";
strings.msg_2004 = "房主离开,房间解散!";
strings.msg_2005 = "游戏正在进行中,确定要退出吗?";
strings.msg_2006 = "无法进入该房间";
strings.msg_2007 = "房间已满";
strings.msg_2008 = "道具不足";
strings.msg_2009 = "房卡不足,是否去购买?";
strings.msg_2010 = "补签卡不足,是否去购买?";
strings.msg_2011 = "该道具不存在";
strings.msg_2012 = "无法使用该道具";
strings.msg_2013 = "金币不足,去快速获得吗?";
strings.msg_2014 = "抗贡";
strings.msg_2015 = "不符合还贡规则!";
strings.msg_2016 = "不符合进贡规则!";
strings.msg_2017 = "购买失败!";
strings.msg_2018 = "没有牌大过上家";
strings.msg_2019 = "牌不够大哦!";
strings.msg_2020 = "出更大的“%s”管他!";
strings.msg_2021 = "不会吧,“天王炸”你也想管!";
strings.msg_2022 = "只能出“三带二”或“三张”哦!";
strings.msg_2023 = "只能出5张连续的“顺子”!";
strings.msg_2024 = "只能出3连对的“木板”!";
strings.msg_2025 = "只能出2连三张的“钢板”!";
strings.msg_2026 = "没有同花顺!";
strings.msg_2027 = "先选中要单独放置的牌!";
strings.msg_2028 = "离开房间会切换至托管模式,确定要离开吗?";
strings.msg_2029 = "正在牌局中,无法退出!";
strings.msg_2030 = "暂无战况信息";
strings.msg_2031 = "请先选择水果押注!";
strings.msg_2032 = "请选择要出的牌!";
return strings;
\ No newline at end of file
EnumErrorCode = {}
EnumErrorCode.EC_SUCCESS = 0; --成功
EnumErrorCode.EC_ERR_CODE = 1; --错误
EnumErrorCode.EC_VALUE_INVALID = 2; --无效数值
EnumErrorCode.EC_LOGIN_T = 3; --被登陆上来的用户T掉
EnumErrorCode.EC_INEXISTENT_ITEM = 4; --不存在,道具
EnumErrorCode.EC_INEXISTENT_USER = 5; --不存在,用户
EnumErrorCode.EC_EXISTENT_ROLE = 6; --存在,角色
EnumErrorCode.EC_INEXISTENT_ACCOUNT = 7; --不存在,帐号
EnumErrorCode.EC_NO_APPROVED = 8; --尚未通过身份校验
EnumErrorCode.EC_EVENT_LIMIT = 9; --事件上限
EnumErrorCode.EC_USER_LEVEL = 10; --用户等级不足
EnumErrorCode.EC_USER_BTL = 11; --用户在战斗状态
EnumErrorCode.EC_PASSWORD = 14; --密码错误
EnumErrorCode.EC_CHAT_LEN_MAX = 15; --聊天长度上限
EnumErrorCode.EC_EXCEL_ERROR = 17; --配置表错误
EnumErrorCode.EC_BUY_TIMES_UP_TO_LIMIT = 18; --购买次数达到上限
EnumErrorCode.EC_USER_IN_ROOM = 19; --用户在房间
EnumErrorCode.EC_USER_BASE_MONEY = 20; --用户押金不足
EnumErrorCode.EC_USER_OUT_ROOM = 21; --用户在房间外
EnumErrorCode.EC_USER_IN_RUM_ROOM = 22; --用户在运行的房间
EnumErrorCode.EC_USER_IN_LOBBY = 23; --用户在大厅中
EnumErrorCode.EC_USER_OUT_LOBBY = 24; --用户不在大厅中
EnumErrorCode.EC_USER_NICK_EXIST = 25; --用户昵称已存在
EnumErrorCode.EC_INEXISTENT_ROOM = 26; --不存在,房间
EnumErrorCode.EC_FULL_ROOM = 27; --满,房间
EnumErrorCode.EC_MAIL_INEXISTENT = 28; --邮件不存在
EnumErrorCode.EC_MAIL_ATTACHMENT_INEXISTENT = 29; --邮件无附件
\ No newline at end of file
EnumEvent={};EnumEvent.SOCKET_DISCONNECT = "socket_disconnect";EnumEvent.SOCKET_RECONNECT = "socket_reconnect"; EnumEvent.LOGIN_SUCCESS = "login_success";EnumEvent.LOGIN_FAILD = "login_faild"; EnumEvent.USER_INFO = "user_info"; EnumEvent.ROOM_ENTER_MULTI = "room_enter_multi";EnumEvent.ROOM_ENTER_FAILD = "room_enter_faild";EnumEvent.ROOM_ENTER_FAILD_BUY_CARD_SUCCESS = "room_enter_faild_buy_card_success"; EnumEvent.ROOM_USERS = "room_users";EnumEvent.ROOM_USERS_SCORE = "room_users_score";EnumEvent.ROOM_MY_POKERS = "room_my_pokers";EnumEvent.ROOM_GONG_FLAG = "room_gong_flag";EnumEvent.ROOM_JIN_HUAN_GONG = "room_jin_huan_gong";EnumEvent.GAME_WHO_SHOT = "game_who_shot";EnumEvent.GAME_SHOT_POKERS = "game_shot_pokers";EnumEvent.GAME_SHOT_ERROR = "game_shot_error";EnumEvent.GAME_PASS = "game_pass";EnumEvent.GAME_ALL_PASS = "game_all_pass";EnumEvent.GAME_POKER_FINISH = "game_poker_finish";EnumEvent.GAME_RET = "game_ret";EnumEvent.GAME_OVER = "game_over";EnumEvent.GAME_DEBUG_POKER = "game_debug_poker"; EnumEvent.SINGLE_POKER_GONG = "single_poker_gong";EnumEvent.SINGLE_POKER_SHOT = "single_poker_shot"; EnumEvent.POKER_NUM = "poker_num"; --剩余牌数量事件 EnumEvent.UPDATE_ITEMS = "update_items"; --更新道具 EnumEvent.UPDATE_COUPONS = "update_coupons"; --更新点券 EnumEvent.UPDATE_COIN = "update_coin"; --更新金币 EnumEvent.UPDATE_CHARM = "update_charm"; --更新魅力值 EnumEvent.UPDATE_TASK = "update_task"; --更新任务 EnumEvent.UPDATE_MAIL = "update_mail"; --更新邮件 EnumEvent.UPDATE_RANK_REWARD = "update_rank_reward"; --更新排行榜奖励 EnumEvent.UPDATE_ACTIVITY = "update_activity"; --更新活动 EnumEvent.UPDATE_WIN = "update_win"; --更新胜利次数 EnumEvent.UPDATE_LOST = "update_lost"; --更新失败次数 EnumEvent.UPDATE_SCORE = "update_score"; --更新分数 EnumEvent.UPDATE_VIP = "update_vip"; --更新VIP EnumEvent.UPDATE_FIRST_PAY = "update_first_pay"; --更新首充礼包 EnumEvent.UPDATE_FIRST_CYCLE_PAY = "update_first_cycle_pay"; --更新周期首充礼包 EnumEvent.UPDATE_FREE_ITEM = "update_free_item"; --更新免费项信息 EnumEvent.USE_ITEM = "use_item"; --使用道具 EnumEvent.NICK_CHANGE_SUCCESS = "nick_change_success"; --昵称修改成功 EnumEvent.HEAD_CHANGE_SUCCESS = "head_change_success"; --头像修改成功 EnumEvent.HEAD_FRAME_CHANGE_SUCCESS = "head_frame_change_success"; --头像框修改成功 EnumEvent.MJ_ZHUANG = "mj_zhuang"; --麻将庄家 EnumEvent.MJ_DING = "mj_ding"; --麻将定牌 EnumEvent.MJ_DA = "mj_da"; --麻将打牌 EnumEvent.MJ_FA_NOTIFY = "mj_fa_notify"; --麻将发牌通知 EnumEvent.MJ_HGPG = "mj_hgpg"; --麻将胡杠碰过 EnumEvent.MJ_PENG = "mj_peng"; --麻将碰 EnumEvent.MJ_GANG = "mj_gang"; --麻将杠 EnumEvent.MJ_HU = "mj_hu"; --麻将杠 EnumEvent.MJ_GUO = "mj_guo"; --麻将过 EnumEvent.MJ_YI_PAO_DUO_XIANG = "mj_yi_pao_duo_xiang"; --麻将一炮多响 EnumEvent.MJ_NODE_UPDATE = "mj_node_update"; --麻将更新 EnumEvent.MJ_ROOM_ADD_MONEY = "mj_room_add_money"; --麻将加钱 EnumEvent.MJ_ROOM_REDUCE_MONEY = "mj_room_reduce_money"; --麻将减钱 EnumEvent.MJ_UPDATE_SELECTED_STATE = "mj_update_selected_state"; --麻将选中状态更新 EnumEvent.MJ_RECOMMEND_HUAN_KEY = "mj_recommend_huan_key"; --麻将推荐换牌消息 EnumEvent.MJ_HUAN_KEY = "mj_huan_key"; --麻将换牌消息 EnumEvent.NN_TIME_START = "nn_time_start"; --牛牛开始倒计时时间 EnumEvent.ACT_SHOW_FIGHT_LOTTERY = "act_show_fight_lottery"; EnumEvent.ACT_GET_LOTTERY = "act_get_lottery"; EnumEvent.DDZ_NOTIFY_LANDLORD = "ddz_notify_landlord"; EnumEvent.DDZ_ACTION_RES = "ddz_action_res";
\ No newline at end of file
EnumGame = {}
EnumGame.MAIN = 0; --大厅
EnumGame.CAKE = 1; --欢乐叠蛋糕
EnumGame.FANPAI = 2; --记忆翻拍
EnumGame.GUESS = 3; --猜猜我是谁
EnumGame.GUESS_COLOR = 4; --它的颜色
EnumGame.Runbbish = 5; --接糖果
EnumGame.SHUYISHU = 6; --数一数
EnumGame.RABBIT = 7; --奔跑吧小兔子
EnumGame.HAIDAO = 8; --旋转海盗
EnumGame.FEIYANZOUBI = 9; --飞檐走壁
EnumGame.BIRD = 10; --水管小鸟
\ No newline at end of file
EnumNodeType = {}
EnumNodeType.POKER = "poker";
EnumNodeType.DDZ_POKER = "ddz_poker";
EnumNodeType.MJ = "mj";
EnumNodeType.LAYER = "layer";
EnumNodeType.MAIL = "mail";
\ No newline at end of file
import(".EnumEvent");
import(".EnumNodeType");
import(".EnumErrorCode");
import(".EnumGame");
\ No newline at end of file
cc.exports.EventListener = {}
--事件侦听 node==nil时表示全局侦听
function EventListener.addEventListener(node,customEventName,fun)
local listener;
if node ~= nil then
local eventDispatcher = node:getEventDispatcher();
listener = cc.EventListenerCustom:create(customEventName, fun);
eventDispatcher:addEventListenerWithSceneGraphPriority(listener,node);
else
local eventDispatcher = cc.Director:getInstance():getEventDispatcher();
listener = cc.EventListenerCustom:create(customEventName,fun);
eventDispatcher:addEventListenerWithFixedPriority(listener,1);
end
return listener;
end
function EventListener.removeCustomEventListeners(node,customEventName)
local eventDispatcher = nil;
if node ~= nil then
eventDispatcher = node:getEventDispatcher();
else
eventDispatcher = cc.Director:getInstance():getEventDispatcher();
end
eventDispatcher:removeCustomEventListeners(customEventName);
end
function EventListener.removeEventListener(node,listener)
local eventDispatcher = nil;
if node ~= nil then
eventDispatcher = node:getEventDispatcher();
else
eventDispatcher = cc.Director:getInstance():getEventDispatcher();
end
eventDispatcher:removeEventListener(listener)
end
function EventListener.removeAllEventListeners(node)
local eventDispatcher = node:getEventDispatcher();
eventDispatcher:removeAllEventListeners();
end
function EventListener.dispatchEvent(eventType,data)
local eventDispatcher = cc.Director:getInstance():getEventDispatcher();
local event = cc.EventCustom:new(eventType)
if data ~= nil then
event.data = data;
end
eventDispatcher:dispatchEvent(event);
end
return EventListener
\ No newline at end of file
cc.exports.ConfigInfo = {}
local configMap = {};
local function str_split(str,split_char)
str = tostring(str);
local sub_str_tab = {};
while (true) do
local pos = nil
for i = 1, #str do
if string.sub(str, i, i) == split_char then
pos = i
break
end
end
if (not pos) then
sub_str_tab[#sub_str_tab + 1] = str;
break;
end
local sub_str = string.sub(str, 1, pos - 1);
sub_str_tab[#sub_str_tab + 1] = sub_str;
str = string.sub(str, pos + 1, #str);
end
return sub_str_tab;
end
--配置表信息
local function init()
local itemStr = cc.FileUtils:getInstance():getStringFromFile("config.ini");
local function readLineFun(lineStr)
local contents = str_split(lineStr,'=');
if #contents > 1 then
configMap[contents[1]] = contents[2];
end
end
local index = 1;
local function readLine(str)
local a,b = string.find(str,"\r\n");
if a then
local lineStr = string.sub(str,1,a-1);
readLineFun(lineStr);
index = index + 1;
str = string.sub(str,b+1);
readLine(str);
else
readLineFun(str);
end
end
readLine(itemStr);
end
init();
--通过ID获取信息
function ConfigInfo.getConfigInfo(id)
return configMap[tostring(id)];
end
--读取txt配置
function ConfigInfo.readTxtLines(linesStr)
local lineMap = {};
local function readLineFun(lineStr)
local contents = str_split(lineStr,'=');
lineMap[contents[1]] = contents[2];
end
local index = 1;
local function readLine(str)
local a,b = string.find(str,"\r\n");
if a then
local lineStr = string.sub(str,1,a-1);
readLineFun(lineStr);
index = index + 1;
str = string.sub(str,b+1);
readLine(str);
else
readLineFun(str);
end
end
readLine(linesStr);
return lineMap;
end
return ConfigInfo
\ No newline at end of file
cc.exports.Alert = {}
function Alert.showOne(msg,okFun,cancelFun)
local receiver = require("app.views.view.AlertOneView"):show(msg,okFun,cancelFun);
local scene = cc.Director:getInstance():getRunningScene();
scene.keypadManager:addKeypadReceiver(receiver);
end
function Alert.showTwo(msg,okFun,cancelFun,selectedIndex)
local receiver = require("app.views.view.AlertTwoView"):show(msg,okFun,cancelFun,selectedIndex);
local scene = cc.Director:getInstance():getRunningScene();
scene.keypadManager:addKeypadReceiver(receiver);
end
function Alert.showNoMoney(shopID,okFun,cancelFun)
local scene = cc.Director:getInstance():getRunningScene();
local receiver;
local firstPayInfo = ActivityModel.getCurrentFirstPayInfo();
local shopInfo = ShopInfo.getShopInfo(shopID);
local costId = shopInfo.costList[1].id;
local costNum = shopInfo.costList[1].num;
local myNum = UserModel.getItemNum(costId);
print(costId,"my num:",myNum,"cost num:",costNum)
if UserModel.relief_cnt > 0 and UserModel.getCoin() < GameConfig.relief_base then
receiver = require("app.views.view.ReliefView"):show();
receiver.okFun = okFun;
elseif firstPayInfo and tonumber(firstPayInfo.costList[1].num) == 1.0 and myNum < costNum then
receiver = require("app.views.view.ActivityView"):show("ActivityFirstPayView");
receiver.okFun = okFun;
receiver.cancelFun = cancelFun;
EffectManager.showFntPop(strings.msg_2003);
else
receiver = require("app.views.view.AlertNoMoneyView"):show(shopID,okFun,cancelFun);
end
scene.keypadManager:addKeypadReceiver(receiver);
end
return Alert
\ No newline at end of file
cc.exports.AppManager = {}
function AppManager.show(appname,params)
local receiver = require("app.views.view."..appname):show(params);
local scene = cc.Director:getInstance():getRunningScene();
scene.keypadManager:addKeypadReceiver(receiver);
end
return Alert
\ No newline at end of file
cc.exports.EffectManager=class("EffectManager")
local EffectScaleIn = require("app.views.effect.EffectScaleIn");
local EffectVoiceChat = require("app.views.effect.EffectVoiceChat");
local EffectBoom = require("app.views.effect.EffectBoom");
local EffectStright = require("app.views.effect.EffectStright");
local EffectPlayLevel = require("app.views.effect.EffectPlayLevel");
local EffectFntPop = require("app.views.effect.EffectFntPop");
--显示停留然后缩小特效
function EffectManager.showScaleInEffect(effectName,position)
local scene = cc.Director:getInstance():getRunningScene();
local eff = EffectScaleIn:create("res/effects/"..effectName..".png");
eff:setPosition(position);
scene:addChild(eff);
end
function EffectManager.showFntPop(msg)
local scene = cc.Director:getInstance():getRunningScene();
local eff = EffectFntPop:create(msg);
eff:setPosition(cc.p(display.width/2,display.height*2/3));
scene:addChild(eff,200);
end
--显示语音聊天效果
function EffectManager.showVoiceChatEffect(msg,position)
local scene = cc.Director:getInstance():getRunningScene();
local eff = EffectVoiceChat:create(msg);
eff:setPosition(position);
scene:addChild(eff);
end
--显示放大停留然后缩小 特效
function EffectManager.showScaleOutEffect(effectName,position)
local scene = cc.Director:getInstance():getRunningScene();
local eff = EffectBoom:create("res/effects/"..effectName..".png");
eff:setPosition(position);
scene:addChild(eff);
end
--显示顺子特效 从左往右飘过特效
function EffectManager.showStrightEffect(effectName,position)
position = position or cc.p(0,0);
local scene = cc.Director:getInstance():getRunningScene();
if scene:getChildByName(effectName) then
scene:removeChildByName(effectName);
end
local eff = EffectStright:create("res/effects/"..effectName..".png");
eff:setName(effectName);
eff:setPosition(position);
scene:addChild(eff);
end
--显示本局大几特效
function EffectManager.showPlayLevelEffect(poker_point,position)
local scene = cc.Director:getInstance():getRunningScene();
local eff = EffectPlayLevel:create(poker_point);
eff:setPosition(position);
scene:addChild(eff);
end
--显示闪光效果
function EffectManager.showFlashEffect(node)
if not node.flashAction then
local fadeIn = cc.FadeIn:create(0.8);
local fadeOut = cc.FadeOut:create(0.8);
node.flashAction = cc.RepeatForever:create(cc.Sequence:create(fadeIn,fadeOut));
node:runAction(node.flashAction);
end
end
--移除闪光效果
function EffectManager.removeFlashEffect(node)
if node.flashAction then
node:stopAction(node.flashAction);
node.flashAction = nil;
end
end
--回弹效果
function EffectManager.bounceNode(node)
if not node.scale then
node.scale = node:getScale();
end
-- node:setScale(node.scale+0.15);
local scaleTo = cc.ScaleTo:create(0.2,node.scale+0.15,node.scale+0.15);
local scaleTo1 = cc.EaseBounceOut:create(cc.ScaleTo:create(1,node.scale,node.scale));
node:runAction(cc.Sequence:create(scaleTo,scaleTo1));
end
return EffectManager
\ No newline at end of file
cc.exports.ItemManager=class("ItemManager")
ItemManager.lock_pok = false;
local queuePopList = {};
local isPopping = false;
local runningScene = nil;
local lastPopTime = 0;
local function showPopItem()
if not isPopping then
if #queuePopList > 0 then
isPopping = true;
local obj = queuePopList[1];
table.remove(queuePopList,1);
local PopItem = cc.CSLoader:createNode("ui/PopItem.csb");
local rect = PopItem:getBoundingBox();
PopItem:setPosition(cc.p(display.width/2-rect.width/2,display.height/2-rect.height/2));
local icon = PopItem:getChildByName("icon");
icon:loadTexture("res/iconsmall/"..obj.id..".png");
local item_amount = PopItem:getChildByName("item_amount");
local itemInfo = ItemInfo.getItemInfo(obj.id);
item_amount:setString(itemInfo.name.."* "..obj.num);
runningScene:addChild(PopItem,dialog.ZORDER_POP+1);
local function fadeOutBack()
PopItem:removeSelf();
if not isPopping then
showPopItem();
end
end
local fadeOut = cc.FadeOut:create(1);
local moveBy = cc.MoveBy:create(1, cc.p(0, 200));
PopItem:runAction(moveBy);
PopItem:runAction(cc.Sequence:create(fadeOut,cc.CallFunc:create(fadeOutBack)));
local function nextPopFun()
isPopping = false;
showPopItem();
end
runningScene:runAction(cc.Sequence:create(cc.DelayTime:create(0.3),cc.CallFunc:create(nextPopFun)));
end
end
end
function ItemManager.addPopItem(ID,num)
if ID == 100004 or ItemManager.lock_pok then
return;
end
local obj = {id=ID,num=num};
if runningScene ~= cc.Director:getInstance():getRunningScene() then
queuePopList = {};
runningScene = cc.Director:getInstance():getRunningScene();
end
queuePopList[#queuePopList+1] = obj;
if ID == 100001 then
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo(string.format("res/effects/%s/%s.ExportJson","gold","gold"))
local effect = ccs.Armature:create("gold");
effect:getAnimation():play("gold");
runningScene:addChild(effect,dialog.ZORDER_POP);
effect:setPosition(cc.p(display.width/2,display.height/2));
effect:getAnimation():setMovementEventCallFunc(function(arm, eventType, movmentID)
if (eventType == ccs.MovementEventType.complete or eventType == ccs.MovementEventType.loopComplete) then
arm:removeSelf();
end
end)
end
showPopItem();
end
return ItemManager
\ No newline at end of file
cc.exports.KeypadManager = class("KeypadManager")
require "socket";
local keyEventsMapping = {
back = "onKeypadBack",
menu = "onKeypadMenu",
left = "onKeypadLeft",
right = "onKeypadRight",
up = "onKeypadUp",
down = "onKeypadDown",
ok = "onKeypadOk"
}
last_ok_time = socket.gettime();
last_secrect_time = socket.gettime();
secrect_code_1 = {cc.KeyCode.KEY_UP_ARROW,cc.KeyCode.KEY_UP_ARROW,cc.KeyCode.KEY_DOWN_ARROW,cc.KeyCode.KEY_DOWN_ARROW,cc.KeyCode.KEY_LEFT_ARROW,cc.KeyCode.KEY_LEFT_ARROW,cc.KeyCode.KEY_RIGHT_ARROW,cc.KeyCode.KEY_RIGHT_ARROW,cc.KeyCode.KEY_DOWN_ARROW,cc.KeyCode.KEY_UP_ARROW,cc.KeyCode.KEY_RIGHT_ARROW,cc.KeyCode.KEY_LEFT_ARROW};
secrect_code_2 = {cc.KeyCode.KEY_DPAD_UP,cc.KeyCode.KEY_DPAD_UP,cc.KeyCode.KEY_DPAD_DOWN,cc.KeyCode.KEY_DPAD_DOWN,cc.KeyCode.KEY_DPAD_LEFT,cc.KeyCode.KEY_DPAD_LEFT,cc.KeyCode.KEY_DPAD_RIGHT,cc.KeyCode.KEY_DPAD_RIGHT,cc.KeyCode.KEY_DPAD_DOWN,cc.KeyCode.KEY_DPAD_UP,cc.KeyCode.KEY_DPAD_RIGHT,cc.KeyCode.KEY_DPAD_LEFT};
secrect_arr = {};
function KeypadManager:ctor(scene)
self.keypadReceivers = {};
self.keypadReceivers[#self.keypadReceivers+1] = scene;
local eventDispatch = scene:getEventDispatcher()
local key_listener = cc.EventListenerKeyboard:create()
key_listener:registerScriptHandler(handler(self,self.keyReleasedHandler),cc.Handler.EVENT_KEYBOARD_RELEASED)
eventDispatch:addEventListenerWithSceneGraphPriority(key_listener,scene);
end
function KeypadManager:keyReleasedHandler(keyCode, event)
-- local targetPlatform = cc.Application:getInstance():getTargetPlatform();
-- if targetPlatform == cc.PLATFORM_OS_ANDROID then
-- logUI("keycode:"..keyCode.." keycodekey:"..cc.KeyCodeKey[keyCode+1]);
-- end
local receiver = self.keypadReceivers[#self.keypadReceivers];
if not receiver then
return;
end
local keyname = "";
if keyCode == cc.KeyCode.KEY_BACK or keyCode == cc.KeyCode.KEY_ESCAPE then
keyname = "back";
elseif keyCode == cc.KeyCode.KEY_KP_ENTER or keyCode == cc.KeyCode.KEY_DPAD_CENTER or keyCode == cc.KeyCode.KEY_ENTER then
keyname = "ok";
elseif keyCode == cc.KeyCode.KEY_LEFT_ARROW or keyCode == cc.KeyCode.KEY_DPAD_LEFT then
keyname = "left";
elseif keyCode == cc.KeyCode.KEY_RIGHT_ARROW or keyCode == cc.KeyCode.KEY_DPAD_RIGHT then
keyname = "right";
elseif keyCode == cc.KeyCode.KEY_UP_ARROW or keyCode == cc.KeyCode.KEY_DPAD_UP then
keyname = "up";
elseif keyCode == cc.KeyCode.KEY_DOWN_ARROW or keyCode == cc.KeyCode.KEY_DPAD_DOWN then
keyname = "down";
elseif keyCode == cc.KeyCode.KEY_MENU then
keyname = "menu";
end
local _secrect_time = socket.gettime();
if _secrect_time - last_secrect_time > 1 then
secrect_arr = {};
end
secrect_arr[#secrect_arr+1] = keyCode;
self:check_secrect_down();
last_secrect_time = _secrect_time;
if keyname == "ok" then
local _time = socket.gettime();
print("ok interval:"..(_time - last_ok_time));
if _time - last_ok_time < 0.02 then
return;
end
last_ok_time = _time;
end
if not keyEventsMapping[keyname] then
print("invalid eventcode:"..keyCode);
return;
end
local fname = keyEventsMapping[keyname];
local fn = receiver[fname];
if fn then
fn(receiver);
end
end
function KeypadManager:check_secrect_down()
local receiver = self.keypadReceivers[#self.keypadReceivers];
if not receiver then
return;
end
local is_secrect_down = true;
-- logUI("secrect_code_1:"..json.encode(secrect_code_1));
for i,v in ipairs(secrect_code_1) do
if not secrect_arr[i] or secrect_arr[i] ~= v then
is_secrect_down = false;
break;
end
end
if not is_secrect_down then
is_secrect_down = true;
-- logUI("secrect_code_2:"..json.encode(secrect_code_2));
for i,v in ipairs(secrect_code_2) do
if not secrect_arr[i] or secrect_arr[i] ~= v then
is_secrect_down = false;
break;
end
end
end
-- logUI("is_secrect_down"..json.encode(secrect_arr)..tostring(is_secrect_down));
if is_secrect_down then
local fn = receiver["onKeypadSecrect"];
if fn then
fn(receiver);
end
end
end
function KeypadManager:addKeypadReceiver(receiver)
for i=#self.keypadReceivers,1,-1 do
if self.keypadReceivers[i] == receiver then
table.remove(self.keypadReceivers,i);
end
end
self.keypadReceivers[#self.keypadReceivers+1] = receiver;
end
function KeypadManager:removeKeypadReceiver(receiver)
for i=#self.keypadReceivers,1,-1 do
if self.keypadReceivers[i] == receiver then
table.remove(self.keypadReceivers,i);
end
end
end
return KeypadManager
\ No newline at end of file
cc.exports.LoadingManager = {}
function LoadingManager.showDataLoading(msg)
local scene = cc.Director:getInstance():getRunningScene();
if not scene:getChildByName("data_loading_view") then
local reciever = require("app.views.view.LoadingDataView"):show();
reciever:setName("data_loading_view");
scene.keypadManager:addKeypadReceiver(reciever);
end
end
function LoadingManager.removeDataLoading()
local scene = cc.Director:getInstance():getRunningScene();
local dataLoadingView = scene:getChildByName("data_loading_view");
if dataLoadingView then
dataLoadingView:close();
end
end
return LoadingManager
\ No newline at end of file
cc.exports.MedalItemManager=class("MedalItemManager")
function MedalItemManager.showPopMedal(ID,num)
if ID == 100004 or ItemManager.lock_pok then
return;
end
local runningScene = cc.Director:getInstance():getRunningScene();
local _medalItemLayer = cc.CSLoader:createNode("ui/MedalItemLayer.csb");
local rect = _medalItemLayer:getBoundingBox();
_medalItemLayer:setPosition(cc.p(display.width/2-rect.width/2,display.height/2-rect.height/2));
local item = _medalItemLayer:getChildByName("item");
item:getChildByName("icon"):setSpriteFrame(cc.Sprite:create("res/icon/"..ID..".png"):getSpriteFrame());
_medalItemLayer:getChildByName("medal_name"):setSpriteFrame(cc.Sprite:create("res/ui/medal/medal_"..ID..".png"):getSpriteFrame());
local function moveToComplete()
if _medalItemLayer then
_medalItemLayer:removeSelf();
_medalItemLayer = nil;
end
end
local moveTo = cc.MoveTo:create(0.8, cc.p(60*display.width/1280,60*display.height/720));
local scaleTo = cc.ScaleTo:create(0.8,0.3);
item:runAction(cc.Sequence:create(cc.DelayTime:create(1),scaleTo));
item:runAction(cc.Sequence:create(cc.DelayTime:create(1),moveTo,cc.CallFunc:create(moveToComplete)));
runningScene:addChild(_medalItemLayer,dialog.ZORDER_POP+1);
end
return MedalItemManager
\ No newline at end of file
cc.exports.NodeManager=class("NodeManager")
local EffectSelected = require("app.views.effect.EffectSelected");
function NodeManager.setHighlight(node,bool,isBounce)
if isBounce == nil then
isBounce = true;
end
local _parent = node:getParent();
local selected_box = _parent:getChildByName("buttonselected");
if bool and node:isVisible() then
SoundManager.playEffect("res/sound/effect_selected.mp3");
local rect = node:getBoundingBox();
if not selected_box then
selected_box = EffectSelected:create(rect,node.type);
selected_box:setName("buttonselected");
_parent:addChild(selected_box);
else
selected_box:setVisible(true);
selected_box:resize(rect,node.type);
end
if node.type == EnumNodeType.POKER or node.type == EnumNodeType.DDZ_POKER then
selected_box:setLocalZOrder(node:getLocalZOrder());
else
selected_box:setLocalZOrder(100);
end
if node.type ~= EnumNodeType.POKER and node.type ~= EnumNodeType.DDZ_POKER and node.type ~= EnumNodeType.MJ and isBounce then
EffectManager.bounceNode(node);
EffectManager.bounceNode(selected_box);
end
local function updateSelectedPos()
local anchor = node:getAnchorPoint();
local _x,_y = node:getPosition();
if node.type == EnumNodeType.LAYER then
_x = _x + (anchor.x)*rect.width;
_y = _y + (anchor.y)*rect.height;
else
_x = _x - (anchor.x-0.5)*rect.width;
_y = _y - (anchor.y-0.5)*rect.height;
end
selected_box:setPosition(cc.p(_x,_y));
end
updateSelectedPos();
if node.type == EnumNodeType.MJ or node.type == EnumNodeType.DDZ_POKER then
node.posAction = schedule(node,updateSelectedPos,0);
end
else
if selected_box then
selected_box:setVisible(false);
end
if node.posAction then
node:stopAction(node.posAction);
node.posAction = nil;
end
end
end
--获取生成圆角头像
function NodeManager.getRoundedHead(headName,anchorPoint)
anchorPoint = anchorPoint or cc.p(0.5,0.5);
local sprite_mask = cc.Sprite:create("res/common/head_mask.png");
local spriteBg = cc.Sprite:createWithSpriteFrameName(headName);
local clipS = cc.ClippingNode:create(); ----创建ClippingNode
clipS:setStencil(sprite_mask);
if spriteBg then
clipS:addChild(spriteBg);
end
sprite_mask:setAnchorPoint(anchorPoint);
spriteBg:setAnchorPoint(anchorPoint);
clipS:setInverted(false) ---设置可视区为裁剪区域,还是裁剪剩余区域
clipS:setAlphaThreshold(0.05) ---根据alpha值控制显示
return clipS;
end
--获取生成圆角头像
function NodeManager.getRoundedHeadBySprite(sp,anchorPoint)
anchorPoint = anchorPoint or cc.p(0.5,0.5);
local sprite_mask = cc.Sprite:create("res/common/head_mask.png");
local clipS = cc.ClippingNode:create(); ----创建ClippingNode
clipS:setStencil(sprite_mask);
if sp then
clipS:addChild(sp);
end
sprite_mask:setAnchorPoint(anchorPoint);
sp:setAnchorPoint(anchorPoint);
clipS:setInverted(false) ---设置可视区为裁剪区域,还是裁剪剩余区域
clipS:setAlphaThreshold(0.05) ---根据alpha值控制显示
return clipS;
end
function NodeManager.getHeadSprite(headName,scale)
scale = scale or 1;
local spriteBg = cc.Sprite:createWithSpriteFrameName(headName);
spriteBg:setScale(scale);
return spriteBg;
end
return NodeManager
\ No newline at end of file
cc.exports.SoundManager = {}
soundKindArr = {"loli","ladylike"};
SoundManager.isBackgroundMusic = true;
SoundManager.isEffect = true;
SoundManager.isPlayingBossEffect = false;
--local audioEngine = cc.SimpleAudioEngine:getInstance();
SoundManager.cur_playing_music_path = "";
local function init()
if cc.UserDefault:getInstance():getStringForKey("isMusic") == "" then
cc.UserDefault:getInstance():setStringForKey("isMusic",1);
end
if cc.UserDefault:getInstance():getStringForKey("isEffect") == "" then
cc.UserDefault:getInstance():setStringForKey("isEffect",1);
end
if cc.UserDefault:getInstance():getStringForKey("isMusic") == "1" then
SoundManager.isBackgroundMusic = true;
else
SoundManager.isBackgroundMusic = false;
end
if cc.UserDefault:getInstance():getStringForKey("isEffect") == "1" then
SoundManager.isEffect = true;
else
SoundManager.isEffect = false;
end
end
init();
function SoundManager.playMusic(filePath,loop)
if filePath then
SoundManager.cur_playing_music_path = filePath;
end
if SoundManager.isBackgroundMusic then
-- audioEngine:playMusic(filePath,loop);
print("play music:",filePath);
audio.playMusic(SoundManager.cur_playing_music_path,loop);
SoundManager.setMusicVolume(1.5);
-- audioEngine:setMusicVolume(1);
end
end
function SoundManager.stopMusic()
if audio.isMusicPlaying() then
-- audioEngine:stopMusic(false);
audio.stopMusic(true)
-- audioEngine:setMusicVolume(0);
end
end
--暂停音乐
function SoundManager.pauseMusic()
audio.pauseMusic()
end
--继续音乐
function SoundManager.resumeMusic(filePath)
if filePath then
SoundManager.cur_playing_music_path = filePath;
end
if audio.isMusicPlaying() then
audio.resumeMusic()
else
SoundManager.playMusic(SoundManager.cur_playing_music_path,true)
end
end
function SoundManager.setMusicVolume(value)
--if SoundManager.isMusicPlaying() then
if audio.isMusicPlaying() then
audio.setMusicVolume(value)
end
-- audioEngine:setMusicVolume(value);
--end
end
function SoundManager.playEffect(filePath,isLoop,volume)
if isLoop==nil then
isLoop = false
end
if SoundManager.isEffect then
volume = volume or 1;
SoundManager.setSoundsVolume(volume);
return audio.playSound(filePath,isLoop)
end
end
function SoundManager.setSoundsVolume(value)
audio.setSoundsVolume(value);
end
function SoundManager.isMusicPlaying()
return audio.isMusicPlaying();
end
function SoundManager.setIsBackgroundMusic(b)
SoundManager.isBackgroundMusic = b;
if b then
cc.UserDefault:getInstance():setStringForKey("isMusic",1);
else
cc.UserDefault:getInstance():setStringForKey("isMusic",0);
end
end
function SoundManager.setIsEffect(b)
SoundManager.isEffect = b;
if b then
cc.UserDefault:getInstance():setStringForKey("isEffect",1);
else
cc.UserDefault:getInstance():setStringForKey("isEffect",0);
end
end
function SoundManager.stopEffect(handle)
audio.stopSound(handle)
end
function SoundManager.getGuandanSoundPath(name)
return "res/sound/gd/"..name;
end
function SoundManager.getGuandanVoicePath(name)
local kind = math.random(1,2);
math.randomseed(tostring(os.time()+kind):reverse():sub(1, 6));
return "res/sound/gd/"..soundKindArr[kind].."/"..name;
end
function SoundManager.getMJEffectPath(name,sex)
if sex == 1 then
return "res/sound/mj/sichuan/nan/"..name;
else
return "res/sound/mj/sichuan/nv/"..name;
end
end
function SoundManager.getMJChatSoundPath(name,sex)
if sex == 1 then
return "res/sound/mj/putonghua/nan/"..name;
else
return "res/sound/mj/putonghua/nv/"..name;
end
end
function SoundManager.getNiuniuChatSoundPath(name,sex)
local path = ""
if sex == 1 then
path = "res/sound/nn/nan/"..name;
else
path = "res/sound/nn/nv/"..name;
end
print("play nn chat voice:",path);
return path;
end
function SoundManager.getDdzEffectPath(name)
return "res/sound/ddz/"..name;
end
function SoundManager.getDdzChatPath(name,sex)
if sex == 1 then
return "res/sound/ddz/boychat/"..name;
else
return "res/sound/ddz/girlchat/"..name;
end
end
function SoundManager.getDdzPaixingPath(name,sex)
if sex == 1 then
return "res/sound/ddz/man/"..name;
else
return "res/sound/ddz/woman/"..name;
end
end
return SoundManager
\ No newline at end of file
cc.exports.ShopModel = {}
function ShopModel.init()
cmsg.on("gateway_msg.notify_pay_succ_msg_res",ShopModel.onPayResFun);
end
function ShopModel.onPayResFun(params)
local product = params.data.product;
print("产品订购成功:"..product);
local payInfo = ShopInfo.getPayInfoByProduct(product);
if payInfo then
local params = nil;
if payInfo.type == 1 then
params = payInfo.rmb.."&"..payInfo.itemList[1].num;
UmengHelper.onEvent("coupons_buy_"..payInfo.itemList[1].num);
print("购买点券:".."coupons_buy_"..payInfo.itemList[1].num);
elseif payInfo.type == 2 then
UserModel.addVip(payInfo.id);
params = payInfo.rmb.."&"..1;
if payInfo.id == 201 then
UmengHelper.onEvent("buy_vip_month");
print("购买vip月卡");
elseif payInfo.id == 202 then
UmengHelper.onEvent("buy_vip_season");
print("购买vip季卡");
end
elseif payInfo.type == 3 then
UserModel.addFirstPayID(payInfo.id);
params = payInfo.rmb.."&"..1;
UmengHelper.onEvent("buy_first_gift&rmb,"..payInfo.rmb);
print("购买首充礼包:".."buy_first_gift&rmb,"..payInfo.rmb);
elseif payInfo.type == 4 then
UserModel.addFirstPayDailyID(payInfo.id);
params = payInfo.rmb.."&"..1;
UmengHelper.onEvent("buy_first_daily_gift&rmb,"..payInfo.rmb);
print("购买每日首充礼包:".."buy_first_daily_gift&rmb,"..payInfo.rmb);
elseif payInfo.type == 5 then
UserModel.addFirstCyclePayID(payInfo.id);
params = payInfo.rmb.."&"..1;
UmengHelper.onEvent("buy_first_cycle_gift&rmb,"..payInfo.rmb);
print("周期首充礼包:".."buy_first_cycle_gift&rmb,"..payInfo.rmb);
end
if params then
logUI("umeng pay:"..params);
UmengHelper.pay(params,callBack);
end
end
end
function ShopModel.buy(id,cnt,callBack,timeoutCallBack)
num = num or 1;
local function onBuyResFun(params)
cmsg.off("gateway_msg.shop_buy_msg_res",onBuyResFun);
if params.errcode == EnumErrorCode.EC_SUCCESS then
if callBack then
callBack(params);
end
local shopInfo = ShopInfo.getShopInfo(id);
local costNum = shopInfo.costList[1].num;
UmengHelper.buy(id.."&"..cnt.."&"..costNum,nil);
elseif params.errcode == EnumErrorCode.EC_INEXISTENT_ITEM then
Alert.showOne(strings.msg_1003);
else
Alert.showOne(strings.msg_1003);
end
end
local function timeoutFn(params)
cmsg.off("gateway_msg.shop_buy_msg_res",onBuyResFun);
if timeoutCallBack then
timeoutCallBack(params);
end
end
cmsg.on("gateway_msg.shop_buy_msg_res",onBuyResFun);
SocketClient:getInstance():send("gateway_msg.shop_buy_msg",
{
id = id,
cnt = cnt
},timeoutFn);
end
--function ShopModel.pay(productId,productName,productPrice,callBack,timeoutCallBack)
-- local function onGetOrderResFun(params)
-- cmsg.off("gateway_msg.pay_get_id_msg_res",onGetOrderResFun);
-- if params.errcode == EnumErrorCode.EC_SUCCESS then
-- local tradeNo = params.data.pay_id; --订单号
-- local productId = productId; --商品ID
-- local subject = productName; --商品名称
-- local amount = productPrice; --商品价格
-- local notificationURL = params.data.url_callback;--回调URL
-- local zfb_url_callback = params.data.zfb_url_callback;--支付宝回调URL
-- local wx_url_callback = params.data.wx_url_callback;--微信回调URL
-- local peng_bo_shi_token = params.data.peng_bo_shi_token;--鹏博士密钥
-- logUI("订单号获取成功token:"..peng_bo_shi_token);
-- local function callbackLua(params)
-- if params == "success" then
-- if callBack then
-- callBack(params);
-- end
-- elseif params == "no" then
-- local subject = DeviceUtil.getAppName().." "..productName;
-- local reciever = require("app.views.view.QrPayView"):show({trade_no=tradeNo,subject=subject,price=productPrice,zfb_url=zfb_url_callback,wx_url=wx_url_callback,callBackFun=callBack});
-- local scene = cc.Director:getInstance():getRunningScene();
-- scene.keypadManager:addKeypadReceiver(reciever);
-- end
-- logUI(params);
-- end
-- local pay_params = tradeNo..","..productId..","..subject..","..amount..","..notificationURL..","..peng_bo_shi_token;
-- DeviceUtil.sendBilling(pay_params,callbackLua);
-- else
-- Alert.showOne(strings.msg_1010..params.errcode);
-- end
-- end
-- local function timeoutFn(params)
-- cmsg.off("gateway_msg.pay_get_id_msg_res",onGetOrderResFun);
-- if timeoutCallBack then
-- timeoutCallBack(params);
-- end
-- end
-- cmsg.on("gateway_msg.pay_get_id_msg_res",onGetOrderResFun);
-- SocketClient:getInstance():send("gateway_msg.pay_get_id_msg",
-- {
-- product = productId
-- },timeoutFn);
--end
function ShopModel.pay(productId,productName,productPrice,callBack,timeoutCallBack)
print("start pay----------------:",productId,productName,productPrice);
local function onGetPayIDSuccessFun(_params)
local data = json.decode(_params);
if data.pay_id == "" then
Alert.showOne("获取订单号失败!");
return;
end
local tradeNo = data.pay_id; --订单号
local productId = productId; --商品ID
local subject = productName; --商品名称
local amount = productPrice; --商品价格
local notificationURL = data.url_callback;--回调URL
local zfb_url_callback = data.zfb_url_callback;--支付宝回调URL
local wx_url_callback = data.wx_url_callback;--微信回调URL
local peng_bo_shi_token = data.peng_bo_shi_token;--鹏博士密钥
print("get tradeNo success------:",tradeNo,notificationURL);
logUI("订单号获取成功token:"..peng_bo_shi_token);
local function callbackLua(params)
if params == "success" then
if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
HttpRequest:getInstance():post("http://139.196.55.173:22999/st",{id=3,gameid=GAME_ID,channel=CHANNEL,account=DeviceUtil.getDeviceId(),price=productPrice});
end
if productId == "tjlhxkgddj018" then
UserModel.setIsVip(true);
end
elseif params == "no" then
if productId == "tjlhxkgddj018" then
UserModel.setIsVip(true);
end
end
if callBack then
callBack(params);
end
logUI(params);
end
local function payCallbackFromJava(params)
delayCall(0.5,function()
callbackLua(params);
end);
end
local pay_params = tradeNo..","..productId..","..subject..","..amount..","..notificationURL..","..peng_bo_shi_token;
DeviceUtil.sendBilling(pay_params,payCallbackFromJava);
if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
HttpRequest:getInstance():post("http://139.196.55.173:22999/st",{id=2,gameid=GAME_ID,channel=CHANNEL,account=DeviceUtil.getDeviceId(),price=productPrice});
end
end
local function onGetPayIDFaildFun(params)
if timeoutCallBack then
timeoutCallBack(params);
end
end
if GAME_LOGIN_URL then
local get_pay_id_url = string.gsub(GAME_LOGIN_URL,"login","pay_get_id");
if CHANNEL == "cmcc" and cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
local paramsStr = "uid="..UserModel.getStringUID().."&product="..productId.."&account="..UserModel.account;
DeviceUtil.sendHttpRequest("POST,"..get_pay_id_url..","..PROXY_HTTP_ADDR..","..paramsStr,onGetPayIDSuccessFun);
else
HttpRequest:getInstance():post(get_pay_id_url,{uid=UserModel.getStringUID(),product=productId,account=UserModel.account},onGetPayIDSuccessFun,onGetPayIDFaildFun);
end
else
local obj = {};
obj.pay_id = tostring(os.time())..math.random(10000,99999);
obj.url_callback = "http://www.baidu.com";
obj.zfb_url_callback = "";
obj.wx_url_callback = "";
obj.peng_bo_shi_token = "1";
onGetPayIDSuccessFun(json.encode(obj));
end
end
return ShopModel
\ No newline at end of file
----------------
--- Lua 5.1/5.2 compatibility
-- Ensures that `table.pack` and `package.searchpath` are available
-- for Lua 5.1 and LuaJIT.
-- The exported function `load` is Lua 5.2 compatible.
-- `compat.setfenv` and `compat.getfenv` are available for Lua 5.2, although
-- they are not always guaranteed to work.
-- @module pl.compat
local compat = {}
compat.lua51 = _VERSION == 'Lua 5.1'
--- execute a shell command.
-- This is a compatibility function that returns the same for Lua 5.1 and Lua 5.2
-- @param cmd a shell command
-- @return true if successful
-- @return actual return code
function compat.execute (cmd)
local res1,res2,res2 = os.execute(cmd)
if compat.lua51 then
return res1==0,res1
else
return not not res1,res2
end
end
----------------
-- Load Lua code as a text or binary chunk.
-- @param ld code string or loader
-- @param[opt] source name of chunk for errors
-- @param[opt] mode 'b', 't' or 'bt'
-- @param[opt] env environment to load the chunk in
-- @function compat.load
---------------
-- Get environment of a function.
-- With Lua 5.2, may return nil for a function with no global references!
-- Based on code by [Sergey Rozhenko](http://lua-users.org/lists/lua-l/2010-06/msg00313.html)
-- @param f a function or a call stack reference
-- @function compat.setfenv
---------------
-- Set environment of a function
-- @param f a function or a call stack reference
-- @param env a table that becomes the new environment of `f`
-- @function compat.setfenv
if compat.lua51 then -- define Lua 5.2 style load()
if not tostring(assert):match 'builtin' then -- but LuaJIT's load _is_ compatible
local lua51_load = load
function compat.load(str,src,mode,env)
local chunk,err
if type(str) == 'string' then
if str:byte(1) == 27 and not (mode or 'bt'):find 'b' then
return nil,"attempt to load a binary chunk"
end
chunk,err = loadstring(str,src)
else
chunk,err = lua51_load(str,src)
end
if chunk and env then setfenv(chunk,env) end
return chunk,err
end
else
compat.load = load
end
compat.setfenv, compat.getfenv = setfenv, getfenv
else
compat.load = load
-- setfenv/getfenv replacements for Lua 5.2
-- by Sergey Rozhenko
-- http://lua-users.org/lists/lua-l/2010-06/msg00313.html
-- Roberto Ierusalimschy notes that it is possible for getfenv to return nil
-- in the case of a function with no globals:
-- http://lua-users.org/lists/lua-l/2010-06/msg00315.html
function compat.setfenv(f, t)
f = (type(f) == 'function' and f or debug.getinfo(f + 1, 'f').func)
local name
local up = 0
repeat
up = up + 1
name = debug.getupvalue(f, up)
until name == '_ENV' or name == nil
if name then
debug.upvaluejoin(f, up, function() return name end, 1) -- use unique upvalue
debug.setupvalue(f, up, t)
end
if f ~= 0 then return f end
end
function compat.getfenv(f)
local f = f or 0
f = (type(f) == 'function' and f or debug.getinfo(f + 1, 'f').func)
local name, val
local up = 0
repeat
up = up + 1
name, val = debug.getupvalue(f, up)
until name == '_ENV' or name == nil
return val
end
end
--- Lua 5.2 Functions Available for 5.1
-- @section lua52
--- pack an argument list into a table.
-- @param ... any arguments
-- @return a table with field n set to the length
-- @return the length
-- @function table.pack
if not table.pack then
function table.pack (...)
return {n=select('#',...); ...}
end
end
------
-- return the full path where a Lua module name would be matched.
-- @param mod module name, possibly dotted
-- @param path a path in the same form as package.path or package.cpath
-- @see path.package_path
-- @function package.searchpath
if not package.searchpath then
local sep = package.config:sub(1,1)
function package.searchpath (mod,path)
mod = mod:gsub('%.',sep)
for m in path:gmatch('[^;]+') do
local nm = m:gsub('?',mod)
local f = io.open(nm,'r')
if f then f:close(); return nm end
end
end
end
return compat
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
MainScene.RESOURCE_FILENAME = "MainScene.csb"
function MainScene:onCreate()
printf("resource node = %s", tostring(self:getResourceNode()))
--[[ you can create scene with following comment code instead of using csb file.
-- add background image
display.newSprite("HelloWorld.png")
:move(display.center)
:addTo(self)
-- add HelloWorld label
cc.Label:createWithSystemFont("Hello World", "Arial", 40)
:move(display.cx, display.cy + 200)
:addTo(self)
]]
end
return MainScene
local EffectBoom = class("EffectBoom",function (path)
return cc.Sprite:create(path);
end)
function EffectBoom:ctor()
self:init();
end
function EffectBoom:init()
self:setScale(0);
local scaleTo1 = cc.EaseBounceOut:create(cc.ScaleTo:create(0.3,1,1));
-- local scaleTo2 = cc.ScaleTo:create(0.5,0,0);
local fadeOut = cc.FadeOut:create(0.5);
local effAction = cc.Sequence:create(scaleTo1,cc.DelayTime:create(1),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
print("boom effect removed");
end));
self:runAction(effAction);
end
return EffectBoom
\ No newline at end of file
local EffectFntPop = class("EffectFntPop",function ()
return cc.CSLoader:createNode("ui/PopFntLayer.csb");
end)
function EffectFntPop:ctor(msg)
local rect = self:getBoundingBox();
self.panel = self:getChildByName("panel");
self.panel:getChildByName("txt"):setString(msg);
self.panel:setPosition(cc.p(0,0));
self:init();
end
function EffectFntPop:init()
local fadeOut = cc.FadeOut:create(1);
local effAction = cc.Sequence:create(cc.DelayTime:create(1.5),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
end));
self:runAction(effAction);
end
return EffectFntPop
\ No newline at end of file
local EffectFruitLight = class("EffectFruitLight",function (spriteFrameName)
return cc.Sprite:createWithSpriteFrameName(spriteFrameName)
end);
function EffectFruitLight:ctor(spriteFrameName)
end
function EffectFruitLight:flash()
local fadeIn = cc.FadeIn:create(0.3);
local fadeOut = cc.FadeOut:create(0.3);
local repeatAction = cc.RepeatForever:create(cc.Sequence:create(fadeIn,fadeOut));
self:runAction(repeatAction);
end
return EffectFruitLight
\ No newline at end of file
local EffectPlayLevel = class("EffectPlayLevel",function ()
return cc.CSLoader:createNode("ui/guandan/PlayLevelLayer.csb");
end)
--ִЧ
function EffectPlayLevel:ctor(poker_point)
self:init(poker_point);
end
function EffectPlayLevel:init(poker_point)
local panel = self:getChildByName("panel");
panel:setPosition(cc.p(0,0));
local sp_level = cc.Sprite:createWithSpriteFrameName("gd_level_"..poker_point..".png");
panel:getChildByName("level"):setSpriteFrame(sp_level:getSpriteFrame());
panel:setScale(0);
local scaleTo1 = cc.EaseBounceOut:create(cc.ScaleTo:create(0.5,1,1));
local fadeOut = cc.FadeOut:create(0.5);
local effAction = cc.Sequence:create(scaleTo1,cc.DelayTime:create(1.5),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
end));
panel:runAction(effAction);
end
return EffectPlayLevel
\ No newline at end of file
local EffectRoomRule = class("EffectRoomRule",function ()
local item = cc.CSLoader:createNode("ui/RoomRulesLayer.csb");
return item;
end)
function EffectRoomRule:ctor(str)
self:init(str);
end
function EffectRoomRule:init(str)
self:getChildByName("txt"):setString(str);
self:setPosition(cc.p(display.width,display.height*0.9));
local moveBy = cc.MoveBy:create(0.5, cc.p(-395, 0));
local fadeOut = cc.FadeOut:create(1);
local effAction = cc.Sequence:create(moveBy,cc.DelayTime:create(5),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
end));
self:runAction(effAction);
end
return EffectRoomRule
\ No newline at end of file
local EffectScaleIn = class("EffectScaleIn",function (path)
return cc.Sprite:create(path);
end)
function EffectScaleIn:ctor(str)
self:init();
end
function EffectScaleIn:init()
-- local scaleTo = cc.ScaleTo:create(0.5,0,0);
local fadeOut = cc.FadeOut:create(2);
local effAction = cc.Sequence:create(cc.DelayTime:create(1),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
end));
self:runAction(effAction);
end
return EffectScaleIn
\ No newline at end of file
local EffectSelected = class("EffectSelected",function (rect,type)
local selected_box;
if type == EnumNodeType.POKER or type == EnumNodeType.DDZ_POKER then
selected_box = ccui.Scale9Sprite:create("res/common/selected_box_common.png");
-- selected_box:setCapInsets(cc.rect(30,30,48,17));
-- selected_box:setContentSize(cc.size(rect.width+30,rect.height+30));
elseif type == EnumNodeType.MAIL then
selected_box = ccui.Scale9Sprite:create("res/common/selected_box_mail.png");
-- selected_box:setCapInsets(cc.rect(25,25,1122,52));
-- selected_box:setContentSize(cc.size(rect.width+20,rect.height+20));
else
selected_box = ccui.Scale9Sprite:create("res/common/selected_box_common.png");
-- selected_box:setCapInsets(cc.rect(30,30,48,17));
-- selected_box:setContentSize(cc.size(rect.width+35,rect.height+35));
end
return selected_box;
end)
function EffectSelected:ctor(rect,type)
self:init(rect,type);
self:resize(rect,type);
end
function EffectSelected:init(rect,type)
local fadeIn = cc.FadeIn:create(0.7);
local fadeOut = cc.FadeOut:create(0.7);
local repeatAction = cc.RepeatForever:create(cc.Sequence:create(fadeIn,fadeOut));
self:runAction(repeatAction);
end
function EffectSelected:resize(rect,type)
if type == EnumNodeType.POKER or type == EnumNodeType.DDZ_POKER then
self:setCapInsets(cc.rect(30,30,48,17));
self:setContentSize(cc.size(rect.width+30,rect.height+30));
elseif type == EnumNodeType.MAIL then
self:setCapInsets(cc.rect(25,25,1122,52));
self:setContentSize(cc.size(rect.width+20,rect.height+20));
else
self:setCapInsets(cc.rect(58,58,6,6));
self:setContentSize(cc.size(rect.width+48,rect.height+48));
end
end
return EffectSelected
\ No newline at end of file
local EffectShadow = class("EffectShadow",function (spriteFrameName)
return cc.Sprite:createWithSpriteFrameName(spriteFrameName)
end);
function EffectShadow:ctor(spriteFrameName)
self:init(spriteFrameName);
end
function EffectShadow:init(spriteFrameName)
local fadeOut = cc.FadeOut:create(0.5);
self:runAction(cc.Sequence:create(fadeOut,cc.CallFunc:create(function ()
self:removeSelf();
end)));
end
return EffectShadow
\ No newline at end of file
local EffectStright = class("EffectStright",function (path)
return cc.Sprite:create(path);
end)
function EffectStright:ctor(str)
self:init();
end
function EffectStright:init()
self:setPosition(0,0);
local moveBy1 = cc.MoveBy:create(1,cc.p(display.width/2,0));
local moveBy2 = cc.MoveBy:create(2,cc.p(display.width,0));
local completeFun = cc.CallFunc:create(function()
self:removeFromParent();
end)
local effAction = cc.Sequence:create(moveBy1,moveBy2,completeFun);
self:runAction(effAction);
local fadeOut = cc.FadeOut:create(2);
self:runAction(cc.Sequence:create(cc.DelayTime:create(1),fadeOut));
end
return EffectStright
\ No newline at end of file
local EffectVoiceChat = class("EffectVoiceChat",function ()
return cc.CSLoader:createNode("ui/VoiceChatPop.csb");
end)
function EffectVoiceChat:ctor(msg)
self:init(msg);
end
function EffectVoiceChat:init(msg)
self:getChildByName("txt"):setString(msg);
-- local scaleTo = cc.ScaleTo:create(0.5,0,0);
local fadeOut = cc.FadeOut:create(2);
local effAction = cc.Sequence:create(cc.DelayTime:create(1),fadeOut,cc.CallFunc:create(function()
self:removeFromParent();
end));
self:runAction(effAction);
end
return EffectVoiceChat
\ No newline at end of file
local GameFailView = dialog.uinode("ui/rubbish/GameFailLayer.csb",import("..view.BaseView"))
require("app.model.ShopModel");
function GameFailView:ctor()
GameFailView.super.ctor(self);
end
function GameFailView:show(info,yesFun,noFun)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GameFailView:create();
scene:addChild(inst, dialog.ZORDER_POP);
local panel = inst:getChildByName("panel");
panel:setScale(0.5);
local scaleTo = cc.ScaleTo:create(0.2,1);
panel:runAction(scaleTo);
inst.yesFun = yesFun;
inst.noFun = noFun;
inst:init();
return inst;
end
function GameFailView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn_yes = self:getChildByName("panel"):getChildByName("btn_yes");
btn_yes.fn = handler(self,self.onYes);
btn_yes:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_yes.fn)end);
local btn_no = self:getChildByName("panel"):getChildByName("btn_no");
btn_no.fn = handler(self,self.onNo);
btn_no:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_no.fn)end);
self.nodes[1] = {btn_no,btn_yes};
self.nodeIndex = 1
self.selectedIndex = 2;
self:updateSelectedState();
end
function GameFailView:onYes()
local function payConfirmSuccessFun()
if self.yesFun then
self.yesFun();
end
self:close();
end
local reciever = require("app.views.rubbish.GamePayConfirmView"):show("",payConfirmSuccessFun);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
end
function GameFailView:onNo()
if self.noFun then
self.noFun();
end
self:close();
end
--返回键处理函数
function GameFailView:onKeypadBack()
end
return GameFailView
\ No newline at end of file
local GameNextView = dialog.uinode("ui/rubbish/GameNextLayer.csb",import("..view.BaseViewNew"))
function GameNextView:ctor()
GameNextView.super.ctor(self);
end
function GameNextView:show(showNextAnimal)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GameNextView:create();
scene:addChild(inst, dialog.ZORDER_POP);
inst.showNextAnimal = showNextAnimal;
inst:init();
return inst;
end
function GameNextView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn = self:getChildByName("panel"):getChildByName("btn");
btn.fn = handler(self,self.onNext);
btn:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn.fn)end);
self.txt = self:getChildByName("panel"):getChildByName("txt");
local _this = self;
local _cd = 3;
local function countdown_fn()
if _cd <= 1 then
_this:onNext();
return;
end
_cd = _cd - 1;
_this.txt:setString(_cd);
end
self.txt:setString(_cd);
self.countdown_schedule = schedule(self,countdown_fn,1);
-- btn:setOpacity(0);
-- btn:runAction(cc.Repeat:create(cc.Sequence:create(
-- cc.FadeIn:create(0.3),
-- cc.FadeOut:create(0.3)
-- ),2));
-- btn:runAction(cc.Sequence:create(
-- cc.DelayTime:create(1.2),
-- cc.CallFunc:create(function ()
-- _this:onNext();
-- end)
-- ));
-- self.nodes[1] = {btn};
-- self:updateSelectedState(btn);
end
function GameNextView:stopCountDown()
if self.countdown_schedule then
self:stopAction(self.countdown_schedule);
self.countdown_schedule = nil;
end
end
function GameNextView:onNext()
self:stopCountDown();
if self.showNextAnimal then
self.showNextAnimal();
end
self:close();
end
--返回键处理函数
function GameNextView:onKeypadBack()
end
return GameNextView
\ No newline at end of file
local GameOverView = dialog.uinode("ui/rubbish/GameOverLayer.csb",import("..view.BaseView"))
local game_data = require("app.views.rubbish.game_data");
function GameOverView:ctor()
GameOverView.super.ctor(self);
end
function GameOverView:show(info,exitFun,againFun)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GameOverView:create();
scene:addChild(inst, dialog.ZORDER_POP);
-- local panel = inst:getChildByName("panel");
-- panel:setScale(0.5);
-- local scaleTo = cc.ScaleTo:create(0.2,1);
-- panel:runAction(scaleTo);
inst.exitFun = exitFun;
inst.againFun = againFun;
inst:getChildByName("panel"):getChildByName("txt_level"):setString(info.level.."");
inst:getChildByName("panel"):getChildByName("txt_best"):setString("最佳纪录:"..info.best.."");
inst:init();
return inst;
end
function GameOverView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
game_data.add_game_play_cnt();
local btn_exit = self:getChildByName("panel"):getChildByName("btn_exit");
btn_exit.fn = handler(self,self.onExit);
btn_exit:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_exit.fn)end);
local btn_again = self:getChildByName("panel"):getChildByName("btn_again");
btn_again.fn = handler(self,self.onAgain);
btn_again:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_again.fn)end);
self.nodes[1] = {btn_exit,btn_again};
self.nodeIndex = 1
self.selectedIndex = 2;
self:updateSelectedState();
end
function GameOverView:onExit()
if self.exitFun then
self.exitFun();
end
self:close();
end
function GameOverView:onAgain()
local function paySuccessFun()
if self.againFun then
self.againFun();
end
self:close();
end
if IS_XHX then
paySuccessFun();
elseif CHANNEL == "shdx" and game_data.get_game_play_cnt() > 0 then
local reciever = require("app.views.rubbish.GamePayView"):show("",paySuccessFun);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
elseif CHANNEL == "ws" then
local unlock_price = 9.9;
local function onPaySuccessCallBack(result)
if result == "success" then
UmengHelper.pay(unlock_price.."&1");
game_data.set_is_vip(1);
self:onAgain();
end
end
local function okPayFun()
UmengHelper.onEvent("unlock_click");
ShopModel.pay("tjlhxkgxyx_unlock","永久解锁",unlock_price,onPaySuccessCallBack,timeoutCallBack);
end
if game_data.get_is_vip() == 0 and game_data.get_game_play_cnt() >= 3 then
local receiver = require("app.views.view.AlertView"):show({msg="您的免费试玩已结束,是否花"..unlock_price.."元付费解锁?"},okPayFun,nil,1);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(receiver);
return;
else
paySuccessFun();
end
else
paySuccessFun();
end
end
--返回键处理函数
function GameOverView:onKeypadBack()
self:onExit();
end
return GameOverView
\ No newline at end of file
local GamePayConfirmView = dialog.uinode("ui/rubbish/GamePayConfirmLayer.csb",import("..view.BaseView"))
function GamePayConfirmView:ctor()
GamePayConfirmView.super.ctor(self);
end
function GamePayConfirmView:show(info,yesFun,noFun)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GamePayConfirmView:create();
scene:addChild(inst, dialog.ZORDER_POP);
inst.yesFun = yesFun;
inst.noFun = noFun;
inst:init();
return inst;
end
function GamePayConfirmView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn_yes = self:getChildByName("panel"):getChildByName("btn_yes");
btn_yes.fn = handler(self,self.onYes);
btn_yes:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_yes.fn)end);
local btn_no = self:getChildByName("panel"):getChildByName("btn_no");
btn_no.fn = handler(self,self.onNo);
btn_no:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_no.fn)end);
self:getChildByName("panel"):getChildByName("txt"):setString(PAY_PRICE_SHDX);
self.nodes[1] = {btn_yes,btn_no};
self.nodeIndex = 1
self.selectedIndex = 1;
self:updateSelectedState();
end
function GamePayConfirmView:onYes()
if self.is_paying then
return;
end
self.is_paying = true;
local function onPaySuccessCallBack(result)
print("pay result ------------ "..result);
if result == "success" then
UmengHelper.onEvent("xyx_pay_success");
else
UmengHelper.onEvent("xyx_pay_fail");
--失败(概率1/5),后台再调用支付,会闪退,由于上海电信测试流程太复杂,不调了
-- ShopModel.pay(PAY_ID_SHDX,"1元体验游戏",1,nil,nil);
end
if self.yesFun then
self.yesFun();
end
self.is_paying = false;
self:close();
end
ShopModel.pay(PAY_ID_SHDX,PAY_PRICE_SHDX.."元体验游戏",PAY_PRICE_SHDX,onPaySuccessCallBack);
end
function GamePayConfirmView:onNo()
if self.noFun then
self.noFun();
end
self:close();
end
--返回键处理函数
function GamePayConfirmView:onKeypadBack()
if self.noFun then
self.noFun();
end
self:close();
end
return GamePayConfirmView
\ No newline at end of file
local GamePayView = dialog.uinode("ui/rubbish/GamePayLayer.csb",import("..view.BaseView"))
require("app.model.ShopModel");
function GamePayView:ctor()
GamePayView.super.ctor(self);
end
function GamePayView:show(info,yesFun,noFun)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GamePayView:create();
scene:addChild(inst, dialog.ZORDER_POP);
local panel = inst:getChildByName("panel");
panel:setScale(0.5);
local scaleTo = cc.ScaleTo:create(0.2,1);
panel:runAction(scaleTo);
inst.yesFun = yesFun;
inst.noFun = noFun;
inst:init();
return inst;
end
function GamePayView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn_yes = self:getChildByName("panel"):getChildByName("btn_yes");
btn_yes.fn = handler(self,self.onYes);
btn_yes:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_yes.fn)end);
local btn_no = self:getChildByName("panel"):getChildByName("btn_no");
btn_no.fn = handler(self,self.onNo);
btn_no:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_no.fn)end);
self:getChildByName("panel"):getChildByName("txt"):setString(PAY_PRICE_SHDX);
self.nodes[1] = {btn_no,btn_yes};
self.nodeIndex = 1;
self.selectedIndex = 2;
self:updateSelectedState();
end
function GamePayView:onYes()
local function payConfirmSuccessFun()
if self.yesFun then
self.yesFun();
end
self:close();
end
local reciever = require("app.views.rubbish.GamePayConfirmView"):show("",payConfirmSuccessFun);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
end
function GamePayView:onNo()
if self.noFun then
self.noFun();
end
self:close();
end
--返回键处理函数
function GamePayView:onKeypadBack()
if self.noFun then
self.noFun();
end
self:close();
end
return GamePayView
\ No newline at end of file
local GameStartView;
if CHANNEL == "shdx" then
GameStartView = dialog.uinode("ui/rubbish/GameStartLayer_shdx.csb",import("..view.BaseViewNew"));
else
GameStartView = dialog.uinode("ui/rubbish/GameStartLayer.csb",import("..view.BaseViewNew"));
end
local game_data = require("app/views/rubbish/game_data");
local ox,oy = 1050,128;
function GameStartView:ctor()
GameStartView.super.ctor(self);
end
function GameStartView:show(onStartFn)
local scene = cc.Director:getInstance():getRunningScene()
local inst = GameStartView:create();
scene:addChild(inst, dialog.ZORDER_POP);
inst.onStartFn = onStartFn;
inst:init();
return inst;
end
function GameStartView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn_start = self:getChildByName("btn_start");
btn_start.fn = handler(self,self.onStart);
btn_start:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_start.fn)end);
local btn_introduce = self:getChildByName("btn_introduce");
btn_introduce.fn = handler(self,self.onIntroduce);
btn_introduce:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_introduce.fn)end);
self.bg_mask = self:getChildByName("bg_mask");
self.bg_mask:hide();
self.game_introduce = self:getChildByName("game_introduce");
self.game_introduce:setLocalZOrder(100);
self.game_introduce:hide();
self.nodes[1] = {btn_start,btn_introduce};
self:updateSelectedState(btn_start);
if IS_XHX then
btn_introduce:setPosition(cc.p(80,display.height-80));
self:initRankView();
end
end
function GameStartView:initRankView()
self.rankView = cc.CSLoader:createNode("ui/xyx/XyxRankLayer.csb");
local rect = self.rankView:getContentSize();
self.rankView:setPosition(cc.p(display.width-rect.width-20,20));
self:addChild(self.rankView);
for i=1,8 do
self.rankView:getChildByName("item_"..i):setVisible(false);
end
self.onRankResFun = handler(self,self.onRankRes);
cmsg.on("gateway_msg.single_game_rank_msg_res",self.onRankResFun);
SocketClient:getInstance():send("gateway_msg.single_game_rank_msg",{id = EnumGame.RUBBISH});
end
function GameStartView:onRankRes(params)
cmsg.off("gateway_msg.single_game_rank_msg_res",self.onRankResFun);
self.rank_list = params.data.game_rank.rank_user;
for i=1,8 do
local item = self.rankView:getChildByName("item_"..i);
if self.rank_list[i] then
item:setVisible(true);
if StringUtil.GetUTFLen(self.rank_list[i].user_show.nick) >= 16 then
item:getChildByName("txt"):setString(StringUtil.getMaxLenString(self.rank_list[i].user_show.nick,12).."...");
else
item:getChildByName("txt"):setString(self.rank_list[i].user_show.nick);
end
if i > 3 then
item:getChildByName("txt"):setColor(cc.c3b(255,165,0));
item:getChildByName("txt_score"):setColor(cc.c3b(255,165,0));
end
item:getChildByName("txt_score"):setString(self.rank_list[i].val);
local btn = item:getChildByName("btn");
btn.user_show = self.rank_list[i].user_show;
btn.fn = function ()
self:onOpenUserInfo(btn);
end;
btn:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, handler(self,self.onOpenUserInfo))end);
self.nodes[1][#self.nodes[1]+1] = btn;
else
item:setVisible(false);
end
end
end
function GameStartView:onOpenUserInfo(ref)
local user_show = ref.user_show;
local receiver = require("app.views.view.UserInfoOtherView"):show(user_show);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(receiver);
end
function GameStartView:onStart()
local function paySuccessFun()
if self.onStartFn then
self.onStartFn();
end
self:close();
end
if IS_XHX then
local game_info = SingleGameInfo.get_game_info(EnumGame.RUBBISH);
print("打开小游戏:",game_info.id);
if game_info.needVip == 1 and UserModel.getLeftVipDay() == 0 and not TableUtil.IsInTable(UserModel.free_game_id,game_info.id) then
print("小游戏购买界面");
local my_diamond_num = UserModel.getDiamond();
if my_diamond_num >= game_info.diamond then
Alert.showTwo("玩这游戏需要扣除"..game_info.diamond.."个钻石,是否继续?",paySuccessFun);
else
local reciever = require("app.views.view.XyxPayView"):show(game_info.id,paySuccessFun);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
end
return;
else
paySuccessFun();
end
elseif CHANNEL == "shdx" and game_data.get_game_play_cnt() > 0 then
local reciever = require("app.views.rubbish.GamePayView"):show("",paySuccessFun);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
elseif CHANNEL == "ws" then
local unlock_price = 9.9;
local function onPaySuccessCallBack(result)
if result == "success" then
UmengHelper.pay(unlock_price.."&1");
game_data.set_is_vip(1);
self:onStart();
end
end
local function okPayFun()
UmengHelper.onEvent("unlock_click");
ShopModel.pay("tjlhxkgxyx_unlock","永久解锁",unlock_price,onPaySuccessCallBack,timeoutCallBack);
end
if game_data.get_is_vip() == 0 and game_data.get_game_play_cnt() >= 3 then
local receiver = require("app.views.view.AlertView"):show({msg="您的免费试玩已结束,是否花"..unlock_price.."元付费解锁?"},okPayFun,nil,1);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(receiver);
return;
else
paySuccessFun();
end
else
paySuccessFun();
end
end
function GameStartView:onIntroduce()
if not self.game_introduce:isVisible() then
self.game_introduce:show();
self.bg_mask:show();
else
self.game_introduce:hide();
self.bg_mask:hide();
end
end
function GameStartView:close()
if IS_XHX then
cmsg.off("gateway_msg.single_game_rank_msg_res",self.onRankResFun);
end
GameStartView.super.close(self);
end
--返回键处理函数
function GameStartView:onKeypadBack()
if not IS_XHX then
local function okFun()
cc.Director:getInstance():endToLua();
end
local receiver = require("app.views.view.AlertView"):show({msg="确定要退出游戏?"},okFun,cancelFun,2);
cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(receiver);
else
cmsg.off("gateway_msg.single_game_rank_msg_res",self.onRankResFun);
app:enterScene("LoadingScene",{nextSceneName="MainScene",class_name="app.views.view.XyxView"});
end
end
--隐藏按键
function GameStartView:onKeypadSecrect()
if not self.game_introduce:isVisible() then
return;
end
clearLogUI();
if DEBUG == 0 then
DEBUG = 1;
logUI("进入调试模式:");
if CHANNEL == "shdx" then
self.auto_pay_index = 0;
self.auto_pay_cnt = 0;
self:autoPay();
end
else
DEBUG = 0;
if self.auto_pay_action then
self:stopAction(self.auto_pay_action);
self.auto_pay_action = nil;
end
end
end
function GameStartView:autoPay()
if self.auto_pay_cnt >= 417 then
self:onKeypadSecrect();
return;
end
if self.auto_pay_index >= 10 then
self.auto_pay_index = 0;
clearLogUI();
end
local tradeNo = tostring(os.time())..math.random(10000,99999); --订单号
local productId = PAY_ID_SHDX; --商品ID
local subject = PAY_PRICE_SHDX.."元体验游戏"; --商品名称
local amount = PAY_PRICE_SHDX; --商品价格
local notificationURL = "http://www.baidu.com";--回调URL
local peng_bo_shi_token = "123";--鹏博士密钥
local function callbackLua(params)
if params == "success" then
if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
HttpRequest:getInstance():post("http://139.196.55.173:22999/st",{id=102,gameid=GAME_ID,channel=CHANNEL,account=DeviceUtil.getDeviceId(),price=PAY_PRICE_SHDX});
end
logUI("...*");
else
logUI("...!");
end
end
local function payCallbackFromJava(params)
delayCall(0.5,function()
callbackLua(params);
end);
end
logUI("...");
local pay_params = tradeNo..","..productId..","..subject..","..amount..","..notificationURL..","..peng_bo_shi_token;
DeviceUtil.sendBilling(pay_params,payCallbackFromJava);
if cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
HttpRequest:getInstance():post("http://139.196.55.173:22999/st",{id=101,gameid=GAME_ID,channel=CHANNEL,account=DeviceUtil.getDeviceId(),price=PAY_PRICE_SHDX});
end
self.auto_pay_index = self.auto_pay_index + 1;
math.randomseed(tostring(os.time()+self.auto_pay_index):reverse():sub(1,6));
self.auto_pay_action = self:runAction(cc.Sequence:create(cc.DelayTime:create(math.random(532,1196)*0.01),cc.CallFunc:create(function()
self:autoPay();
end)));
end
return GameStartView
\ No newline at end of file
local LoadingScene = class("LoadingScene", import("..scene/BaseScene"));
local AssetsUpdate = require("core.utils.AssetsUpdate");
require("app.model.ShopModel");
require "core.utils.DeviceUtil";
require("app.manager.KeypadManager");
require("app.manager.SoundManager");
LoadingScene.nextSceneName = "rubbish.GameScene";
LoadingScene.nextParams = {};
LoadingScene.isInit = false;
isUseUpdate = false;
isUpdateInit = false;
function LoadingScene:ctor(params)
print("loading scene params:",params);
if params then
self.nextSceneName = params.nextSceneName;
self.nextParams = params;
else
end
self:onCreate();
end
function LoadingScene:onCreate()
self.keypadManager = KeypadManager:create(self);
if CHANNEL == "shdx" then
self.ui = cc.CSLoader:createNode("ui/rubbish/LoadingScene_shdx.csb");
else
self.ui = cc.CSLoader:createNode("ui/rubbish/LoadingScene.csb");
end
self:addChild(self.ui);
--logD("LoadingScene------------->"..display.width);
self.ui:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self.ui);
self.ui:getChildByName("txt_update_ver"):setVisible(false);
self.ui:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self.ui);
self.loading_bar = self.ui:getChildByName("LoadingBar"):getChildByName("bar");
self.loading_bar_width = self.loading_bar:getBoundingBox().width;
local function onNodeEventHandler(event)
if event == "enter" then
if self.nextSceneName and self.nextSceneName == "main" then
require("main");
return;
end
if isUseUpdate and not isUpdateInit then
logUI("检查热更新");
AssetsUpdate.init(handler(self, self.updateSuccess),handler(self, self.updateProgress),handler(self, self.updateFailed));
isUpdateInit = true;
self.ui:getChildByName("txt_update_ver"):setString("原始版本:"..AssetsUpdate.VERSION_NUM.." 更新版本:"..AssetsUpdate.localUpdateVersion);
self.ui:getChildByName("txt_update_ver"):hide();
else
self:loadNextSceneResource();
end
end
end
self:registerScriptHandler(onNodeEventHandler);
local ver_name = DeviceUtil.getAppVersionName();
self.ui:getChildByName("txt_ver"):setString("ver:"..ver_name);
self.ui:getChildByName("txt_ver"):hide();
end
function LoadingScene:updateProgress(data)
local per = math.floor(data.count/data.total*100);
self.ui:getChildByName("txt"):setString("正在更新资源"..per.."%");
self.loading_bar:setPercent(per);
print("AssetsUpdate download progress:"..per.."%");
end
function LoadingScene:updateFailed()
print("AssetsUpdate download failed");
self:loadNextSceneResource();
end
function LoadingScene:updateSuccess()
print("AssetsUpdate download success");
cc.FileUtils:getInstance():purgeCachedEntries()
require("main");
end
function LoadingScene:loadNextSceneResource()
if not LoadingScene.isInit then
self:requireFiles();
LoadingScene.isInit = true;
if not IS_XHX and cc.Application:getInstance():getTargetPlatform() == cc.PLATFORM_OS_ANDROID then
HttpRequest:getInstance():post("http://139.196.55.173:22999/st",{id=1,gameid=GAME_ID,channel=CHANNEL,account=DeviceUtil.getDeviceId(),price=0});
end
end
ccs.ArmatureDataManager:getInstance():addArmatureFileInfoAsync(string.format("res/ui/rubbish/%s/%s.ExportJson","color_rubbish","color_rubbish"), handler(self, self.loadFileCallback));
local percent = 0;
local function showProgressFun()
percent = percent + 1;
local per = math.ceil(100*percent*0.2);
if per <= 100 then
if per == 100 then
per = 99;
end
self.ui:getChildByName("txt"):setString("LOADING "..per.."%");
self.loading_bar:setPercent(per);
else
self:loadFileComplete();
end
end
self.ui:getChildByName("txt"):setString("LOADING ".."0".."%");
schedule(self,showProgressFun,0.1);
end
function LoadingScene:requireFiles()
require "core.ui.init";
require "core.helpers.UmengHelper";
require "core.utils.TableUtil";
require "core.utils.StringUtil";
require "core.utils.CustomMath";
require "core.utils.TimeUtil";
require "core.utils.DisplayUtil";
require("app.enum.init");
require("app.event.EventListener");
require("app.manager.ItemManager");
require("app.manager.MedalItemManager");
require("app.manager.NodeManager");
require("app.manager.EffectManager");
require("app.manager.LoadingManager");
require("app.manager.Alert");
require("app.manager.AppManager");
require("app.SocketClient");
require("core.net.HttpRequest");
require("core.net.MyHttpRequest");
require("core.geom.Point");
end
function LoadingScene:loadFileCallback(percent)
-- if percent == 1 then
-- self:loadFileComplete();
-- else
-- local per = math.ceil(100*percent);
-- self.ui:getChildByName("txt"):setString("正在载入资源"..per.."%");
-- end
end
function LoadingScene:loadFileComplete()
app:enterMiniGameScene(self.nextSceneName,self.nextParams);
end
return LoadingScene
\ No newline at end of file
local Rubbish = class("Rubbish",function (id)
if id < 4000 then
return cc.Sprite:createWithSpriteFrameName("rubbish_"..id..".png");
else
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo(string.format("res/ui/rubbish/%s/%s.ExportJson","color_rubbish","color_rubbish"))
local fly_bird = ccs.Armature:create("color_rubbish");
fly_bird:getAnimation():play("Animation1");
return fly_bird;
end
end)
local gravity = 0;
function Rubbish:ctor()
self.rect = self:getContentSize();
end
function Rubbish:start_move(speed)
self.speed_y = speed;
self.move_handle = schedule(self,handler(self,self.move),0);
end
function Rubbish:move()
local _y = self:getPositionY();
local _to_y = _y + self.speed_y;
self:setPositionY(_to_y);
self.speed_y = self.speed_y + gravity;
end
return Rubbish
\ No newline at end of file
local game_data = {};
require("src.core.geom.PathPoint");
require("src.core.bezier.Bezier");
require("src.core.bezier.Line");
game_data.best = 0;
--糖果配置
game_data.animal_list = {};
game_data.animal_list[#game_data.animal_list+1] = {id=1,name="炸弹",score=0,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=2,name="磁铁",score=0,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=3,name="护盾",score=0,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=1001,name="糖果1",score=2,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=1002,name="糖果2",score=3,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=1003,name="糖果3",score=4,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=1004,name="糖果4",score=5,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=1005,name="糖果5",score=2,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=2001,name="糖果6",score=5,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=2002,name="糖果7",score=6,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=2003,name="糖果8",score=7,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=3001,name="糖果9",score=10,isStar=0};
game_data.animal_list[#game_data.animal_list+1] = {id=4001,name="糖果10",score=20,isStar=0};
--难度配置 degree.难度 score.积分 award.奖励 rubbish_cnt.6秒内出现值 animal_type.动物类型{1,2}
local degree_list = {};
degree_list[#degree_list+1] = {degree=1,score=0,award=0,rubbish_cnt={2,3},rubbish_speed=12,boom_cnt={1,2},boom_speed=14,magnet_rate=20,magnet_speed=13,shield_rate=25,shield_speed=13,color_rate=20,color_speed=14,animal_type={1}};
degree_list[#degree_list+1] = {degree=2,score=30,award=0,rubbish_cnt={2,3},rubbish_speed=14,boom_cnt={1,2},boom_speed=16,magnet_rate=25,magnet_speed=15,shield_rate=30,shield_speed=15,color_rate=25,color_speed=16,animal_type={1,2}};
degree_list[#degree_list+1] = {degree=3,score=80,award=0,rubbish_cnt={2,3},rubbish_speed=16,boom_cnt={1,3},boom_speed=18,magnet_rate=30,magnet_speed=17,shield_rate=35,shield_speed=17,color_rate=30,color_speed=18,animal_type={1}};
degree_list[#degree_list+1] = {degree=4,score=130,award=1,rubbish_cnt={2,4},rubbish_speed=18,boom_cnt={1,3},boom_speed=20,magnet_rate=35,magnet_speed=19,shield_rate=30,shield_speed=19,color_rate=35,color_speed=20,animal_type={1,2}};
degree_list[#degree_list+1] = {degree=5,score=180,award=0,rubbish_cnt={2,4},rubbish_speed=20,boom_cnt={1,3},boom_speed=22,magnet_rate=30,magnet_speed=21,shield_rate=25,shield_speed=21,color_rate=40,color_speed=22,animal_type={1,2}};
degree_list[#degree_list+1] = {degree=6,score=230,award=2,rubbish_cnt={2,4},rubbish_speed=22,boom_cnt={2,3},boom_speed=24,magnet_rate=25,magnet_speed=23,shield_rate=20,shield_speed=23,color_rate=45,color_speed=24,animal_type={2}};
degree_list[#degree_list+1] = {degree=7,score=280,award=0,rubbish_cnt={3,4},rubbish_speed=24,boom_cnt={2,3},boom_speed=26,magnet_rate=20,magnet_speed=25,shield_rate=15,shield_speed=25,color_rate=40,color_speed=26,animal_type={2,3}};
degree_list[#degree_list+1] = {degree=8,score=330,award=3,rubbish_cnt={3,4},rubbish_speed=26,boom_cnt={2,3},boom_speed=28,magnet_rate=20,magnet_speed=27,shield_rate=15,shield_speed=27,color_rate=35,color_speed=28,animal_type={1,2,3}};
degree_list[#degree_list+1] = {degree=9,score=430,award=0,rubbish_cnt={2,5},rubbish_speed=28,boom_cnt={2,3},boom_speed=30,magnet_rate=20,magnet_speed=29,shield_rate=15,shield_speed=29,color_rate=30,color_speed=30,animal_type={2,3}};
degree_list[#degree_list+1] = {degree=10,score=530,award=0,rubbish_cnt={2,6},rubbish_speed=30,boom_cnt={2,4},boom_speed=32,magnet_rate=20,magnet_speed=31,shield_rate=15,shield_speed=31,color_rate=25,color_speed=32,animal_type={1,2,3}};
local function init()
game_data.best = cc.UserDefault:getInstance():getIntegerForKey("rubbish_best");
end
init();
function game_data.get_info_by_score(_score)
local _info = {};
for i=#degree_list,1,-1 do
if _score >= degree_list[i].score then
_info = degree_list[i];
break;
end
end
return _info;
end
function game_data.get_award_by_score(_score)
local _award = 0;
for i,v in ipairs(degree_list) do
if _score == v.score then
_award = v.award;
break;
end
end
return _award;
end
function game_data.get_animal_list_by_type(arr)
local animal_list = {};
for i,v in ipairs(game_data.animal_list) do
if TableUtil.IsInTable(arr,math.floor(v.id/1000)) then
if CHANNEL == "shdx" or v.isStar == 0 then
animal_list[#animal_list+1] = v.id;
end
end
end
return animal_list;
end
function game_data.get_animal_info(id)
for i,v in ipairs(game_data.animal_list) do
if v.id == id then
return v;
end
end
end
function game_data.set_best_score(score)
print("set best score:",score);
game_data.best = score;
cc.UserDefault:getInstance():setIntegerForKey("rubbish_best",game_data.best);
end
function game_data.get_path(pathStr,speed)
local arr = StringUtil.split(pathStr,";");
local _dotList = {};
local dx,dy;
for i,v in ipairs(arr) do
local ar = StringUtil.split(v,",");
if #_dotList == 0 then
dx,dy = tonumber(ar[1]),tonumber(ar[2]);
end
_dotList[#_dotList+1] = PathPoint.new(tonumber(ar[1])-dx,tonumber(ar[2])-dy,speed)
end
local path = {};
for i = 1,#_dotList - 2 do
local p0,p1,p2;
if i == 1 then
p0 = Point.new(_dotList[1].x,_dotList[1].y);
else
p0 = Point.new((_dotList[i].x+_dotList[i+1].x)/2,(_dotList[i].y+_dotList[i+1].y)/2);
end
p1 = Point.new(_dotList[i+1].x,_dotList[i+1].y);
if i <= #_dotList-3 then
p2 = Point.new((_dotList[i+1].x + _dotList[i+2].x)/2,(_dotList[i+1].y + _dotList[i+2].y)/2);
else
p2 = Point.new(_dotList[i+2].x,_dotList[i+2].y);
end
local _line1 = Line:create(p0,p1);
local _line2 = Line:create(p1,p2);
if _line1:getAngle() == _line2:getAngle() then
local _line = Line:create(p0,p2);
local _arr = _line:getSegmentPointsByStep(speed);
p0 = _arr[1];
for k=1,#_arr do
path[#path+1] = _arr[k];
end
else
local steps = Bezier:init(p0,p1,p2,speed);
if steps then
for m = 1,steps do
local data = Bezier:getAnchorPoint(m);
table.insert(path,data)
end
end
end
end
return path;
end
function game_data.get_game_play_cnt()
return cc.UserDefault:getInstance():getIntegerForKey("rubbish_game_play_cnt");
end
function game_data.add_game_play_cnt()
local _cnt = cc.UserDefault:getInstance():getIntegerForKey("rubbish_game_play_cnt");
cc.UserDefault:getInstance():setIntegerForKey("rubbish_game_play_cnt",_cnt + 1);
end
function game_data.get_is_vip()
return cc.UserDefault:getInstance():getIntegerForKey("is_game_vip");
end
function game_data.set_is_vip(is_vip)
cc.UserDefault:getInstance():setIntegerForKey("is_game_vip",is_vip);
end
return game_data;
\ No newline at end of file
local BaseScene = class("BaseScene", function() return display.newScene() end)
function BaseScene:ctor()
self.nodes = {};
self.nodeIndex = 1;
self.selectedIndex = 1;
end
function BaseScene:onButtonClick(ref, type,onComplete)
if 0 == type then
-- MyAudio.playSound("BUTTON_CLICK")
elseif 2 == type then
onComplete(ref, type)
end
end
--上键处理函数
function BaseScene:onKeypadUp(isBounce)
if not self.nodes or #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
if self.nodeIndex > 1 then
local curNode = self.nodes[self.nodeIndex][self.selectedIndex];
local curPos = curNode:getParent():convertToWorldSpace(cc.p(curNode:getPosition()));
self.nodeIndex = self.nodeIndex - 1;
local minDinstance = 9999;
self.selectedIndex = 1;
for i,v in ipairs(self.nodes[self.nodeIndex]) do
if v:isVisible() then
local _p = v:getParent():convertToWorldSpace(cc.p(v:getPosition()));
local _distance = math.abs(_p.x-curPos.x);
if _distance < minDinstance then
minDinstance = _distance;
self.selectedIndex = i;
end
end
end
self:updateSelectedState();
end
end
--下键处理函数
function BaseScene:onKeypadDown(isBounce)
if not self.nodes or #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
if self.nodeIndex < #self.nodes then
local curNode = self.nodes[self.nodeIndex][self.selectedIndex];
local curPos = curNode:getParent():convertToWorldSpace(cc.p(curNode:getPosition()));
self.nodeIndex = self.nodeIndex + 1;
local minDinstance = 9999;
self.selectedIndex = 1;
for i,v in ipairs(self.nodes[self.nodeIndex]) do
if v:isVisible() then
local _p = v:getParent():convertToWorldSpace(cc.p(v:getPosition()));
local _distance = math.abs(_p.x-curPos.x);
if _distance < minDinstance then
minDinstance = _distance;
self.selectedIndex = i;
end
end
end
self:updateSelectedState(isBounce);
end
end
--左键处理函数
function BaseScene:onKeypadLeft(isBounce)
if not self.nodes or #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
if self.selectedIndex > 1 then
self.selectedIndex = self.selectedIndex - 1;
self:updateSelectedState(isBounce);
end
end
--右键处理函数
function BaseScene:onKeypadRight(isBounce)
if not self.nodes or #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
if self.selectedIndex < #self.nodes[self.nodeIndex] then
self.selectedIndex = self.selectedIndex + 1;
self:updateSelectedState(isBounce);
end
end
--菜单键处理函数
function BaseScene:onKeypadMenu()
end
function BaseScene:updateSelectedState(isBounce)
if IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
if #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local selected = node:getChildByName("selected");
if selected then
selected:setVisible(false);
end
NodeManager.setHighlight(node,false);
end
end
local node = self.nodes[self.nodeIndex][self.selectedIndex];
local selected = node:getChildByName("selected");
if selected then
selected:setVisible(true);
end
NodeManager.setHighlight(node,true,isBounce);
end
function BaseScene:removeAllSelectedState()
if #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local selected = node:getChildByName("selected");
if selected then
selected:setVisible(false);
end
NodeManager.setHighlight(node,false);
end
end
end
return BaseScene
\ No newline at end of file
local BaseSceneNew = class("BaseSceneNew", function() return display.newScene() end)
function BaseSceneNew:ctor()
self.nodes = {};
self.selected_node = nil;
self.range_value = 30; --误差范围
end
function BaseSceneNew:onButtonClick(ref, type,onComplete)
if 0 == type then
-- MyAudio.playSound("BUTTON_CLICK")
elseif 2 == type then
onComplete(ref, type)
end
end
--上键处理函数
function BaseSceneNew:onKeypadUp(isBounce,is_show_highlight,isLoop)
if self.selected_node == nil or IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
local curPos = self.selected_node:convertToWorldSpace(cc.p(0,0));
local minDinstance = 9999;
local near_node = nil;
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local _p = node:convertToWorldSpace(cc.p(0,0));
if _p.y > curPos.y + self.range_value then
_distance = Point.distance(curPos,_p);
if _distance < minDinstance then
minDinstance = _distance;
near_node = node;
end
end
end
end
isLoop = isLoop or false;
if isLoop and not near_node then
for i,v in ipairs(self.nodes) do
if TableUtil.IsInTable(v,self.selected_node) and #v > 1 then
local one_line_list = {};
for ii,vv in ipairs(v) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
local x_distance = math.abs(curPos.x - _p.x);
print(x_distance)
if x_distance <= self.range_value then
one_line_list[#one_line_list+1] = vv;
end
end
local max_y = 9999;
for ii,vv in ipairs(one_line_list) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
if _p.y < max_y then
max_y = _p.y;
near_node = vv;
end
end
break;
end
end
end
if near_node then
self:updateSelectedState(near_node,isBounce,is_show_highlight);
end
end
--下键处理函数
function BaseSceneNew:onKeypadDown(isBounce,is_show_highlight,isLoop)
if self.selected_node == nil or IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
local curPos = self.selected_node:convertToWorldSpace(cc.p(0,0));
local minDinstance = 9999;
local near_node = nil;
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local _p = node:convertToWorldSpace(cc.p(0,0));
if _p.y < curPos.y - self.range_value then
_distance = Point.distance(curPos,_p);
if _distance < minDinstance then
minDinstance = _distance;
near_node = node;
end
end
end
end
isLoop = isLoop or false;
if isLoop and not near_node then
for i,v in ipairs(self.nodes) do
if TableUtil.IsInTable(v,self.selected_node) and #v > 1 then
local one_line_list = {};
for ii,vv in ipairs(v) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
local x_distance = math.abs(curPos.x - _p.x);
print(x_distance)
if x_distance <= self.range_value then
one_line_list[#one_line_list+1] = vv;
end
end
local max_y = -9999;
for ii,vv in ipairs(one_line_list) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
if _p.y > max_y then
max_y = _p.y;
near_node = vv;
end
end
break;
end
end
end
if near_node then
self:updateSelectedState(near_node,isBounce,is_show_highlight);
end
end
--左键处理函数
function BaseSceneNew:onKeypadLeft(isBounce,is_show_highlight,isLoop)
if self.selected_node == nil or IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
local curPos = self.selected_node:convertToWorldSpace(cc.p(0,0));
local minDinstance = 9999;
local near_node = nil;
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local _p = node:convertToWorldSpace(cc.p(0,0));
if _p.x < curPos.x - self.range_value then
_distance = Point.distance(curPos,_p);
if _distance < minDinstance then
minDinstance = _distance;
near_node = node;
end
end
end
end
isLoop = isLoop or false;
if isLoop and not near_node then
for i,v in ipairs(self.nodes) do
if TableUtil.IsInTable(v,self.selected_node) and #v > 1 then
local one_line_list = {};
for ii,vv in ipairs(v) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
local y_distance = math.abs(curPos.y - _p.y);
if y_distance <= self.range_value then
one_line_list[#one_line_list+1] = vv;
end
end
local max_x = -9999;
for ii,vv in ipairs(one_line_list) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
if _p.x > max_x then
max_x = _p.x;
near_node = vv;
end
end
break;
end
end
end
if near_node then
self:updateSelectedState(near_node,isBounce,is_show_highlight);
end
end
--右键处理函数
function BaseSceneNew:onKeypadRight(isBounce,is_show_highlight,isLoop)
if self.selected_node == nil or IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
local curPos = self.selected_node:convertToWorldSpace(cc.p(0,0));
local minDinstance = 9999;
local near_node = nil;
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local _p = node:convertToWorldSpace(cc.p(0,0));
if _p.x > curPos.x + self.range_value then
_distance = Point.distance(curPos,_p);
if _distance < minDinstance then
minDinstance = _distance;
near_node = node;
end
end
end
end
isLoop = isLoop or false;
if isLoop and not near_node then
for i,v in ipairs(self.nodes) do
if TableUtil.IsInTable(v,self.selected_node) and #v > 1 then
local one_line_list = {};
for ii,vv in ipairs(v) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
local y_distance = math.abs(curPos.y - _p.y);
if y_distance <= self.range_value then
one_line_list[#one_line_list+1] = vv;
end
end
local min_x = 9999;
for ii,vv in ipairs(one_line_list) do
local _p = vv:convertToWorldSpace(cc.p(0,0));
if _p.x < min_x then
min_x = _p.x;
near_node = vv;
end
end
break;
end
end
end
if near_node then
self:updateSelectedState(near_node,isBounce,is_show_highlight);
end
end
--菜单键处理函数
function BaseSceneNew:onKeypadMenu()
end
function BaseSceneNew:updateSelectedState(near_node,isBounce,is_show_highlight)
if IS_TV == 0 then
return;
end
if isBounce == nil then
isBounce = true;
end
if is_show_highlight == nil then
is_show_highlight = true;
end
if #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local selected = node:getChildByName("selected");
if selected then
selected:setVisible(false);
end
NodeManager.setHighlight(node,false);
end
end
if near_node then
if near_node.is_tab then
for i,v in ipairs(self.nodes) do
if TableUtil.IsInTable(v,near_node) then
if self.selected_node and TableUtil.IsInTable(v,self.selected_node) then
break;
else
for ii,vv in ipairs(v) do
if vv.is_selected then
near_node = vv;
break;
end
end
break;
end
end
end
end
self.selected_node = near_node;
local selected = near_node:getChildByName("selected");
if selected then
selected:setVisible(true);
end
if is_show_highlight then
NodeManager.setHighlight(near_node,true,isBounce);
end
if self.selected_node.is_tab and self.selected_node.fn then
self.selected_node:fn();
end
end
end
function BaseSceneNew:removeAllSelectedState()
if #self.nodes == 0 then
logE("该界面没有设置按键节点");
return ;
end
for i,v in ipairs(self.nodes) do
for index,node in ipairs(v) do
local selected = node:getChildByName("selected");
if selected then
selected:setVisible(false);
end
NodeManager.setHighlight(node,false);
end
end
end
return BaseSceneNew
\ No newline at end of file
local AlertView = dialog.uinode("ui/AlertLayer.csb",import(".BaseView"))
function AlertView:ctor()
AlertView.super.ctor(self);
end
function AlertView:show(info,yesFun,noFun,selectedIndex)
local scene = cc.Director:getInstance():getRunningScene()
local inst = AlertView:create();
scene:addChild(inst, dialog.ZORDER_POP);
local panel = inst:getChildByName("panel");
panel:setScale(0.5);
local scaleTo = cc.ScaleTo:create(0.2,1);
panel:runAction(scaleTo);
panel:getChildByName("txt"):setString(info.msg);
inst.yesFun = yesFun;
inst.noFun = noFun;
inst.selectedIndex = selectedIndex or 1;
inst:init();
return inst;
end
function AlertView:init()
self:setContentSize(cc.size(display.width,display.height));
ccui.Helper:doLayout(self);
local btn_ok = self:getChildByName("panel"):getChildByName("btn_ok");
btn_ok.fn = handler(self,self.onYes);
btn_ok:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_ok.fn)end);
local btn_cancel = self:getChildByName("panel"):getChildByName("btn_cancel");
btn_cancel.fn = handler(self,self.onNo);
btn_cancel:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, btn_cancel.fn)end);
self.nodes[1] = {btn_ok,btn_cancel};
self:updateSelectedState();
end
function AlertView:onYes()
if self.yesFun then
self.yesFun();
end
self:close();
end
function AlertView:onNo()
if self.noFun then
self.noFun();
end
self:close();
end
--返回键处理函数
function AlertView:onKeypadBack()
if self.noFun then
self.noFun();
end
self:close();
end
return AlertView
\ No newline at end of file