Compute max place styles on initialization

This commit is contained in:
MarioE 2013-11-07 22:58:34 -05:00
parent fead716d6c
commit 8c3ae80184
3 changed files with 24 additions and 10 deletions

View file

@ -1755,6 +1755,10 @@ namespace TShockAPI
/// Tiles that can be broken without any tools.
/// </summary>
private static byte[] breakableTiles = new byte[] { 4, 13, 33, 49, 50, 127, 128, 162 };
/// <summary>
/// The maximum place styles for each tile.
/// </summary>
public static Dictionary<int, int> MaxPlaceStyles = new Dictionary<int, int>();
private static bool HandleTile(GetDataHandlerArgs args)
{
@ -1884,14 +1888,8 @@ namespace TShockAPI
}
else if (action == EditAction.PlaceTile || action == EditAction.PlaceWall)
{
if (action == EditAction.PlaceTile && TShock.Config.PreventInvalidPlaceStyle && ((editData == 4 && style > 11) ||
(editData == 13 && style > 4) || (editData == 15 && style > 25) || (editData == 21 && style > 22) ||
(editData == 82 && style > 5) || (editData == 91 && style > 108) || (editData == 105 && style > 49) ||
(editData == 135 && style > 6) || (editData == 139 && style > 27) || (editData == 144 && style > 2) ||
(editData == 149 && style > 2) || (editData == 137 && style > 4) || (editData == 79 && style > 12) ||
(editData == 10 && style > 25) || (editData == 14 && style > 22) || (editData == 18 && style > 17) ||
(editData == 19 && style > 16) || (editData == 34 && style > 6) || (editData == 42 && style > 10) ||
(editData == 96 && style > 1)))
if (action == EditAction.PlaceTile && TShock.Config.PreventInvalidPlaceStyle &&
MaxPlaceStyles.ContainsKey(editData) && style > MaxPlaceStyles[editData])
{
args.Player.SendTileSquare(tileX, tileY, 4);
return true;

View file

@ -593,13 +593,29 @@ namespace TShockAPI
AuthToken = 0;
}
Regions.ReloadAllRegions();
Lighting.lightMode = 2;
ComputeMaxStyles();
FixChestStacks();
StatTracker = new StatTracker();
}
private void ComputeMaxStyles()
{
var item = new Item();
for (int i = 0; i < Main.maxItemTypes; i++)
{
item.netDefaults(i);
if (GetDataHandlers.MaxPlaceStyles.ContainsKey(item.createTile))
{
if (item.placeStyle > GetDataHandlers.MaxPlaceStyles[item.createTile])
GetDataHandlers.MaxPlaceStyles[item.createTile] = item.placeStyle;
}
else
GetDataHandlers.MaxPlaceStyles.Add(item.createTile, item.placeStyle);
}
}
private void FixChestStacks()
{
if (Config.IgnoreChestStacksOnLoad)