前端界面
DiaoYuDaShiOBJ = {}
DiaoYuDaShiOBJ.__cname = "DiaoYuDaShiOBJ"
--DiaoYuDaShiOBJ.config = ssrRequireCsvCfg("cfg_DiaoYuDaShi")
DiaoYuDaShiOBJ.cost = {{}}
DiaoYuDaShiOBJ.give = {{}}
--鱼竿位置
DiaoYuDaShiOBJ.fishing_pos = {
{330,90},
{196,108},
{70,128},
}
local startFishingPath = "res/custom/ShuangJieHuoDongMain/DiaoYuDaShi/start/tx_"
local holdFishingPath = "res/custom/ShuangJieHuoDongMain/DiaoYuDaShi/hold/tx_"
local endFishingPath = "res/custom/ShuangJieHuoDongMain/DiaoYuDaShi/end/tx_"
-------------------------------↓↓↓ UI操作 ↓↓↓---------------------------------------
function DiaoYuDaShiOBJ:main(objcfg)
local parent = GUI:Win_Create(self.__cname, 0, 0, 0, 0, false, false, true, true, true, objcfg.NPCID)
GUI:LoadExport(parent, objcfg.UI_PATH)
self._parent = parent
self.ui = GUI:ui_delegate(parent)
ssrSetWidgetPosition(parent, self.ui.ImageBG, 2,0)
GUI:addOnClickEvent(self.ui.ImageBG, function()
--ssrPrint("我是防点击穿透")
end)
--关闭按钮
GUI:addOnClickEvent(self.ui.CloseButton, function()
GUI:Win_Close(self._parent)
end)
-- 打开窗口缩放动画
GUI:Timeline_Window1(self._parent)
--网络消息示例
GUI:addOnClickEvent(self.ui.Button_1, function()
ssrMessage:sendmsg(ssrNetMsgCfg.DiaoYuDaShi_Request)
end)
GUI:addOnClickEvent(self.ui.Button_3, function()
GUI:setVisible(self.ui.Panel_addFishingRod, true)
end)
GUI:addOnClickEvent(self.ui.Panel_addFishingRod, function()
GUI:setVisible(self.ui.Panel_addFishingRod, false)
end)
GUI:addOnClickEvent(self.ui.Button_addFishingRodClose, function()
GUI:setVisible(self.ui.Panel_addFishingRod, false)
end)
--关闭鱼获
GUI:addOnClickEvent(self.ui.Panel_shouHuo, function()
GUI:setVisible(self.ui.Panel_shouHuo, false)
end)
GUI:addOnClickEvent(self.ui.Button_ShouHuoClose, function()
GUI:setVisible(self.ui.Panel_shouHuo, false)
end)
--购买位置
GUI:addOnTouchEvent(self.ui.Panel_gouMaiCiShu, function()
GUI:setVisible(self.ui.Panel_gouMaiCiShu, false)
end)
GUI:addOnTouchEvent(self.ui.Button_gouMaiCiShuClose, function()
GUI:setVisible(self.ui.Panel_gouMaiCiShu, false)
end)
GUI:addOnTouchEvent(self.ui.Button_2, function()
GUI:setVisible(self.ui.Panel_gouMaiCiShu, true)
end)
--[[
功能: 处理购买钓鱼次数按钮的点击事件
实现逻辑:
1. 创建确认弹窗数据
- 设置提示文本(花费100非绑灵符)
- 设置按钮类型为2(确认/取消)
2. 设置确认回调函数
- 当玩家点击确认(atype == 1)时
- 发送购买次数请求(DiaoYuDaShi_BuyCount)
3. 显示确认弹窗
- 使用通用提示弹窗组件(OpenCommonTipsPop)
注意事项:
- 使用通用弹窗组件避免重复创建UI
- 只在玩家确认后才发送网络请求
- 购买费用固定为100非绑灵符
]]
GUI:addOnTouchEvent(self.ui.Button_gouMaiCiShu, function()
local data = {}
data.str = "确定花费[100非绑灵符]增加次数?"
data.btnType = 2
data.callback = function(atype, param)
if atype == 1 then
ssrMessage:sendmsg(ssrNetMsgCfg.DiaoYuDaShi_BuyCount)
end
end
SL:OpenCommonTipsPop(data)
end)
--购买钓位
GUI:addOnClickEvent(self.ui.Button_buyFishingRod, function()
local data = {}
data.str = "确定花费[200W元宝]购买钓位?"
data.btnType = 2
data.callback = function(atype, param)
if atype == 1 then
ssrMessage:sendmsg(ssrNetMsgCfg.DiaoYuDaShi_BuyPos)
end
end
SL:OpenCommonTipsPop(data)
end)
self:ShowUI()
self:UpdateUI()
end
--[[
函数名: DiaoYuDaShiOBJ:StartFishing
功能: 实现钓鱼动画和进度条显示
实现逻辑:
1. 开始钓鱼动画
- 设置动画参数(count=5, speed=200, loop=1)
- 清除现有鱼竿节点
- 根据鱼竿数量创建开始钓鱼动画
- 使用startFishingPath路径加载动画资源
2. 进度条更新
- 初始化进度值为0
- 创建updateJindu函数递归更新进度
- 每0.04秒更新一次进度条和文本显示
- 进度达到100%时停止更新
3. 持续钓鱼动画
- 0.9秒后切换到持续钓鱼动画
- 设置新动画参数(count=2, speed=200, loop=-1)
- 使用holdFishingPath路径加载动画资源
- 显示进度条面板并开始进度更新
参数说明:
无输入参数
注意事项:
- 动画资源路径通过全局变量startFishingPath和holdFishingPath指定
- 鱼竿位置使用预设的fishing_pos数组
- loop=-1表示无限循环播放动画
- 进度条更新间隔为0.04秒
]]
--显示界面
function DiaoYuDaShiOBJ:ShowUI()
local ext = {
count = 20,
speed = 100,
loop = -1,
finishhide = 0
}
GUI:Frames_Create(self.ui.Node_1, "frame_bg", 0, 0, "res/custom/ShuangJieHuoDongMain/DiaoYuDaShi/frames/bg_", ".png", 1, 20,ext)
end
--开始钓鱼
function DiaoYuDaShiOBJ:StartFishing()
local ext = {
count = 5,
speed = 200,
loop = 1,
finishhide = 1
}
GUI:removeAllChildren(self.ui.Node_fishingRod)
for i = 1, self.fishingRodNum do
local pos = self.fishing_pos[i]
GUI:Frames_Create(self.ui.Node_fishingRod, "fishingRod_"..i, pos[1], pos[2], startFishingPath, ".png", 1, 5,ext)
end
local jindu = 0
local function updateJindu()
jindu = jindu + 1
GUI:LoadingBar_setPercent(self.ui.LoadingBar_1, jindu)
GUI:Text_setString(self.ui.Text_jinDuFont, "钓鱼中.."..jindu.."%")
SL:scheduleOnce(self.ui.Node_fishingRod, function()
if jindu < 100 then
updateJindu()
end
end, 0.04)
end
SL:ScheduleOnce(function()
ext = {
count = 2,
speed = 200,
loop = -1,
finishhide = 1
}
for i = 1, self.fishingRodNum do
local pos = self.fishing_pos[i]
GUI:Frames_Create(self.ui.Node_fishingRod, "holdFishingRod_"..i, pos[1], pos[2], holdFishingPath, ".png", 1, 2,ext)
end
GUI:setVisible(self.ui.Panel_jinDu, true)
updateJindu()
end, 0.9)
end
--[[
函数名: DiaoYuDaShiOBJ:UpdateUI
功能: 更新钓鱼大师界面的显示状态
实现逻辑:
1. 界面状态处理
- 检查并隐藏添加鱼竿面板(如果显示)
- 清除所有鱼竿节点的子节点
2. 鱼竿显示更新
- 根据当前鱼竿数量(fishingRodNum)创建对应数量的鱼竿图标
- 使用fishing_pos数组中预设的位置放置鱼竿图标
- 使用startFishingPath路径加载鱼竿图片资源
3. 添加按钮位置调整
- 根据鱼竿数量(1个/2个/3个)调整Button_3的位置
- 当鱼竿数量为1时,设置位置(420,186)
- 当鱼竿数量为2时,设置位置(283,186)
- 当鱼竿数量为3时,隐藏按钮
4. 文本显示更新
- 计算剩余可钓鱼次数(免费次数10减去已使用次数)
- 显示总剩余次数(剩余免费次数加上购买的次数)
- 显示今日剩余可购买次数(30减去已购买次数)
注意事项:
- 鱼竿位置使用预设的坐标数组
- 免费钓鱼次数上限为10次
- 每日购买次数上限为30次
- 界面元素位置根据鱼竿数量动态调整
]]
function DiaoYuDaShiOBJ:UpdateUI()
--如果界面显示则隐藏
if GUI:getVisible(self.ui.Panel_addFishingRod) then
GUI:setVisible(self.ui.Panel_addFishingRod, false)
end
GUI:removeAllChildren(self.ui.Node_fishingRod)
for i = 1, self.fishingRodNum do
local pos = self.fishing_pos[i]
if pos then
GUI:Image_Create(self.ui.Node_fishingRod, "Image_"..i, pos[1], pos[2], startFishingPath.."1.png")
end
end
if self.fishingRodNum == 1 then
GUI:setPosition(self.ui.Button_3, 420, 186)
elseif self.fishingRodNum == 2 then
GUI:setPosition(self.ui.Button_3, 283, 186)
else
GUI:setVisible(self.ui.Button_3, false)
end
local shengYuCiShu = 10 - self.toDayFishingCount
if shengYuCiShu <= 0 then
shengYuCiShu = 0
end
GUI:Text_setString(self.ui.Text_1, shengYuCiShu + self.buyFishingNum)
GUI:Text_setString(self.ui.Text_sygmcs, string.format("今日还可购买%d次", 30 - self.fishingNum))
end
function DiaoYuDaShiOBJ:ShouHuo(arg1, arg2, arg3, data)
GUI:setVisible(self.ui.Panel_jinDu, false)
GUI:setVisible(self.ui.Panel_shouHuo, true)
ssrAddItemListX(self.ui.Panel_shouHuoShou, data, "item_list", {spacing = 49, imgRes = "res/custom/ShuangJieHuoDongMain/DiaoYuDaShi/itembg.png"})
GUI:Timeline_Window1(self.ui.Image_5)
GUI:removeAllChildren(self.ui.Node_fishingRod)
end
-------------------------------↓↓↓ 网络消息 ↓↓↓---------------------------------------
function DiaoYuDaShiOBJ:SyncResponse(arg1, arg2, arg3, data)
self.fishingRodNum = arg1 + 1
self.toDayFishingCount = arg2
self.buyFishingNum = arg3
self.fishingNum = data[1]
if GUI:GetWindow(nil, self.__cname) then
self:UpdateUI()
end
end
return DiaoYuDaShiOBJ