Exemplo n.º 1
0
 public void SetUpdateValue(UpdateFields idx, ulong data, UpdateMask mask)
 {
     if (idx >= UpdateFields.PLAYER_END - 1)
     {
         return;
     }
     CheckUpdateSize();
     updateValues[(ushort)idx]     = (uint)data;
     updateValues[(ushort)idx + 1] = (uint)(data >> 32);
     mask.Set((ushort)idx, true);
     mask.Set((ushort)(idx + 1), true);
 }
Exemplo n.º 2
0
        public byte[] BuildUpdate(UpdateMask mask, UpdateType type, bool bControl)
        {
            ByteArrayBuilder pack = new ByteArrayBuilder(false);

            pack.Add((byte)type);
            pack.Add(GUID);

            if (type != UpdateType.Value)           // buildMoveType
            {
                pack.Add((byte)ObjectType);
                BuildMovementUpdate(pack);
            }

            if (type == UpdateType.All)
            {
                if (bControl)
                {
                    pack.Add((uint)1);
                }
                else
                {
                    pack.Add((uint)0);
                }

                pack.Add((uint)1);
                pack.Add((uint)0);                   // timeid
                pack.Add((uint)0);                   // victim
                pack.Add((uint)0);
            }

            if (type != UpdateType.Move)           // have update value
            {
                mask.BuildUpdate(pack);
                for (ushort idx = 0; idx < mask.Length; idx++)
                {
                    if (mask.Set(idx, false))
                    {
                        if (idx >= updateValues.Count)
                        {
                            pack.Add((uint)0);
                        }
                        else if (updateValues[idx] is uint)
                        {
                            pack.Add((uint)updateValues[idx]);
                        }
                        else
                        {
                            pack.Add((float)updateValues[idx]);
                        }
                    }
                }
            }

            return(pack);
        }
Exemplo n.º 3
0
        public void SetUpdateValueFloat(UpdateFields idx, float data, UpdateMask mask)
        {
            if (idx >= UpdateFields.PLAYER_END)
            {
                return;
            }
            CheckUpdateSize();
            ushort i = (ushort)idx;

            if (updateValues.Count > i)
            {
                updateValues[(ushort)idx] = data;
                mask.Set((ushort)idx, true);
            }
        }
Exemplo n.º 4
0
        public void SetUpdateValue(UpdateFields idx, uint data, UpdateMask mask)
        {
            if (idx == UpdateFields.OBJECT_FIELD_GUID || idx >= UpdateFields.PLAYER_END)
            {
                return;
            }

            CheckUpdateSize();
            ushort i = (ushort)idx;

            if (updateValues.Count > i)
            {
                updateValues[(ushort)idx] = data;
                mask.Set((ushort)idx, true);
            }
        }