Exemplo n.º 1
0
        public static void OpenMenu(Players.Player player, PlayerClickedData playerClickData)
        {
            if (ItemTypes.IndexLookup.TryGetIndex(SchematicTool.NAME, out var schematicItem) &&
                playerClickData.TypeSelected == schematicItem)
            {
                if (player.ActiveColony == null)
                {
                    PandaChat.Send(player, _localizationHelper, "ErrorOpening", ChatColor.red);
                    return;
                }

                if (!_awaitingClick.ContainsKey(player))
                {
                    SendMainMenu(player);
                }
                else
                {
                    var tuple = _awaitingClick[player];
                    _awaitingClick.Remove(player);

                    switch (tuple.Item1)
                    {
                    case SchematicClickType.Build:
                        Vector3Int location = playerClickData.GetVoxelHit().BlockHit.Add(0, 1, 0);
                        var        args     = new JSONNode();
                        args.SetAs("constructionType", GameLoader.NAMESPACE + ".SchematicBuilder");
                        args.SetAs(SchematicBuilderLoader.NAME + ".SchematicName", tuple.Item2);
                        args.SetAs(SchematicBuilderLoader.NAME + ".Rotation", tuple.Item3);

                        if (SchematicReader.TryGetSchematic(tuple.Item2, player.ActiveColony.ColonyID, location, out var schematic))
                        {
                            if (tuple.Item3 >= Schematic.Rotation.Right)
                            {
                                schematic.Rotate();
                            }

                            if (tuple.Item3 >= Schematic.Rotation.Back)
                            {
                                schematic.Rotate();
                            }

                            if (tuple.Item3 >= Schematic.Rotation.Left)
                            {
                                schematic.Rotate();
                            }

                            var maxSize = location.Add(schematic.XMax - 1, schematic.YMax - 1, schematic.ZMax - 1);
                            AreaJobTracker.CreateNewAreaJob("pipliz.constructionarea", args, player.ActiveColony, location, maxSize);
                            AreaJobTracker.SendData(player);
                        }

                        break;

                    case SchematicClickType.Archetect:

                        break;
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void SetCorner2(Vector3Int newPos, Players.Player player)
        {
            pos2    = newPos;
            corner1 = Vector3Int.Min(pos1, pos2);
            corner2 = Vector3Int.Max(pos1, pos2);

            AreaJobTracker.SendData(player);
        }
 // remove player from list
 public static bool Remove(Players.Player player)
 {
     if (playerList.Contains(player))
     {
         playerList.Remove(player);
         AreaJobTracker.SendData(player);
         return(true);
     }
     return(false);
 }
 // add player to list
 public static bool Add(Players.Player player)
 {
     if (playerList.Contains(player))
     {
         return(false);
     }
     playerList.Add(player);
     AreaJobTracker.SendData(player);
     return(true);
 }
        public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits)
        {
            if (!splits[0].Equals("/areashow"))
            {
                return(false);
            }
            if (!PermissionsManager.CheckAndWarnPermission(causedBy, AntiGrief.MOD_PREFIX + "areashow"))
            {
                return(true);
            }

            // if parameter action given toggle all areas shown
            Match  m      = Regex.Match(chattext, @"/areashow ?(?<action>.+)?");
            string action = m.Groups["action"].Value;

            if (action.Equals("add"))
            {
                if (AreaShowManager.Add(causedBy))
                {
                    Chat.Send(causedBy, "You now see area jobs of all players");
                }
                return(true);
            }
            else if (action.Equals("remove"))
            {
                if (AreaShowManager.Remove(causedBy))
                {
                    Chat.Send(causedBy, "You no longer see area jobs of all players");
                }
                return(true);
            }

            // without action parameter just trigger a data send
            AreaJobTracker.SendData(causedBy);
            return(true);
        }