Esempio n. 1
0
        public static void SendMenuPermissionsManagement(Players.Player player, int rank)
        {
            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.GetRank(player) != Rank.Emperor)
            {
                Chatting.Chat.Send(player, "<color=orange>Only the emperor can change the permissions.</color>");
                return;
            }

            NetworkMenu menu = new NetworkMenu();

            menu.LocalStorage.SetAs("header", ((Rank)rank).ToString());

            for (int i = (int)Permissions.Invite; i < (int)Permissions.Disband; i *= 2)
            {
                menu.Items.Add(new NetworkUI.Items.Toggle(((Permissions)i).ToString(), ((Permissions)i).ToString()));
                menu.LocalStorage.SetAs(((Permissions)i).ToString(), empire.CanPermission((Rank)rank, (Permissions)i));
            }

            menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_SetPermission", new LabelData("Save", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
            {
                { "rank", rank }
            }));
            menu.Items.Add(new NetworkUI.Items.ButtonCallback("Imperium_BackPermission", new LabelData("Back", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter)));

            NetworkMenuManager.SendServerPopup(player, menu);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        public static void SendMenuEmpireManage(Players.Player player, Players.Player player2)
        {
            Empire empire = Empire.GetEmpire(player);

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

            Rank p1_rank = empire.GetRank(player);
            Rank p2_rank = empire.GetRank(player2);

            NetworkMenu menu = new NetworkMenu
            {
                Width = 400
            };

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

            menu.Items.Add(new NetworkUI.Items.Label("Name: " + player2.Name));
            string rank = "Rank:";

            for (Rank i = Rank.Emperor; i < Rank.None; i++)
            {
                if (i == p2_rank)
                {
                    rank = rank + " <color=green>" + i.ToString() + "</color>";
                }
                else
                {
                    rank = rank + " " + i.ToString();
                }
            }

            menu.Items.Add(new NetworkUI.Items.Label(rank));
            menu.Items.Add(new NetworkUI.Items.EmptySpace());
            menu.Items.Add(new NetworkUI.Items.Line(UnityEngine.Color.white, 25, 4, 2, 10));

            NetworkUI.Items.ButtonCallback b_Promote, b_Demote, b_Kick;

            b_Promote = new NetworkUI.Items.ButtonCallback("Imperium_Promote", new LabelData("Promote", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
            {
                { "player", player2.ID.ToString() }
            });
            b_Demote = new NetworkUI.Items.ButtonCallback("Imperium_Demote", new LabelData("Demote", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
            {
                { "player", player2.ID.ToString() }
            });
            b_Kick = new NetworkUI.Items.ButtonCallback("Imperium_Kick", new LabelData("Kick", UnityEngine.Color.white, UnityEngine.TextAnchor.MiddleCenter), ButtonPayload: new JObject()
            {
                { "player", player2.ID.ToString() }
            });

            //You can only Kick people with LOWER rank than you
            if (!empire.CanPermission(p1_rank, Permissions.Kick) || p1_rank >= p2_rank)
            {
                b_Kick.Enabled = false;
            }

            //You can DEMOTE anyone with LOWER rank than you. Exception: Emperor can demote emperors
            if (((!empire.CanPermission(p1_rank, Permissions.Ranks) || p1_rank >= p2_rank) && (p1_rank != Rank.Emperor)) || p2_rank == Rank.Lord)
            {
                b_Demote.Enabled = false;
            }

            //You can PROMOTE anyone with LOWER rank than you BUT you cannot promote to your rank
            if (!empire.CanPermission(p1_rank, Permissions.Ranks) || (p2_rank == Rank.Emperor) || (p1_rank != Rank.Emperor && p1_rank >= p2_rank - 1))
            {
                b_Promote.Enabled = false;
            }

            menu.Items.Add(b_Promote);
            menu.Items.Add(b_Demote);
            menu.Items.Add(b_Kick);

            NetworkMenuManager.SendServerPopup(player, menu);
        }
Esempio n. 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);
        }