LUADOC - Farming Simulator 22

ShopTrigger

Description
Class for shop triggers to open shop gui
Functions

delete

Description
Deleting shop trigger
Definition
delete()
Code
50function ShopTrigger:delete()
51 g_messageCenter:unsubscribeAll(self)
52 if self.triggerId ~= nil then
53 removeTrigger(self.triggerId)
54 end
55 self.shopSymbol = nil
56 g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable)
57end

new

Description
Creating shop trigger object
Definition
new(integer node)
Arguments
integernodetrigger node id
Return Values
tableinstanceinstance of object
Code
21function ShopTrigger.new(node)
22 local self = setmetatable({}, ShopTrigger_mt)
23
24 if g_currentMission:getIsClient() then
25 self.triggerId = node
26
27 if not CollisionFlag.getHasFlagSet(node, CollisionFlag.TRIGGER_PLAYER) then
28 Logging.warning("Missing collision mask bit '%d'. Please add this bit to shop trigger node '%s'", CollisionFlag.getBit(CollisionFlag.TRIGGER_PLAYER), I3DUtil.getNodePath(node))
29 end
30
31 addTrigger(node, "triggerCallback", self)
32 end
33
34 self.shopSymbol = getChildAt(node, 0)
35 self.shopPlayerSpawn = getChildAt(node, 1)
36 self.isEnabled = true
37
38 g_messageCenter:subscribe(MessageType.PLAYER_FARM_CHANGED, self.playerFarmChanged, self)
39 g_messageCenter:subscribe(MessageType.SETTING_CHANGED[GameSettings.SETTING.SHOW_TRIGGER_MARKER], self.onTriggerVisbilityChanged, self)
40
41 self:updateIconVisibility()
42
43 self.activatable = ShopTriggerActivatable.new(self)
44
45 return self
46end

onCreate

Description
On create shop trigger
Definition
onCreate(integer id)
Arguments
integeridtrigger node id
Code
13function ShopTrigger:onCreate(id)
14 g_currentMission:addNonUpdateable(ShopTrigger.new(id))
15end

onTriggerVisbilityChanged

Description
Definition
onTriggerVisbilityChanged()
Code
114function ShopTrigger:onTriggerVisbilityChanged()
115 self:updateIconVisibility()
116end

openShop

Description
Called on activate object
Definition
openShop()
Code
61function ShopTrigger:openShop()
62 g_gui:changeScreen(nil, ShopMenu)
63
64 local x,y,z = getWorldTranslation(self.shopPlayerSpawn)
65 local dx, _, dz = localDirectionToWorld(self.shopPlayerSpawn, 0, 0, -1)
66 g_currentMission.player:moveToAbsolute(x,y,z)
67 g_currentMission.player.rotY = MathUtil.getYRotationFromDirection(dx, dz)
68end

playerFarmChanged

Description
Definition
playerFarmChanged()
Code
106function ShopTrigger:playerFarmChanged(player)
107 if player == g_currentMission.player then
108 self:updateIconVisibility()
109 end
110end

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
77function ShopTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
78 if self.isEnabled and g_currentMission.missionInfo:isa(FSCareerMissionInfo) then
79 if onEnter or onLeave then
80 if g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
81 if onEnter then
82 g_currentMission.activatableObjectsSystem:addActivatable(self.activatable)
83 else
84 g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable)
85 end
86 end
87 end
88 end
89end

updateIconVisibility

Description
Turn the icon on or off depending on the current game and the players farm
Definition
updateIconVisibility()
Code
93function ShopTrigger:updateIconVisibility()
94 if self.shopSymbol ~= nil then
95 local isAvailable = self.isEnabled and g_currentMission.missionInfo:isa(FSCareerMissionInfo)
96 local farmId = g_currentMission:getFarmId()
97 local visibleForFarm = farmId ~= FarmManager.SPECTATOR_FARM_ID
98 local settingVisible = g_gameSettings:getValue(GameSettings.SETTING.SHOW_TRIGGER_MARKER)
99
100 setVisibility(self.shopSymbol, isAvailable and visibleForFarm and settingVisible)
101 end
102end