2025-06-04 05:12:01 +08:00

154 lines
4.2 KiB
Plaintext

EngageBookView = class("EngageBookView", SubView)
local _ZenyID = GameConfig.MoneyId.Zeny
local _TicketID = GameConfig.Wedding and GameConfig.Wedding.ticket_itemid or 5002
function EngageBookView:Init()
self:FindObjs()
self:AddEvts()
self:InitShow()
end
function EngageBookView:FindObjs()
self.gameObject = self:LoadPreferb("view/EngageBookView", nil, true)
self.closecomp = self.gameObject:GetComponent(CloseWhenClickOtherPlace)
self.zone = self:FindGO("Zone"):GetComponent(UILabel)
self.date = self:FindGO("Date"):GetComponent(UILabel)
self.target = self:FindGO("Target"):GetComponent(UILabel)
end
function EngageBookView:AddEvts()
self.closecomp.callBack = function (go)
self:ShowSelf(false)
end
local bookBtn = self:FindGO("BookBtn")
self:AddClickEvent(bookBtn, function ()
self:Book()
end)
end
function EngageBookView:InitShow()
local cost = self:FindGO("Cost")
self.cost = SpriteLabel.new(cost, nil, 32, 32, true)
end
function EngageBookView:SetData(data, stick, side, offset)
if data then
self:ShowSelf(true)
local pos = NGUIUtil.GetAnchorPoint(self.gameObject, stick, side, offset)
self.gameObject.transform.position = pos
local date = data.date
local day = data.day
self.timeStamp = date.timeStamp
self.configid = day.configid
self:UpdateView(date, day)
end
end
function EngageBookView:UpdateView(date, dayData)
self.zone.text = string.format(ZhString.Wedding_EngageBookZone, MyselfProxy.Instance:GetZoneString())
local year = 1900
self.month = 1
self.day = 1
if date ~= nil then
year = date.time.year
self.month = date.time.month
self.day = date.time.day
end
self.starthour = 0
self.endhour = 0
self.costValue = 9999999999
if dayData ~= nil then
self.starthour = dayData:GetStartTimeData().hour
self.endhour = dayData:GetEndTimeData().hour
self.costValue = dayData.price
end
self.date.text = string.format(ZhString.Wedding_EngageBookDate, year, self.month, self.day, self.starthour, self.endhour)
local itemid = _ZenyID
if WeddingProxy.Instance:IsEngageUseTicket() then
itemid = _TicketID
self.costValue = 1
end
local info = string.format(ZhString.Wedding_EngageBookCost, itemid, self.costValue)
self.cost:Reset()
self.cost:SetText(info, true)
local _Myself = Game.Myself
local followid = _Myself:Client_GetFollowLeaderID()
local handFollowerId = _Myself:Client_GetHandInHandFollower()
local isHanding = _Myself:Client_IsFollowHandInHand()
local handTargetId = isHanding and followid or handFollowerId
local user = NSceneUserProxy.Instance:Find(handTargetId)
local name = ""
if user ~= nil then
name = user.data.name
end
self.target.text = string.format(ZhString.Wedding_EngageBookTarget, name)
end
function EngageBookView:Book()
if not WeddingProxy.Instance:IsSelfSingle() then
MsgManager.ShowMsgByID(9648)
return
end
if self.timeStamp ~= nil and self.configid ~= nil then
--是否牽手
local _Myself = Game.Myself
local isHandFollow = _Myself:Client_IsFollowHandInHand()
local handFollowId = _Myself:Client_GetHandInHandFollower()
if isHandFollow == false and handFollowId == 0 then
MsgManager.ShowMsgByID(9600)
return
end
if handFollowId == 0 then
MsgManager.ShowMsgByID(9628)
return
end
--金幣是否足夠
local isUseTicket = WeddingProxy.Instance:IsEngageUseTicket()
local itemid = _TicketID
if not isUseTicket then
local total = MyselfProxy.Instance:GetROB()
if total < self.costValue then
MsgManager.ShowMsgByID(9603)
return
end
itemid = _ZenyID
end
local sb = LuaStringBuilder.CreateAsTable()
sb:Append(self.costValue)
sb:Append(Table_Item[itemid].NameZh)
MsgManager.ConfirmMsgByID(9604, function ()
local isHandFollow = _Myself:Client_IsFollowHandInHand()
local handFollowId = _Myself:Client_GetHandInHandFollower()
if isHandFollow == false and handFollowId == 0 then
MsgManager.ShowMsgByID(9600)
return
end
ServiceWeddingCCmdProxy.Instance:CallReserveWeddingDateCCmd(self.timeStamp, self.configid, handFollowId, isUseTicket)
self:ShowSelf(false)
end, nil, nil, sb:ToString(), MyselfProxy.Instance:GetZoneString(), self.month, self.day, self.starthour, self.endhour)
sb:Destroy()
end
end
function EngageBookView:ShowSelf(isShow)
self.gameObject:SetActive(isShow)
end