Beispiel #1
0
        public void RemoveNode(VaultNode node)
        {
            VaultPlayerInfoNode info = new VaultPlayerInfoNode(node);
            if (fPlayerToInfo.ContainsKey(info.PlayerID))
                fPlayerToInfo.Remove(info.PlayerID);
            else
                return;

            for (int i = 0; i < fDataGridView.Rows.Count; i++) {
                if (Convert.ToUInt32(fDataGridView.Rows[i].Cells[1].Value) == info.PlayerID) {
                    fDataGridView.Rows.RemoveAt(i);
                    break;
                }
            }
        }
Beispiel #2
0
        public void AddPlayerInfo(VaultNode node)
        {
            VaultPlayerInfoNode info = new VaultPlayerInfoNode(node);
            if (fPlayerToInfo.ContainsKey(info.PlayerID)) return;

            Bitmap img = IGetImage(info);
            string age = (info.Online ? IGetAgeName(info) : String.Empty);
            fDataGridView.Rows.Add(new object[] { img, info.PlayerID, info.PlayerName, age });
            fPlayerToInfo.Add(info.PlayerID, info.BaseNode.ID);

            //Sort... If no default, use online status
            if (fDataGridView.SortedColumn != null)
                fDataGridView.Sort(fDataGridView.SortedColumn, (fDataGridView.SortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending));
            else
                fDataGridView.Sort(fOnline, ListSortDirection.Descending);
        }
Beispiel #3
0
        private string IGetAgeName(VaultPlayerInfoNode info)
        {
            if (kAgesToName.Contains(info.AgeInstanceName)) {
                VaultAgeInfoNode search = new VaultAgeInfoNode();
                search.InstanceName = info.AgeInstanceName;
                search.InstanceUUID = info.AgeInstanceUUID;

                //Do the search
                uint trans = fParent.AuthCli.FindVaultNode(search.BaseNode.ToArray());
                fParent.RegisterAuthCB(trans, new Action<uint[], VaultPlayerInfoNode>(IDelayedAgeName), new object[] { info });
            }

            if (info.AgeInstanceName == "AhnonayCathedral")
                return "Ahnonay Cathedral";
            else if (info.AgeInstanceName == "AvatarCustomization")
                return "Closet";
            else if (info.AgeInstanceName == "Bevin")
                return "Neighborhood";
            else if (info.AgeInstanceName == "city")
                return "Ae'gura";
            else if (info.AgeInstanceName == "Descent")
                return "Great Shaft";
            else if (info.AgeInstanceName == "EderDelin")
                return "Eder Delin";
            else if (info.AgeInstanceName == "EderTsogal")
                return "Eder Tsogal";
            else if (info.AgeInstanceName == "Ercana")
                return "Er'cana";
            else if (info.AgeInstanceName == "ErcanaCitySilo")
                return "Uran Silo";
            else if (info.AgeInstanceName == "GreatZero")
                return "Great Zero";
            else if (info.AgeInstanceName == "GuildPub-Cartographers")
                return "Cartographers' Pub";
            else if (info.AgeInstanceName == "GuildPub-Greeters")
                return "Greeters' Pub";
            else if (info.AgeInstanceName == "GuildPub-Maintainers")
                return "Maintainers' Pub";
            else if (info.AgeInstanceName == "GuildPub-Messengers")
                return "Messengers' Pub";
            else if (info.AgeInstanceName == "GuildPub-Writers")
                return "Writers' Pub";
            else if (info.AgeInstanceName == "Hood")
                return "Neighborhood";
            else if (info.AgeInstanceName == "Kveer")
                return "K'veer";
            else if (info.AgeInstanceName == "PelletBahroCave")
                return "Pellet Cave";
            else if (info.AgeInstanceName == "Personal")
                return "Relto";
            else if (info.AgeInstanceName == "philRelto")
                return "Phil's Relto";
            else if (info.AgeInstanceName == "spyroom")
                return "Sharper's Spy Room";
            else if (info.AgeInstanceName == String.Empty)
                return "*** Linking ***";

            return info.AgeInstanceName;
        }
Beispiel #4
0
 private Bitmap IGetImage(VaultPlayerInfoNode info)
 {
     if (info.Online) {
         Bitmap b = MUd.Properties.Resources.bullet_green;
         b.Tag = "online";
         return b;
     } else {
         Bitmap b = MUd.Properties.Resources.bullet_red;
         b.Tag = "offline";
         return b;
     }
 }
Beispiel #5
0
 private void IDelayedAgeName(uint[] matches, VaultPlayerInfoNode info)
 {
     if (matches.Length == 1) {
         uint trans = fParent.AuthCli.FetchVaultNode(matches[0]);
         fParent.RegisterAuthCB(trans, new Action<VaultNode, VaultPlayerInfoNode>(IDelayedAgeName), new object[] { info });
     } else
         fParent.LogWarn(String.Format("Got {0} AgeInfos!", matches.Length));
 }
Beispiel #6
0
        private void IDelayedAgeName(VaultNode node, VaultPlayerInfoNode info)
        {
            VaultAgeInfoNode age = new VaultAgeInfoNode(node);

            string name = String.Empty;
            if (age.Description == String.Empty)
                if (age.SequenceNumber == 0)
                    name = String.Format("{0} {1}", age.UserDefinedName, age.InstanceName);
                else
                    name = String.Format("{0} ({1}) {2}", age.UserDefinedName, age.SequenceNumber, age.InstanceName);
            else
                name = age.Description;

            //Find the player's row
            int idx = -1;
            foreach (DataGridViewRow r in fDataGridView.Rows) {
                if (Convert.ToUInt32(r.Cells[1].Value) == info.PlayerID) {
                    idx = fDataGridView.Rows.IndexOf(r);
                    break;
                }
            }

            //Actually update the entry
            fDataGridView.Rows[idx].Cells[3].Value = name;
        }
Beispiel #7
0
        public bool UpdateNode(VaultPlayerInfoNode info)
        {
            int idx = -1;
            foreach (DataGridViewRow r in fDataGridView.Rows) {
                if (Convert.ToUInt32(r.Cells[1].Value) == info.PlayerID) {
                    idx = fDataGridView.Rows.IndexOf(r);
                    break;
                }
            }

            if (idx == -1) return false;

            //Has the player logged in?
            bool retval = ((fDataGridView.Rows[idx].Cells[0].Value as Bitmap).Tag.ToString() == "offline" && info.Online);

            //Change values
            fDataGridView.Rows[idx].Cells[0].Value = IGetImage(info);
            fDataGridView.Rows[idx].Cells[3].Value = (info.Online ? IGetAgeName(info) : String.Empty);

            //Update and stuff
            fDataGridView.UpdateCellValue(0, idx);
            fDataGridView.UpdateCellValue(3, idx);

            //Sort... If no default, use online status
            if (fDataGridView.SortedColumn != null)
                fDataGridView.Sort(fDataGridView.SortedColumn, (fDataGridView.SortOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending));
            else
                fDataGridView.Sort(fOnline, ListSortDirection.Descending);

            return retval;
        }
Beispiel #8
0
 private void IUpdateNode(VaultNode node)
 {
     switch (node.NodeType) {
         case ENodeType.kNodeImage:
         case ENodeType.kNodeMarkerList:
         case ENodeType.kNodeTextNote:
             fKiMailCtrl.UpdateNode(node);
             break;
         case ENodeType.kNodePlayerInfo:
             VaultPlayerInfoNode info = new VaultPlayerInfoNode(node);
             bool alerted = IDoBuddyUpdate(info, false);
             IDoNeighborUpdate(info, alerted);
             fRecentsCtrl.UpdateNode(info);
             break;
     }
 }
Beispiel #9
0
        private bool IDoNeighborUpdate(VaultPlayerInfoNode node, bool alertShown)
        {
            if (fNeighborsCtrl.UpdateNode(node))
                if (Prefrences.NeighborAlert && !alertShown) {
                    fNotifyIcon.ShowBalloonTip(10, "Neighbor Login", String.Format("{0} is now exploring D'ni", node.PlayerName), ToolTipIcon.None);
                    return true;
                }

            return false;
        }
Beispiel #10
0
        private void IAddFolderToPanes(VaultNode node)
        {
            if (node.NodeType == ENodeType.kNodePlayerInfoList) {
                VaultPlayerInfoListNode list = new VaultPlayerInfoListNode(node);

                //Basic stuff
                if (list.FolderType == EStandardNode.kBuddyListFolder) fBaseNodes.Add(EStandardNode.kBuddyListFolder, node.ID);
                if (list.FolderType == EStandardNode.kIgnoreListFolder) fBaseNodes.Add(EStandardNode.kIgnoreListFolder, node.ID);
                if (list.FolderType == EStandardNode.kPeopleIKnowAboutFolder) fBaseNodes.Add(EStandardNode.kPeopleIKnowAboutFolder, node.ID);

                //If it's an AgeOwners folder, we have the Neighborhood :)
                if (list.FolderType == EStandardNode.kAgeOwnersFolder) fBaseNodes.Add(EStandardNode.kHoodMembersFolder, node.ID);
            }

            //Search for Neighborhood in the AgesIOwn
            if (node.NodeType == ENodeType.kNodeAgeInfoList) {
                VaultAgeInfoListNode ages = new VaultAgeInfoListNode(node);
                if (ages.FolderType == EStandardNode.kAgesIOwnFolder) {
                    FetchChildren(node.ID, new Action<VaultNode>(IAddFolderToPanes));
                }
            }

            //Grab the AgeInfo...
            if (node.NodeType == ENodeType.kNodeAgeLink)
                FetchChildren(node.ID, new Action<VaultNode>(IAddFolderToPanes));

            //See if this is the Neighborhood or Relto
            if (node.NodeType == ENodeType.kNodeAgeInfo) {
                VaultAgeInfoNode ageinfo = new VaultAgeInfoNode(node);
                if (ageinfo.Filename == "Neighborhood") {
                    //Yep! Grab children :)
                    FetchChildren(node.ID, new Action<VaultNode>(IAddFolderToPanes));
                }

                //HACK!!! Change back to PERSONAL asap!
                if (ageinfo.Filename == "Neighborhood") {
                    //Stash this node! Oh, and YES this is a strange label, but whatev.
                    fBaseNodes.Add(EStandardNode.kAgeInfoNode, ageinfo.ID);
                }
            }

            //Are these KI Mail Folders?
            if (node.NodeType == ENodeType.kNodeFolder) {
                VaultFolderNode folder = new VaultFolderNode(node);
                if (folder.FolderType == EStandardNode.kAgeJournalsFolder) fBaseNodes.Add(EStandardNode.kAgeJournalsFolder, node.ID);
                if (folder.FolderType == EStandardNode.kInboxFolder) fBaseNodes.Add(EStandardNode.kInboxFolder, node.ID);

            }

            //Is this my PlayerInfo?
            if (node.NodeType == ENodeType.kNodePlayerInfo) {
                VaultPlayerInfoNode info = new VaultPlayerInfoNode(node);
                if (info.PlayerID == fActivePlayer) fBaseNodes.Add(EStandardNode.kPlayerInfoNode, info.ID);
            }

            //FIXME: This is a strange hack...
            //Aparently, it causes the selected tab to update. I would say this is spammy though.
            ITabSelected(null, new TabControlEventArgs(fTabControl.SelectedTab, fTabControl.SelectedIndex, TabControlAction.Selected));
        }
Beispiel #11
0
        private void IAddBuddy(uint obj)
        {
            if (fBuddyCtrl.HasPlayer(obj)) {
                MessageBox.Show(this, String.Format("KI #{0} is already in the Buddies List", obj), "Already Added", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                LogWarn(String.Format("Attempted to add #{0} to buddies list, but he is already there!", obj));
                return;
            }

            VaultPlayerInfoNode search = new VaultPlayerInfoNode();
            search.PlayerID = obj;

            //Do the search
            uint trans = AuthCli.FindVaultNode(search.BaseNode.ToArray());
            RegisterAuthCB(trans, new Action<uint[], uint>(IAddBuddy), new object[] { obj });
        }