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; } } } }
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); }