/// <summary>
        /// Reads the <see cref="AllianceStreamEventMessage"/> from the specified <see cref="MessageReader"/>.
        /// </summary>
        /// <param name="reader">
        /// <see cref="MessageReader"/> that will be used to read the <see cref="AllianceStreamEventMessage"/>.
        /// </param>
        /// <exception cref="ArgumentNullException"><paramref name="reader"/> is null.</exception>
        public override void ReadMessage(MessageReader reader)
        {
            ThrowIfReaderNull(reader);

            var id    = reader.ReadInt32();
            var entry = StreamEntryFactory.CreateAllianceStreamEntry(id);

            entry?.ReadStreamEntry(reader);
        }
예제 #2
0
        public override object ReadJson(JsonReader Reader, Type ObjectType, object ExistingValue, JsonSerializer Serializer)
        {
            JObject Json = JObject.Load(Reader);

            if (JsonHelper.GetJsonNumber(Json, "type", out int Type))
            {
                StreamEntry Entry = StreamEntryFactory.CreateStreamEntryByType(Type);
                Entry.Load(Json);
                return(Entry);
            }

            return(null);
        }
        private static void FromMySqlDataReader(ClanSave save, DbDataReader reader)
        {
            save.ClanId = (long)reader["clan_id"];

            //save.DateCreated = (DateTime)reader["create_date"];
            //save.DateLastSave = (DateTime)reader["last_save_date"];

            save.Name             = (string)reader["name"];
            save.Description      = (string)reader["description"];
            save.ExpLevels        = (int)reader["exp_levels"];
            save.Badge            = (int)reader["badge"];
            save.InviteType       = (int)reader["invite_type"];
            save.TotalTrophies    = (int)reader["total_trophies"];
            save.RequiredTrophies = (int)reader["required_trophies"];
            save.WarsWon          = (int)reader["wars_won"];
            save.WarsLost         = (int)reader["wars_lost"];
            save.WarsTried        = (int)reader["wars_tried"];
            save.Location         = (int)reader["location"];
            save.PerkPoints       = (int)reader["perk_points"];
            save.WinStreak        = (int)reader["win_streak"];
            save.WarLogsPublic    = (bool)reader["war_logs_public"];

            var entries = (byte[])reader["entries"];
            var stream  = new MemoryStream(entries);

            using (var r = new MessageReader(stream))
            {
                var count = r.ReadInt32();
                var list  = new List <AllianceStreamEntry>(count);
                for (int i = 0; i < count; i++)
                {
                    var id    = r.ReadInt32();
                    var entry = StreamEntryFactory.CreateAllianceStreamEntry(id);

                    Debug.Assert(entry != null);

                    if (entry == null)
                    {
                        break;
                    }

                    entry.ReadStreamEntry(r);
                    list.Add(entry);
                }

                save.Entries = list;
            }
        }
예제 #4
0
        /// <summary>
        /// Reads the <see cref="AvatarStreamMessage"/> from the specified <see cref="MessageReader"/>.
        /// </summary>
        /// <param name="reader">
        /// <see cref="MessageReader"/> that will be used to read the <see cref="AvatarStreamMessage"/>.
        /// </param>
        /// <exception cref="ArgumentNullException"><paramref name="reader"/> is null.</exception>
        public override void ReadMessage(MessageReader reader)
        {
            ThrowIfReaderNull(reader);

            var count = reader.ReadInt32();

            Entries = new AvatarStreamEntry[count];
            for (int i = 0; i < count; i++)
            {
                var id    = reader.ReadInt32();
                var entry = StreamEntryFactory.CreateAvatarStreamEntry(id);
                if (entry == null)
                {
                    return;
                }

                entry.ReadStreamEntry(reader);
                Entries[i] = entry;
            }
        }
        protected sealed override void Load(LogicJSONObject jsonObject)
        {
            LogicJSONArray ownerIdArray = jsonObject.GetJSONArray(StreamDocument.JSON_ATTRIBUTE_OWNER_ID);

            this.OwnerId    = new LogicLong(ownerIdArray.GetJSONNumber(0).GetIntValue(), ownerIdArray.GetJSONNumber(1).GetIntValue());
            this.CreateTime = DateTime.Parse(jsonObject.GetJSONString(StreamDocument.JSON_ATTRIBUTE_CREATE_TIME).GetStringValue());
            this.Type       = (StreamType)jsonObject.GetJSONNumber(StreamDocument.JSON_ATTRIBUTE_TYPE).GetIntValue();

            switch (this.Type)
            {
            case StreamType.ALLIANCE:
            {
                StreamEntry entry = StreamEntryFactory.CreateStreamEntryByType((StreamEntryType)jsonObject.GetJSONNumber(StreamDocument.JSON_ATTRIBUTE_ENTRY_TYPE).GetIntValue());
                entry.Load(jsonObject.GetJSONObject(StreamDocument.JSON_ATTRIBUTE_ENTRY));
                entry.SetId(this.Id);
                this.Entry = entry;
                break;
            }

            case StreamType.AVATAR:
            {
                AvatarStreamEntry entry =
                    AvatarStreamEntryFactory.CreateStreamEntryByType((AvatarStreamEntryType)jsonObject.GetJSONNumber(StreamDocument.JSON_ATTRIBUTE_ENTRY_TYPE).GetIntValue());
                entry.Load(jsonObject.GetJSONObject(StreamDocument.JSON_ATTRIBUTE_ENTRY));
                entry.SetId(this.Id);
                this.Entry = entry;
                break;
            }

            case StreamType.REPLAY:
            {
                ReplayStreamEntry entry = new ReplayStreamEntry();
                entry.Load(jsonObject.GetJSONObject(StreamDocument.JSON_ATTRIBUTE_ENTRY));
                this.Entry = entry;
                break;
            }
            }
        }