Skip to main content
Skip to main content

PlaceableFenceAddSegmentEvent

PlaceableFenceAddSegmentEvent

Description

Event for adding fence segment

Parent

Event

Functions

emptyNew

Description

Create instance of Event class

Definition

emptyNew()

Return Values

anyselfinstance of class event

Code

function PlaceableFenceAddSegmentEvent.emptyNew()
return Event.new( PlaceableFenceAddSegmentEvent _mt)
end

new

Description

Create new instance of event

Definition

new(table object, integer groupIndex, boolean isActive, , , , , , )

Arguments

tableobjectobject
integergroupIndexindex of group
booleanisActiveis active
anyx2
anyz2
anyrenderFirst
anyrenderLast
anygateIndex
anyprice

Code

function PlaceableFenceAddSegmentEvent.new(fence, x1, z1, x2, z2, renderFirst, renderLast, gateIndex, price)
local self = PlaceableFenceAddSegmentEvent.emptyNew()

self.fence = fence
self.x1 = x1
self.z1 = z1
self.x2 = x2
self.z2 = z2
self.renderFirst = renderFirst
self.renderLast = renderLast
self.gateIndex = gateIndex
self.price = price

return self
end

readStream

Description

Called on client side on join

Definition

readStream(integer streamId, Connection connection)

Arguments

integerstreamIdstreamId
Connectionconnectionconnection

Code

function PlaceableFenceAddSegmentEvent:readStream(streamId, connection)
self.fence = NetworkUtil.readNodeObject(streamId)

self.x1 = streamReadFloat32(streamId)
self.z1 = streamReadFloat32(streamId)
self.x2 = streamReadFloat32(streamId)
self.z2 = streamReadFloat32(streamId)
self.renderFirst = streamReadBool(streamId)
self.renderLast = streamReadBool(streamId)
self.gateIndex = streamReadUInt8(streamId)
if self.gateIndex = = 0 then
self.gateIndex = nil
end
self.price = streamReadInt32(streamId)

self:run(connection)
end

run

Description

Run action on receiving side

Definition

run(Connection connection)

Arguments

Connectionconnectionconnection

Code

function PlaceableFenceAddSegmentEvent:run(connection)
if self.fence ~ = nil and self.fence:getIsSynchronized() then
local segment = self.fence:createSegment( self.x1, self.z1, self.x2, self.z2, self.renderFirst, self.gateIndex)
segment.renderLast = self.renderLast

-- On clients we need to generate synchronously, as the next event has gate AO info
--and the poles and gates need to be generated by then.
self.fence:addSegment(segment, self.gateIndex ~ = nil and connection:getIsServer())

g_messageCenter:publish( PlaceableFenceAddSegmentEvent , self.fence, segment)

if not connection:getIsServer() then
g_currentMission:addMoney( - self.price, self.fence:getOwnerFarmId(), MoneyType.SHOP_PROPERTY_BUY, true )

g_server:broadcastEvent( self , false , nil , self.fence)
end
end
end

writeStream

Description

Called on server side on join

Definition

writeStream(integer streamId, Connection connection)

Arguments

integerstreamIdstreamId
Connectionconnectionconnection

Code

function PlaceableFenceAddSegmentEvent:writeStream(streamId, connection)
NetworkUtil.writeNodeObject(streamId, self.fence)

streamWriteFloat32(streamId, self.x1)
streamWriteFloat32(streamId, self.z1)
streamWriteFloat32(streamId, self.x2)
streamWriteFloat32(streamId, self.z2)
streamWriteBool(streamId, self.renderFirst)
streamWriteBool(streamId, self.renderLast)
streamWriteUInt8(streamId, self.gateIndex or 0 )
streamWriteInt32(streamId, self.price)
end