2025-06-04 05:02:57 +08:00

216 lines
5.5 KiB
Plaintext

baseCell = autoImport("BaseCell");
NpcMenuBtnCell = class("NpcMenuBtnCell",baseCell);
-- 新增新手引導
NpcMenuBtnCell.GuideType = {
VarietyShop = 10,
HeadShop = 18,
PicMake = 21,
AdventureSkill = 37,
}
NpcMenuBtnCell.Style = {
Primary = 1,
Second = 2,
Normal = 3,
Grey = 4,
}
function NpcMenuBtnCell:Init()
self.bg = self:FindComponent("Bg", UIMultiSprite);
self.icon = self:FindComponent("Icon", UIMultiSprite);
self.label = self:FindComponent("Label", UILabel);
self.multiplySymbol = self:FindGO("MultiplySymbol");
self.multiplySymbol_label = self:FindComponent("Label", UILabel, self.multiplySymbol.gameObject);
self:AddCellClickEvent();
self:SetEvent(self.gameObject, function ()
if(self.style ~= NpcMenuBtnCell.Style.Grey)then
self:PassEvent(MouseEvent.MouseClick, self);
end
end);
end
-- type name staticData
function NpcMenuBtnCell:SetData(data)
self:AddOrRemoveGuideId(self.gameObject)
self.data = data;
local menuType, name = data.menuType, data.name;
self.label.text = tostring( name );
local style = NpcMenuBtnCell.Style.Normal;
if(menuType == Dialog_MenuData_Type.NpcFunc)then
style = NpcMenuBtnCell.Style.Normal;
if(data.key)then
local guideId = NpcMenuBtnCell.GuideType[data.key];
if( guideId )then
self:AddOrRemoveGuideId(self.gameObject, guideId);
end
self:UpdateStorehouseBagNum(data.key);
end
elseif(menuType == Dialog_MenuData_Type.Task)then
local task = data.task;
if(task.type == QuestDataType.QuestDataType_MAIN or task.type == QuestDataType.QuestDataType_WANTED)then
style = NpcMenuBtnCell.Style.Primary;
elseif(task.type == QuestDataType.QuestDataType_BRANCH)then
style = NpcMenuBtnCell.Style.Second;
else
style = NpcMenuBtnCell.Style.Normal;
end
elseif(menuType == Dialog_MenuData_Type.Option)then
style = NpcMenuBtnCell.Style.Normal;
elseif(menuType == Dialog_MenuData_Type.CustomFunc)then
style = NpcMenuBtnCell.Style.Normal;
end
if(data.state == NpcFuncState.InActive)then
self.gameObject:SetActive(false);
else
self.gameObject:SetActive(true);
if(data.state == NpcFuncState.Grey)then
style = NpcMenuBtnCell.Style.Grey;
end
end
self:SetStyle( style );
self:UpdateMultiplyInfo();
end
local tempColor = LuaColor.New(1,1,1,1);
local tempV3 = LuaVector3();
function NpcMenuBtnCell:SetStyle( style )
if(style ~= self.style)then
self.style = style;
if(style == NpcMenuBtnCell.Style.Primary)then
self.bg.CurrentState = 1;
tempColor:Set(1,1,1,1);
self.bg.color = tempColor;
tempColor:Set(170/255, 94/255, 2/255, 1);
self.label.effectColor = tempColor;
self:ActiveIcon(true, 0);
elseif(style == NpcMenuBtnCell.Style.Second)then
self.bg.CurrentState = 0;
tempColor:Set(1,1,1,1);
self.bg.color = tempColor;
tempColor:Set(48/255, 65/255, 147/255, 1);
self.label.effectColor = tempColor;
self:ActiveIcon(true, 1);
elseif(style == NpcMenuBtnCell.Style.Normal)then
self.bg.CurrentState = 0;
tempColor:Set(1,1,1,1);
self.bg.color = tempColor;
tempColor:Set(48/255, 65/255, 147/255, 1);
self.label.effectColor = tempColor;
self:ActiveIcon(false);
elseif(style == NpcMenuBtnCell.Style.Grey)then
self.bg.CurrentState = 0;
tempColor:Set(1/255,2/255,3/255,1);
self.bg.color = tempColor;
tempColor:Set(177/255, 177/255, 177/255, 1);
self.label.effectColor = tempColor;
self:ActiveIcon(false);
end
end
end
function NpcMenuBtnCell:ActiveIcon(b, state)
if(b)then
self.icon.gameObject:SetActive(true);
if(state)then
self.icon.CurrentState = state;
end
self.icon:UpdateAnchors();
tempV3:Set(10, 6, 0);
self.label.transform.localPosition = tempV3;
else
self.icon.gameObject:SetActive(false);
tempV3:Set(0, 6, 0);
self.label.transform.localPosition = tempV3;
end
end
function NpcMenuBtnCell:UpdateStorehouseBagNum(type)
if(not self.storehouseNum)then
self.storehouseNum = self:FindComponent("BagNum", UILabel);
end
if(type == storehouse)then
local repBag = BagProxy.Instance.repositoryBag;
local uplimit = repBag:GetUplimit();
local items = repBag:GetItems();
self.storehouseNum.gameObject:SetActive(true);
self.storehouseNum.text = #items.."/"..uplimit;
-- if(uplimit > 0)then
-- local items = repBag:GetItems();
-- if(#items > uplimit)then
-- self.storehouseNum.gameObject:SetActive(true);
-- self.storehouseNum.text = #items.."/"..uplimit;
-- else
-- self.storehouseNum.gameObject:SetActive(false);
-- end
-- else
-- self.storehouseNum.gameObject:SetActive(false);
-- end
else
self.storehouseNum.gameObject:SetActive(false);
end
end
local NpcFunction_Multiply_RewardMap =
{
[1000] = AERewardType.Tower,
[1100] = AERewardType.Laboratory,
[4015] = AERewardType.GuildRaid, --公會副本
[1450] = AERewardType.GuildDojo, --公會道場
[10002] = AERewardType.PveCard, -- 卡牌副本
}
function NpcMenuBtnCell:UpdateMultiplyInfo()
local data = self.data;
if(data == nil or data.npcFuncData == nil)then
self.multiplySymbol:SetActive(false);
return;
end
local typeid = data.npcFuncData.id;
local rewardType = NpcFunction_Multiply_RewardMap[typeid];
if(rewardType == nil)then
self.multiplySymbol:SetActive(false);
return;
end
local rewardInfo = ActivityEventProxy.Instance:GetRewardByType(rewardType);
if(rewardInfo == nil)then
self.multiplySymbol:SetActive(false);
return;
end
local multiply = rewardInfo:GetMultiple() or 1;
if(multiply > 1)then
self.multiplySymbol_label.text = "*" .. multiply;
self.multiplySymbol:SetActive(true);
else
self.multiplySymbol:SetActive(false);
end
end