Пример #1
0
    private void GenerateGameObject(ServerGameObject serverGameObject)
    {
        var        serverToGamePosition = tiles[serverGameObject.Position.I, serverGameObject.Position.J].transform.position;
        GameObject go;

        if (objects.ContainsKey(serverGameObject.Id))
        {
            go = objects[serverGameObject.Id];
            if (serverGameObject.Type == GameObjectType.Player)
            {
                go.GetComponent <Player>().MoveTo(serverToGamePosition);
            }
        }
        else
        {
            go = Instantiate(prefabs[serverGameObject.Type]);
            if (serverGameObject.Type == GameObjectType.Player)
            {
                go.GetComponent <Player>().IsEnemy = serverGameObject.Id != PlayerId;
            }
            objects.Add(serverGameObject.Id, go);
            go.transform.position = serverToGamePosition;
            go.GetComponent <ServerIdKeeper>().ServerId = serverGameObject.Id;
        }
    }
Пример #2
0
    public void SendPlayerMoveData(int i, int j)
    {
        var go = new ServerGameObject
        {
            Id       = field.PlayerId,
            Position = new ServerPosition(i, j),
            Type     = GameObjectType.Player
        };

        transport.SendPacketToServer(go);
    }
Пример #3
0
        public static void      Serialize(ServerGameObject node, ByteBuffer buffer)
        {
            using (SafeWrapByteBuffer.Get(buffer))
            {
                buffer.Append(node.gameObject.activeSelf);
                buffer.AppendUnicodeString(node.gameObject.name);
                buffer.Append(node.instanceID);
                buffer.Append(node.children.Count);

                for (int i = 0; i < node.children.Count; i++)
                {
                    NetGameObject.Serialize(node.children[i], buffer);
                }
            }
        }
Пример #4
0
        public static byte[] CreateCommandPacket(ulong tickId, ServerGameObject targetState)
        {
            var builder = new FlatBufferBuilder(1);

            Packet.StartDataVector(builder, 1);
            ObjectChange.CreateObjectChange(builder,
                                            targetState.Id,
                                            ObjectType.Player,
                                            targetState.Position.I,
                                            targetState.Position.J);
            var dataOffset = builder.EndVector();

            Packet.StartPacket(builder);
            Packet.AddTickId(builder, tickId);
            Packet.AddType(builder, SuperPvp.Core.Transport.PacketType.Command);
            Packet.AddData(builder, dataOffset);

            var packet = Packet.EndPacket(builder);

            builder.Finish(packet.Value);

            return(builder.SizedByteArray());
        }
Пример #5
0
    public void SendPacketToServer(ServerGameObject change)
    {
        var buffer = PacketGenerator.CreateCommandPacket(tick, change);

        endpoint.SendMessage(buffer, buffer.Length, QosType.Reliable);
    }