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

113 lines
2.8 KiB
Plaintext

GOManager_SceneGuildFlag = class("GOManager_SceneGuildFlag")
local tempVector2 = LuaVector2.zero
function GOManager_SceneGuildFlag:ctor()
self.objects = {}
self.renderers = {}
end
function GOManager_SceneGuildFlag:Clear()
TableUtility.TableClear(self.objects)
TableUtility.TableClear(self.renderers)
end
local function GetStrongHoldId_(obj, flagid)
local strongHoldId = tonumber(obj:GetProperty(0))
if nil ~= strongHoldId then
return strongHoldId
end
return flagId
end
function GOManager_SceneGuildFlag:SetIcon(strongHoldId, icon, offsetX, offsetY, scaleX, scaleY)
local flagObjects = self.objects
for flagId, obj in pairs(flagObjects) do
local shID = GetStrongHoldId_(obj, flagId)
if shID == strongHoldId then
self:SetFlagIcon(flagId, icon, offsetX, offsetY, scaleX, scaleY);
end
end
end
function GOManager_SceneGuildFlag:SetFlagIcon(flagID, icon, offsetX, offsetY, scaleX, scaleY)
local obj = self.objects[flagID]
if nil == obj then
return
end
local renderer = self.renderers[flagID]
if nil == renderer then
if nil == icon then
return
end
renderer = obj:GetComponentProperty(0)
self.renderers[flagID] = renderer
else
if nil == icon then
renderer.material = nil
renderer.materials = _EmptyTable
self.renderers[flagID] = nil
return
end
end
renderer.material = Game.Prefab_SceneGuildIcon.sharedMaterial
renderer.material.mainTexture = icon
if nil ~= offsetX and nil ~= offsetY then
tempVector2:Set(offsetX, offsetY)
renderer.material.mainTextureOffset = tempVector2
end
if nil ~= scaleX and nil ~= scaleY then
tempVector2:Set(scaleX, scaleY)
renderer.material.mainTextureScale = tempVector2
end
end
function GOManager_SceneGuildFlag:SetFlag(obj, ID)
self.objects[ID] = obj
if nil ~= obj then
local renderer = obj:GetComponentProperty(0)
renderer.material = nil
renderer.materials = _EmptyTable
else
self.renderers[ID] = nil
end
end
function GOManager_SceneGuildFlag:OnClick(obj)
-- helplog("Guild Flag Clicked", obj.ID)
local strongHoldId = GetStrongHoldId_(obj, obj.ID)
FunctionVisitNpc.AccessGuildFlag(strongHoldId, obj.transform)
end
function GOManager_SceneGuildFlag:ClearFlag(obj)
local objID = obj.ID
local testObj = self.objects[objID]
if nil ~= testObj and testObj == obj then
self:SetFlag(nil, objID)
return true
end
return false
end
function GOManager_SceneGuildFlag:RegisterGameObject(obj)
if GameConfig.SystemForbid.GVG then
GameObject.Destroy(obj.gameObject)
return true
end
local objID = obj.ID
Debug_AssertFormat(0 < objID, "RegisterSceneGuildFlag({0}) invalid id: {1}", obj, objID)
self:SetFlag(obj, objID)
return true
end
function GOManager_SceneGuildFlag:UnregisterGameObject(obj)
if not self:ClearFlag(obj) then
Debug_AssertFormat(false, "UnregisterSceneGuildFlag({0}) failed: {1}", obj, obj.ID)
return false
end
return true
end