示例#1
0
        public static void SendMenuBelong(Players.Player player)
        {
            NetworkMenu menu = new NetworkMenu();

            menu.LocalStorage.SetAs("header", "Empire belong");
            menu.Width = 700;

            NetworkUI.Items.Table table = new NetworkUI.Items.Table(700, 180)
            {
                ExternalMarginHorizontal = 0f
            };
            {
                var headerRow = new NetworkUI.Items.HorizontalRow(new List <(IItem, int)>()
                {
                    (new NetworkUI.Items.Label("Player"), 250),
                    (new NetworkUI.Items.Label("Empire"), 250),
                    (new NetworkUI.Items.Label("Rank"), 125)
                });
                var headerBG = new NetworkUI.Items.BackgroundColor(headerRow, height: -1, color: NetworkUI.Items.Table.HEADER_COLOR);
                table.Header = headerBG;
            }
            table.Rows = new List <IItem>();

            for (int i = 0; i < Players.CountConnected; i++)
            {
                Players.Player plr = Players.GetConnectedByIndex(i);

                List <(IItem, int)> emp = new List <(IItem, int)>
                {
                    (new NetworkUI.Items.Label(plr.Name), 250)
                };

                Empire empire = Empire.GetEmpire(plr);

                if (empire != null)
                {
                    emp.Add((new NetworkUI.Items.Label(empire.Name), 250));
                    emp.Add((new NetworkUI.Items.Label(empire.GetRank(plr).ToString()), 250));
                }
                else
                {
                    emp.Add((new NetworkUI.Items.Label("-"), 250));
                    emp.Add((new NetworkUI.Items.Label("-"), 250));
                }

                table.Rows.Add(new NetworkUI.Items.HorizontalRow(emp));
            }

            menu.Items.Add(table);

            NetworkMenuManager.SendServerPopup(player, menu);
        }
示例#2
0
        public static void SendMenuManage(Players.Player player)
        {
            NetworkMenu menu = new NetworkMenu();

            menu.LocalStorage.SetAs("header", "Empires");
            menu.Width  = 550;
            menu.Height = 600;

            NetworkUI.Items.Table table = new NetworkUI.Items.Table(550, 180)
            {
                ExternalMarginHorizontal = 0f
            };
            {
                var headerRow = new NetworkUI.Items.HorizontalRow(new List <(IItem, int)>()
                {
                    (new NetworkUI.Items.Label("Empire"), 250),
                    (new NetworkUI.Items.Label("Action"), 250),
                });
                var headerBG = new NetworkUI.Items.BackgroundColor(headerRow, height: -1, color: NetworkUI.Items.Table.HEADER_COLOR);
                table.Header = headerBG;
            }
            table.Rows = new List <IItem>();

            var orderedEmpire = from empire in Empire.empires orderby empire.GetPlayers().Count() descending select empire;

            foreach (Empire empire in orderedEmpire)
            {
                List <(IItem, int)> emp = new List <(IItem, int)>
                {
                    (new NetworkUI.Items.Label(empire.Name), 250),

                    (new NetworkUI.Items.ButtonCallback("Imperium_ManageAsEmperor", new LabelData("Manage as Emperor", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), onClickActions: NetworkUI.Items.ButtonCallback.EOnClickActions.ClosePopup, ButtonPayload: new JObject()
                    {
                        { "empire", empire.Name }
                    }), 250)
                };

                table.Rows.Add(new NetworkUI.Items.HorizontalRow(emp));
            }

            menu.Items.Add(table);

            NetworkMenuManager.SendServerPopup(player, menu);
        }
示例#3
0
        public static void SendMenuEmpireRequest(Players.Player player)
        {
            Empire empire = Empire.GetEmpire(player);

            if (null == empire)
            {
                Chatting.Chat.Send(player, "<color=orange>You do not belong to any empire.</color>");
                return;
            }

            if (!empire.CanPermission(player.ID, Permissions.Invite))
            {
                return;
            }

            NetworkMenu menu = new NetworkMenu
            {
                Width = 550
            };

            menu.LocalStorage.SetAs("header", "Join Request");

            NetworkUI.Items.Table table = new NetworkUI.Items.Table(550, 180)
            {
                ExternalMarginHorizontal = 0f
            };
            {
                var headerRow = new NetworkUI.Items.HorizontalRow(new List <(IItem, int)>()
                {
                    (new NetworkUI.Items.Label("Empire"), 250),
                    (new NetworkUI.Items.Label("Action"), 125),
                    (new NetworkUI.Items.EmptySpace(), 125)
                });
                var headerBG = new NetworkUI.Items.BackgroundColor(headerRow, height: -1, color: NetworkUI.Items.Table.HEADER_COLOR);
                table.Header = headerBG;
            }
            table.Rows = new List <IItem>();

            foreach (NetworkID nID in empire.joinRequest)
            {
                List <(IItem, int)> requests = new List <(IItem, int)>();

                Players.Player plr = Players.GetPlayer(nID);

                if (null != Empire.GetEmpire(plr))
                {
                    empire.joinRequest.Remove(nID);
                    continue;
                }

                requests.Add((new NetworkUI.Items.Label(plr.Name), 250));
                if (empire.GetPlayers().Count < maxMembers)
                {
                    requests.Add((new NetworkUI.Items.ButtonCallback("Imperium_Request", new LabelData("Accept", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
                    {
                        { "accept", true }, { "player", plr.ID.ToString() }
                    }), 125));
                }
                else
                {
                    requests.Add((new NetworkUI.Items.ButtonCallback("Imperium_Request", new LabelData("Accept", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), isInteractive: false), 125));
                }
                requests.Add((new NetworkUI.Items.ButtonCallback("Imperium_Request", new LabelData("Reject", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
                {
                    { "accept", false }, { "player", plr.ID.ToString() }
                }), 125));

                table.Rows.Add(new NetworkUI.Items.HorizontalRow(requests));
            }

            menu.Items.Add(table);

            NetworkMenuManager.SendServerPopup(player, menu);
        }
示例#4
0
        public static void SendMenuEmpire(Players.Player player)
        {
            Empire empire = Empire.GetEmpire(player);

            if (null == empire)
            {
                Chatting.Chat.Send(player, "<color=orange>You do not belong to any empire.</color>");
                return;
            }

            NetworkMenu menu = new NetworkMenu
            {
                Width  = 700,
                Height = 600
            };

            menu.LocalStorage.SetAs("header", empire.Name);


            /* K: ANNOUNCEMENT SYSTEM
             * if (empire.CanPermission(player, Permissions.Announcement))
             *  if (empire.joinRequest.Count > 0)
             *  {
             *      NetworkUI.Items.ButtonCallback b_announcement = new NetworkUI.Items.ButtonCallback("Empire_SetAnnouncement_NOTHING", new LabelData("Set Announcement", UnityEngine.Color.green, UnityEngine.TextAnchor.MiddleCenter));
             *      b_announcement.Enabled = false;
             *      menu.Items.Add(b_announcement);
             *  }
             */

            menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_HELP", new LabelData("HELP", UnityEngine.Color.yellow, UnityEngine.TextAnchor.MiddleCenter)));

            if (empire.CanPermission(player.ID, Permissions.Invite))
            {
                if (empire.joinRequest.Count > 0)
                {
                    menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_ApplyManage", new LabelData("Manage applications", UnityEngine.Color.green, UnityEngine.TextAnchor.MiddleCenter)));
                }
            }

            if (empire.GetRank(player) == Rank.Emperor)
            {
                menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_BackPermission", new LabelData("Set Permissions", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter)));
                menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_SettingsMenu", new LabelData("Settings", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter)));
            }


            NetworkUI.Items.Table table = new NetworkUI.Items.Table(700, 800)
            {
                ExternalMarginHorizontal = 0f
            };
            {
                NetworkUI.Items.HorizontalRow headerRow = new NetworkUI.Items.HorizontalRow
                {
                    Items = new List <(IItem, int)>
                    {
                        (new NetworkUI.Items.Label("Name"), 250),
                        (new NetworkUI.Items.Label("Rank"), 125)
                    }
                };

                if (ColonyCommands.ColonyCommandsMod.ColonyCommands)
                {
                    headerRow.Items.Add((new NetworkUI.Items.Label("Last seen"), 125));
                }

                headerRow.Items.Add((new NetworkUI.Items.EmptySpace(), 125));

                var headerBG = new NetworkUI.Items.BackgroundColor(headerRow, height: -1, color: NetworkUI.Items.Table.HEADER_COLOR);
                table.Header = headerBG;
            }
            table.Rows = new List <IItem>();

            foreach (Players.Player plr in empire.GetPlayersOrderedByRank())
            {
                List <(IItem, int)> members = new List <(IItem, int)>
                {
                    (new NetworkUI.Items.Label(plr.Name), 250),
                    (new NetworkUI.Items.Label(empire.GetRank(plr).ToString()), 125)
                };

                if (ColonyCommands.ColonyCommandsMod.ColonyCommands)
                {
                    var m = ColonyCommands.ColonyCommandsMod.GetMethodFromColonyCommandsMod("ActivityTracker", "GetLastSeen");

                    if (m != null)
                    {
                        string lastseen = (string)m.Invoke(null, new object[] { plr.ID.ToStringReadable() });

                        if (!lastseen.Equals("never"))
                        {
                            lastseen = lastseen.Substring(0, lastseen.IndexOf(" ")).Trim();
                        }

                        members.Add((new NetworkUI.Items.Label(lastseen), 125));
                    }
                    else
                    {
                        members.Add((new NetworkUI.Items.EmptySpace(), 125));
                    }
                }

                if ((empire.CanPermission(player.ID, Permissions.Ranks) || empire.CanPermission(player.ID, Permissions.Kick)) && (empire.GetRank(player) < empire.GetRank(plr) || empire.GetRank(player) == Rank.Emperor) && !player.ID.Equals(plr.ID))
                {
                    members.Add((new NetworkUI.Items.ButtonCallback("Imperium_Manage", new LabelData("Manage", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
                    {
                        { "player", plr.ID.ToString() }
                    }), 125));
                }
                else
                {
                    members.Add((new NetworkUI.Items.EmptySpace(), 125));
                }

                table.Rows.Add(new NetworkUI.Items.HorizontalRow(members));
            }
            table.Height = table.Rows.Count * 14 + 24; //Each row ~14 pixels + 24 for header & distance

            menu.Items.Add(table);

            NetworkMenuManager.SendServerPopup(player, menu);
        }
示例#5
0
        public static void SendMenuEmpireList(Players.Player player)
        {
            bool belongEmpire = null != Empire.GetEmpire(player);

            NetworkMenu menu = new NetworkMenu();

            menu.LocalStorage.SetAs("header", "Empires");
            menu.Width  = 550;
            menu.Height = 600;

            if (!belongEmpire)
            {
                menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_NewEmpire", new LabelData("Found a new empire", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter)));
            }

            NetworkUI.Items.Table table = new NetworkUI.Items.Table(550, 180)
            {
                ExternalMarginHorizontal = 0f
            };
            {
                var headerRow = new NetworkUI.Items.HorizontalRow(new List <(IItem, int)>()
                {
                    (new NetworkUI.Items.Label("Empire"), 250),
                    (new NetworkUI.Items.Label("Action"), 150),
                    (new NetworkUI.Items.Label("Members"), 100)
                });
                var headerBG = new NetworkUI.Items.BackgroundColor(headerRow, height: -1, color: NetworkUI.Items.Table.HEADER_COLOR);
                table.Header = headerBG;
            }
            table.Rows = new List <IItem>();

            var orderedEmpire = from empire in Empire.empires orderby empire.GetPlayers().Count() descending select empire;

            foreach (Empire empire in orderedEmpire)
            {
                List <(IItem, int)> emp = new List <(IItem, int)>
                {
                    (new NetworkUI.Items.Label(empire.Name), 250)
                };

                if (!belongEmpire && !empire.joinRequest.Contains(player.ID) && empire.GetPlayers().Count <= maxMembers)
                {
                    emp.Add((new NetworkUI.Items.ButtonCallback("Imperium_Apply", new LabelData("Apply", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
                    {
                        { "empire", empire.Name }
                    }), 150));
                }
                else
                {
                    emp.Add((new NetworkUI.Items.ButtonCallback("Imperium_Apply", new LabelData("Apply", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), isInteractive: false), 150));
                }

                emp.Add((new NetworkUI.Items.Label(empire.GetPlayers().Count.ToString() + "/" + maxMembers), 100));

                table.Rows.Add(new NetworkUI.Items.HorizontalRow(emp));
            }

            menu.Items.Add(table);

            NetworkMenuManager.SendServerPopup(player, menu);
        }