コード例 #1
0
        public void StructTest(ref Core.Util.Buffer b)
        {
            b.Reset();
            b.SetAlignment(4);

            b.WriteByte(0xAA);                // 0
            b.WriteUInt(0xBBCCDDEE);          // 4
            b.WriteUShort(0xFFAA);            // 8
            b.WriteByte(0xBB);                // 10
            b.WriteULong(0xCCDDEEFFAABBCCDD); // 12
        }
コード例 #2
0
ファイル: Friends.cs プロジェクト: number201724/Argon
        public void OnClanState(SteamFriends.ClanStateCallback cb)
        {
            foreach (var e in cb.Events)
            {
                Core.Util.Buffer b = new Core.Util.Buffer();
                b.SetAlignment(4);

                b.WriteULong(e.ID);
                b.WriteULong(cb.ClanID);
                // TODO: pad to 256 characters
                b.WriteString(e.Headline);
                b.WriteUInt(Platform.ToUnixTime(e.EventTime));
                b.WriteULong(e.GameID);

                Instance.PostCallback(Common.CallbackId(Common.CallbackType.ClientFriends, 2), b);
            }

            // TODO: do something with announcements

            var clan = ClanGroup.Active.FindOrCreate(cb.ClanID);

            var name_changed     = clan.Name != cb.ClanName;
            var avatar_changed   = clan.AvatarHash != cb.AvatarHash;
            var acc_info_changed = clan.AccountFlags != cb.AccountFlags;

            // Might be completely unnecessary
            if (name_changed || avatar_changed || acc_info_changed)
            {
                Core.Util.Buffer b = new Core.Util.Buffer();
                b.SetAlignment(4);

                b.WriteULong(cb.ClanID);
                b.WriteBool(name_changed);
                b.WriteBool(avatar_changed);
                b.WriteBool(acc_info_changed);
                Instance.PostCallback(Common.CallbackId(Common.CallbackType.ClientFriends, 19), b);
            }

            // Set all the new info that we have
            clan.Name         = cb.ClanName;
            clan.AccountFlags = cb.AccountFlags;
            clan.AvatarHash   = cb.AvatarHash;

            clan.ChatRoomPrivate = cb.ChatRoomPrivate;

            clan.MemberChattingCount = cb.MemberChattingCount;
            clan.MemberInGameCount   = cb.MemberInGameCount;
            clan.MemberOnlineCount   = cb.MemberOnlineCount;
            clan.MemberTotal         = cb.MemberTotalCount;

            Log.WriteLine("OnClanState for {0} <{1}>", clan.Id, clan.Name);
        }
コード例 #3
0
ファイル: Friends.cs プロジェクト: number201724/Argon
        public void OnPersonaState(SteamFriends.PersonaStateCallback cb)
        {
            if (cb.FriendID.IsClanAccount)
            {
                Log.WriteLine("Found clan {0} <{1}>", cb.FriendID, steam_friends.GetClanName(cb.FriendID));

                var c = ClanGroup.Active.FindOrCreate(cb.FriendID);

                c.Id         = cb.FriendID;
                c.AvatarHash = steam_friends.GetClanAvatar(cb.FriendID);
                c.Name       = steam_friends.GetClanName(cb.FriendID);
            }

            Core.Util.Buffer b = new Core.Util.Buffer();
            b.SetAlignment(4);

            b.WriteULong(cb.FriendID);
            b.WriteUInt((uint)cb.StatusFlags);

            Instance.PostCallback(Common.CallbackId(Common.CallbackType.SteamFriends, 4), b);
        }