mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-16 17:05:03 +01:00
86 lines
2.4 KiB
Go
86 lines
2.4 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/Andoryuuta/byteframe"
|
|
"github.com/Solenataris/Erupe/network/mhfpacket"
|
|
)
|
|
|
|
func handleMsgSysCreateObject(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgSysCreateObject)
|
|
|
|
// Lock the stage.
|
|
s.server.Lock()
|
|
|
|
// Make a new stage object and insert it into the stage.
|
|
objID := s.stage.GetNewObjectID(s.charID)
|
|
newObj := &StageObject{
|
|
id: objID,
|
|
ownerCharID: s.charID,
|
|
x: pkt.X,
|
|
y: pkt.Y,
|
|
z: pkt.Z,
|
|
}
|
|
|
|
s.stage.objects[s.charID] = newObj
|
|
|
|
// Unlock the stage.
|
|
s.server.Unlock()
|
|
// Response to our requesting client.
|
|
resp := byteframe.NewByteFrame()
|
|
resp.WriteUint32(objID) // New local obj handle.
|
|
doAckSimpleSucceed(s, pkt.AckHandle, resp.Data())
|
|
// Duplicate the object creation to all sessions in the same stage.
|
|
dupObjUpdate := &mhfpacket.MsgSysDuplicateObject{
|
|
ObjID: objID,
|
|
X: pkt.X,
|
|
Y: pkt.Y,
|
|
Z: pkt.Z,
|
|
OwnerCharID: s.charID,
|
|
}
|
|
s.logger.Info("Duplicate a new characters to others clients")
|
|
s.stage.BroadcastMHF(dupObjUpdate, s)
|
|
}
|
|
|
|
func handleMsgSysDeleteObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysPositionObject(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgSysPositionObject)
|
|
if s.server.erupeConfig.DevMode && s.server.erupeConfig.DevModeOptions.OpcodeMessages {
|
|
fmt.Printf("[%s] with objectID [%d] move to (%f,%f,%f)\n\n", s.Name, pkt.ObjID, pkt.X, pkt.Y, pkt.Z)
|
|
}
|
|
s.stage.Lock()
|
|
object, ok := s.stage.objects[s.charID]
|
|
if ok {
|
|
object.x = pkt.X
|
|
object.y = pkt.Y
|
|
object.z = pkt.Z
|
|
}
|
|
s.stage.Unlock()
|
|
// One of the few packets we can just re-broadcast directly.
|
|
s.stage.BroadcastMHF(pkt, s)
|
|
}
|
|
|
|
func handleMsgSysRotateObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysDuplicateObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysSetObjectBinary(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysGetObjectBinary(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysGetObjectOwner(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysUpdateObjectBinary(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysCleanupObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysAddObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysDelObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysDispObject(s *Session, p mhfpacket.MHFPacket) {}
|
|
|
|
func handleMsgSysHideObject(s *Session, p mhfpacket.MHFPacket) {}
|