Пример #1
0
        public unsafe void ReadFrom(ref byte *Buffer)
        {
            ushort len = *((ushort *)Buffer);

            Buffer += TypeSizes.SHORT;

            guilds = new BaseList <GuildEntry>(len);
            for (ushort i = 0; i < len; i++)
            {
                guilds.Add(new GuildEntry(ref Buffer));
            }

            len     = *((ushort *)Buffer);
            Buffer += TypeSizes.SHORT;

            youDeclaredAllyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                youDeclaredAllyList.Add(new ObjectID(ref Buffer));
            }


            len     = *((ushort *)Buffer);
            Buffer += TypeSizes.SHORT;

            youDeclaredEnemyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                youDeclaredEnemyList.Add(new ObjectID(ref Buffer));
            }


            len     = *((ushort *)Buffer);
            Buffer += TypeSizes.SHORT;

            declaredYouAllyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                declaredYouAllyList.Add(new ObjectID(ref Buffer));
            }


            len     = *((ushort *)Buffer);
            Buffer += TypeSizes.SHORT;

            declaredYouEnemyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                declaredYouEnemyList.Add(new ObjectID(ref Buffer));
            }
        }
Пример #2
0
        public void UpdateFromModel(DiplomacyInfo Model, bool RaiseChangedEvent)
        {
            if (RaiseChangedEvent)
            {
                // update states first to look them up in guilds
                YouDeclaredAllyList.Clear();
                foreach (ObjectID obj in Model.YouDeclaredAllyList)
                {
                    YouDeclaredAllyList.Add(obj);
                }

                YouDeclaredEnemyList.Clear();
                foreach (ObjectID obj in Model.YouDeclaredEnemyList)
                {
                    YouDeclaredEnemyList.Add(obj);
                }

                DeclaredYouAllyList.Clear();
                foreach (ObjectID obj in Model.DeclaredYouAllyList)
                {
                    DeclaredYouAllyList.Add(obj);
                }

                DeclaredYouEnemyList.Clear();
                foreach (ObjectID obj in Model.DeclaredYouEnemyList)
                {
                    DeclaredYouEnemyList.Add(obj);
                }

                // then guilds
                Guilds.Clear();
                foreach (GuildEntry obj in Model.Guilds)
                {
                    Guilds.Add(obj);
                }
            }
            else
            {
                // update states first to look them up in guilds
                youDeclaredAllyList.Clear();
                foreach (ObjectID obj in Model.YouDeclaredAllyList)
                {
                    youDeclaredAllyList.Add(obj);
                }

                youDeclaredEnemyList.Clear();
                foreach (ObjectID obj in Model.YouDeclaredEnemyList)
                {
                    youDeclaredEnemyList.Add(obj);
                }

                declaredYouAllyList.Clear();
                foreach (ObjectID obj in Model.DeclaredYouAllyList)
                {
                    declaredYouAllyList.Add(obj);
                }

                declaredYouEnemyList.Clear();
                foreach (ObjectID obj in Model.DeclaredYouEnemyList)
                {
                    declaredYouEnemyList.Add(obj);
                }

                // then guilds
                guilds.Clear();
                foreach (GuildEntry obj in Model.Guilds)
                {
                    guilds.Add(obj);
                }
            }
        }
Пример #3
0
        public int ReadFrom(byte[] Buffer, int StartIndex = 0)
        {
            int cursor = StartIndex;

            ushort len = BitConverter.ToUInt16(Buffer, cursor);                 // GuildsLEN  (2 bytes)

            cursor += TypeSizes.SHORT;

            guilds = new BaseList <GuildEntry>(len);
            for (ushort i = 0; i < len; i++)
            {
                GuildEntry obj = new GuildEntry(Buffer, cursor);                // GuildEntry (n bytes)
                guilds.Add(obj);
                cursor += obj.ByteLength;
            }

            len     = BitConverter.ToUInt16(Buffer, cursor);                    // YouDeclAllyLEN  (2 bytes)
            cursor += TypeSizes.SHORT;

            youDeclaredAllyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                ObjectID obj = new ObjectID(Buffer, cursor);                    // ObjectID (4/8 bytes)
                youDeclaredAllyList.Add(obj);
                cursor += obj.ByteLength;
            }

            len     = BitConverter.ToUInt16(Buffer, cursor);                    // YouDeclEnemyLEN  (2 bytes)
            cursor += TypeSizes.SHORT;

            youDeclaredEnemyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                ObjectID obj = new ObjectID(Buffer, cursor);                    // ObjectID (4/8 bytes)
                youDeclaredEnemyList.Add(obj);
                cursor += obj.ByteLength;
            }

            len     = BitConverter.ToUInt16(Buffer, cursor);                    // DeclYouAllyLEN  (2 bytes)
            cursor += TypeSizes.SHORT;

            declaredYouAllyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                ObjectID obj = new ObjectID(Buffer, cursor);                    // ObjectID (4/8 bytes)
                declaredYouAllyList.Add(obj);
                cursor += obj.ByteLength;
            }

            len     = BitConverter.ToUInt16(Buffer, cursor);                    // DeclYouEnemyLEN  (2 bytes)
            cursor += TypeSizes.SHORT;

            declaredYouEnemyList = new ObjectIDList <ObjectID>(len);
            for (ushort i = 0; i < len; i++)
            {
                ObjectID obj = new ObjectID(Buffer, cursor);                    // ObjectID (4/8 bytes)
                declaredYouEnemyList.Add(obj);
                cursor += obj.ByteLength;
            }

            return(ByteLength);
        }