コード例 #1
0
    unsafe void IConverter <CharBufView> .Convert(ref char *dst, char *end, CharBufView value, FormatSpec formatSpec)
    {
        int lpadding = 0, rpadding = 0;

        if (formatSpec.argWidth < 0)
        {
            rpadding = -formatSpec.argWidth - value.length;
        }
        else
        {
            lpadding = formatSpec.argWidth - value.length;
        }

        while (lpadding-- > 0 && dst < end)
        {
            *dst++ = ' ';
        }

        for (int i = 0, l = value.length; i < l && dst < end; i++)
        {
            *dst++ = value.buf[i + value.start];
        }

        while (rpadding-- > 0 && dst < end)
        {
            *dst++ = ' ';
        }
    }
コード例 #2
0
    public void SendChatAnnouncement(CharBufView message)
    {
        var time    = (Game.Clock.ElapsedMilliseconds - m_StartTime) / 1000;
        var minutes = (int)time / 60;
        var seconds = (int)time % 60;

        var formatted_length = StringFormatter.Write(ref _buf, 0, "<color=#ffffffff>[{0}:{1:00}]</color><color=#ffa500ff> {2}</color>", minutes, seconds, message);

        unsafe
        {
            fixed(char *ptr = message.buf)
            {
                GameDebug.Assert(message.length <= NativeString512.MaxLength);
                var msg = new NativeString512();

                msg.CopyFrom(ptr, (ushort)message.length);

                var connectionEntities = m_ConnectionQuery.ToEntityArray(Allocator.TempJob);

                for (int i = 0; i < connectionEntities.Length; ++i)
                {
                    var connectionEntity = connectionEntities[i];
                    m_RpcChatQueue.Schedule(EntityManager.GetBuffer <OutgoingRpcDataStreamBufferComponent>(connectionEntity), new RpcChatMessage {
                        Message = msg
                    });
                }

                connectionEntities.Dispose();
            }
        }
    }
コード例 #3
0
    public void SendChatAnnouncement(CharBufView message)
    {
        var time    = (Game.Clock.ElapsedMilliseconds - m_StartTime) / 1000;
        var minutes = (int)time / 60;
        var seconds = (int)time % 60;

        var formatted_length = StringFormatter.Write(ref _buf, 0, "<color=#ffffffff>[{0}:{1:00}]</color><color=#ffa500ff> {2}</color>", minutes, seconds, message);

        m_NetworkServer.QueueEventBroadcast((ushort)GameNetworkEvents.EventType.Chat, true, (ref NetworkWriter writer) =>
        {
            writer.WriteString("message", _buf, formatted_length, 256, NetworkWriter.OverrunBehaviour.WarnAndTrunc);
        });
    }