public static void Create(LogicLong ownerId, AvatarStreamEntry entry)
        {
            StreamDocument streamDocument = new StreamDocument(StreamManager.GetNextStreamId(), ownerId, entry);

            StreamManager.m_avatarStreams.Add(streamDocument.Id, streamDocument);
            StreamManager.Save(streamDocument);
        }
        public void ChangeMemberRole(AllianceMemberEntry allianceMemberEntry, LogicAvatarAllianceRole allianceRole, LogicLong eventAvatarId, string eventAvatarName)
        {
            if (allianceMemberEntry.GetAllianceRole() != allianceRole)
            {
                bool isPromoted = allianceMemberEntry.HasLowerRoleThan(allianceRole);

                allianceMemberEntry.SetAllianceRole(allianceRole);

                LogicChangeAllianceRoleCommand logicChangeAllianceRoleCommand = new LogicChangeAllianceRoleCommand();
                logicChangeAllianceRoleCommand.SetData(this.Id, allianceRole);
                ServerMessageManager.SendMessage(new GameAllowServerCommandMessage
                {
                    AccountId     = allianceMemberEntry.GetAvatarId(),
                    ServerCommand = logicChangeAllianceRoleCommand
                }, 9);

                AllianceEventStreamEntry allianceEventStreamEntry = new AllianceEventStreamEntry();
                AllianceStreamEntryUtil.SetSenderInfo(allianceEventStreamEntry, allianceMemberEntry);

                allianceEventStreamEntry.SetEventAvatarId(eventAvatarId);
                allianceEventStreamEntry.SetEventAvatarName(eventAvatarName);
                allianceEventStreamEntry.SetEventType(isPromoted ? AllianceEventStreamEntryType.PROMOTED : AllianceEventStreamEntryType.DEMOTED);

                StreamManager.Create(this.Id, allianceEventStreamEntry);

                this.AddStreamEntry(allianceEventStreamEntry);
            }
        }
        public static void Create(byte[] entry, out LogicLong id)
        {
            StreamDocument streamDocument = new StreamDocument(StreamManager.GetNextStreamId(), new ReplayStreamEntry(entry));

            StreamManager.m_replayStreams.Add(streamDocument.Id, streamDocument);
            StreamManager.Save(streamDocument);

            id = streamDocument.Id;
        }
        public void RemoveStreamEntry(LogicLong streamId)
        {
            int index = this.StreamEntryList.IndexOf(streamId);

            if (index != -1)
            {
                this.StreamEntryList.Remove(index);
                this.OnStreamEntryRemoved(streamId);

                StreamManager.RemoveAllianceStream(streamId);
            }
            else
            {
                Logging.Warning("Alliance.removeStreamEntry: unknown stream entry id: " + (long)streamId);
            }
        }
        public AllianceStreamMessage GetAllianceStreamMessage()
        {
            AllianceStreamMessage        allianceStreamMessage = new AllianceStreamMessage();
            LogicArrayList <StreamEntry> streamEntryList       = new LogicArrayList <StreamEntry>(this.StreamEntryList.Size());

            for (int i = 0; i < this.StreamEntryList.Size(); i++)
            {
                StreamEntry streamEntry = StreamManager.GetAllianceStream(this.StreamEntryList[i]);

                if (streamEntry != null)
                {
                    streamEntryList.Add(streamEntry);
                }
            }

            allianceStreamMessage.SetStreamEntries(streamEntryList);

            return(allianceStreamMessage);
        }