Skip to main content
Skip to main content

ShopTrigger

ShopTrigger

Description

Class for shop triggers to open shop gui

Functions

delete

Description

Deleting shop trigger

Definition

delete()

Code

function ShopTrigger:delete()
g_messageCenter:unsubscribeAll( self )
if self.triggerId ~ = nil then
removeTrigger( self.triggerId)
end
self.shopSymbol = nil
g_currentMission.activatableObjectsSystem:removeActivatable( self.activatable)
end

new

Description

Creating shop trigger object

Definition

new(integer node)

Arguments

integernodetrigger node id

Return Values

integerinstanceinstance of object

Code

function ShopTrigger.new(node)
local self = setmetatable( { } , ShopTrigger _mt)

if g_currentMission:getIsClient() then
self.triggerId = node

if not CollisionFlag.getHasMaskFlagSet(node, CollisionFlag.PLAYER) then
Logging.warning( "Missing collision mask bit '%d'.Please add this bit to shop trigger node '%s'" , CollisionFlag.getBit(CollisionFlag.PLAYER), I3DUtil.getNodePath(node))
end

addTrigger(node, "triggerCallback" , self )
end

self.shopSymbol = getChildAt(node, 0 )
self.shopPlayerSpawn = getChildAt(node, 1 )
self.isEnabled = true

g_messageCenter:subscribe(MessageType.PLAYER_FARM_CHANGED, self.playerFarmChanged, self )
g_messageCenter:subscribe(MessageType.SETTING_CHANGED[GameSettings.SETTING.SHOW_TRIGGER_MARKER], self.onTriggerVisibilityChanged, self )

self:updateIconVisibility()

self.activatable = ShopTriggerActivatable.new( self )

return self
end

onCreate

Description

On create shop trigger

Definition

onCreate(integer id)

Arguments

integeridtrigger node id

Code

function ShopTrigger:onCreate(id)
g_currentMission:addNonUpdateable( ShopTrigger.new(id))
end

onTriggerVisibilityChanged

Description

Definition

onTriggerVisibilityChanged()

Code

function ShopTrigger:onTriggerVisibilityChanged()
self:updateIconVisibility()
end

openShop

Description

Called on activate object

Definition

openShop()

Code

function ShopTrigger:openShop()
if g_guidedTourManager:getIsTourRunning() then
InfoDialog.show(g_i18n:getText( "guidedTour_feature_deactivated" ))
return
end

g_gui:changeScreen( nil , ShopMenu)

local x,y,z = getWorldTranslation( self.shopPlayerSpawn)
local dx, _, dz = localDirectionToWorld( self.shopPlayerSpawn, 0 , 0 , - 1 )
g_localPlayer:teleportTo(x, y, z)
g_localPlayer:setMovementYaw( MathUtil.getYRotationFromDirection(dx, dz))
end

playerFarmChanged

Description

Definition

playerFarmChanged()

Arguments

anyplayer

Code

function ShopTrigger:playerFarmChanged(player)
if player = = g_localPlayer then
self:updateIconVisibility()
end
end

triggerCallback

Description

Trigger callback

Definition

triggerCallback(integer triggerId, integer otherId, boolean onEnter, boolean onLeave, boolean onStay)

Arguments

integertriggerIdid of trigger
integerotherIdid of actor
booleanonEnteron enter
booleanonLeaveon leave
booleanonStayon stay

Code

function ShopTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
if self.isEnabled and g_currentMission.missionInfo:isa(FSCareerMissionInfo) then
if onEnter or onLeave then
if g_localPlayer ~ = nil and otherId = = g_localPlayer.rootNode then
if onEnter then
if Platform.gameplay.autoActivateTrigger and self.activatable:getIsActivatable() then
self.activatable:run()
return
end
g_currentMission.activatableObjectsSystem:addActivatable( self.activatable)
else
g_currentMission.activatableObjectsSystem:removeActivatable( self.activatable)
end
end
end
end
end

updateIconVisibility

Description

Turn the icon on or off depending on the current game and the players farm

Definition

updateIconVisibility()

Code

function ShopTrigger:updateIconVisibility()
if self.shopSymbol ~ = nil then
local isAvailable = self.isEnabled and g_currentMission.missionInfo:isa(FSCareerMissionInfo)
local farmId = g_currentMission:getFarmId()
local visibleForFarm = farmId ~ = FarmManager.SPECTATOR_FARM_ID
local settingVisible = g_gameSettings:getValue(GameSettings.SETTING.SHOW_TRIGGER_MARKER)

setVisibility( self.shopSymbol, isAvailable and visibleForFarm and settingVisible)
end
end