Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- AnimalLoadingTrigger
- BaleUnloadTrigger
- BasketTrigger
- FillPlane
- FillTrigger
- InsideBuildingTrigger
- LoadTrigger
- LoanTrigger
- RainDropFactorTrigger
- ShopTrigger
- TransportMissionTrigger
- UnloadTrigger
- WoodUnloadTrigger
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
ShopTrigger
DescriptionClass for shop triggers to open shop guiFunctions
- delete
- new
- onCreate
- onTriggerVisbilityChanged
- openShop
- playerFarmChanged
- triggerCallback
- updateIconVisibility
delete
DescriptionDeleting shop triggerDefinition
delete()Code
50 | function 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) |
57 | end |
new
DescriptionCreating shop trigger objectDefinition
new(integer node)Arguments
integer | node | trigger node id |
table | instance | instance of object |
21 | function 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 |
46 | end |
onCreate
DescriptionOn create shop triggerDefinition
onCreate(integer id)Arguments
integer | id | trigger node id |
13 | function ShopTrigger:onCreate(id) |
14 | g_currentMission:addNonUpdateable(ShopTrigger.new(id)) |
15 | end |
onTriggerVisbilityChanged
DescriptionDefinitiononTriggerVisbilityChanged()Code
114 | function ShopTrigger:onTriggerVisbilityChanged() |
115 | self:updateIconVisibility() |
116 | end |
openShop
DescriptionCalled on activate objectDefinition
openShop()Code
61 | function 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) |
68 | end |
playerFarmChanged
DescriptionDefinitionplayerFarmChanged()Code
106 | function ShopTrigger:playerFarmChanged(player) |
107 | if player == g_currentMission.player then |
108 | self:updateIconVisibility() |
109 | end |
110 | end |
triggerCallback
DescriptionTrigger callbackDefinition
triggerCallback(integer triggerId, integer otherId, boolean onEnter, boolean onLeave, boolean onStay)Arguments
integer | triggerId | id of trigger |
integer | otherId | id of actor |
boolean | onEnter | on enter |
boolean | onLeave | on leave |
boolean | onStay | on stay |
77 | function 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 |
89 | end |
updateIconVisibility
DescriptionTurn the icon on or off depending on the current game and the players farmDefinition
updateIconVisibility()Code
93 | function 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 |
102 | end |