Use integer Clamp method.

This commit is contained in:
UnknownShadow200 2016-08-30 13:44:01 +10:00
parent 47b2452235
commit 0bf14b4ce5
14 changed files with 52 additions and 57 deletions

View File

@ -186,7 +186,7 @@ namespace MCGalaxy.Commands
Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF"));
break; break;
case "votecount": case "votecount":
Server.lava.voteCount = (byte)Utils.Clamp(decimal.Parse(args[3]), 2, 10); Server.lava.voteCount = (byte)Utils.Clamp(int.Parse(args[3]), 2, 10);
Player.Message(p, "Vote count: &b" + Server.lava.voteCount); Player.Message(p, "Vote count: &b" + Server.lava.voteCount);
break; break;
case "votetime": case "votetime":
@ -223,23 +223,23 @@ namespace MCGalaxy.Commands
try { try {
switch (args[2]) { switch (args[2]) {
case "fast": case "fast":
settings.fast = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); settings.fast = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
Player.Message(p, "Fast lava chance: &b" + settings.fast + "%"); Player.Message(p, "Fast lava chance: &b" + settings.fast + "%");
break; break;
case "killer": case "killer":
settings.killer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); settings.killer = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%"); Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%");
break; break;
case "destroy": case "destroy":
settings.destroy = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); settings.destroy = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%"); Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%");
break; break;
case "water": case "water":
settings.water = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); settings.water = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
Player.Message(p, "Water flood chance: &b" + settings.water + "%"); Player.Message(p, "Water flood chance: &b" + settings.water + "%");
break; break;
case "layer": case "layer":
settings.layer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); settings.layer = (byte)Utils.Clamp(int.Parse(args[3]), 0, 100);
Player.Message(p, "Layer flood chance: &b" + settings.layer + "%"); Player.Message(p, "Layer flood chance: &b" + settings.layer + "%");
break; break;
case "layerheight": case "layerheight":

View File

@ -71,7 +71,7 @@ namespace MCGalaxy.Commands {
foundOne = true; foundOne = true;
string user = inCache[i].name.Trim(); string user = inCache[i].name.Trim();
DateTime time = Server.StartTimeLocal.AddSeconds(inCache[i].flags >> 2); DateTime time = Server.StartTimeLocal.AddSeconds(inCache[i].flags >> 2);
byte block = (inCache[i].flags & 2) != 0 ? Block.custom_block : inCache[i].rawType; byte block = (inCache[i].flags & 2) != 0 ? Block.custom_block : inCache[i].rawBlock;
bool deleted = (inCache[i].flags & 1) != 0; bool deleted = (inCache[i].flags & 1) != 0;
Output(p, user, block, deleted, now - time); Output(p, user, block, deleted, now - time);
} }

View File

@ -175,13 +175,13 @@ namespace MCGalaxy.Gui {
lsLoadedMap = name; lsLoadedMap = name;
try { try {
LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(name); LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(name);
lsNudFastLava.Value = Utils.Clamp((decimal)settings.fast, 0, 100); lsNudFastLava.Value = Utils.Clamp(settings.fast, 0, 100);
lsNudKiller.Value = Utils.Clamp((decimal)settings.killer, 0, 100); lsNudKiller.Value = Utils.Clamp(settings.killer, 0, 100);
lsNudDestroy.Value = Utils.Clamp((decimal)settings.destroy, 0, 100); lsNudDestroy.Value = Utils.Clamp(settings.destroy, 0, 100);
lsNudWater.Value = Utils.Clamp((decimal)settings.water, 0, 100); lsNudWater.Value = Utils.Clamp(settings.water, 0, 100);
lsNudLayer.Value = Utils.Clamp((decimal)settings.layer, 0, 100); lsNudLayer.Value = Utils.Clamp(settings.layer, 0, 100);
lsNudLayerHeight.Value = Utils.Clamp((decimal)settings.layerHeight, 1, 1000); lsNudLayerHeight.Value = Utils.Clamp(settings.layerHeight, 1, 1000);
lsNudLayerCount.Value = Utils.Clamp((decimal)settings.layerCount, 1, 1000); lsNudLayerCount.Value = Utils.Clamp(settings.layerCount, 1, 1000);
lsNudLayerTime.Value = (decimal)Utils.Clamp(settings.layerInterval, 1, 1000); lsNudLayerTime.Value = (decimal)Utils.Clamp(settings.layerInterval, 1, 1000);
lsNudRoundTime.Value = (decimal)Utils.Clamp(settings.roundTime, 1, 1000); lsNudRoundTime.Value = (decimal)Utils.Clamp(settings.roundTime, 1, 1000);
lsNudFloodTime.Value = (decimal)Utils.Clamp(settings.floodTime, 1, 1000); lsNudFloodTime.Value = (decimal)Utils.Clamp(settings.floodTime, 1, 1000);

View File

@ -102,11 +102,11 @@ namespace MCGalaxy.Games {
void ProcessMapLine(string key, string value, ref MapSettings map) { void ProcessMapLine(string key, string value, ref MapSettings map) {
string[] sp; string[] sp;
switch (key.ToLower()) { switch (key.ToLower()) {
case "fast-chance": map.fast = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break; case "fast-chance": map.fast = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
case "killer-chance": map.killer = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break; case "killer-chance": map.killer = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
case "destroy-chance": map.destroy = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break; case "destroy-chance": map.destroy = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
case "water-chance": map.water = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break; case "water-chance": map.water = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
case "layer-chance": map.layer = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break; case "layer-chance": map.layer = (byte)Utils.Clamp(int.Parse(value), 0, 100); break;
case "layer-height": map.layerHeight = int.Parse(value); break; case "layer-height": map.layerHeight = int.Parse(value); break;
case "layer-count": map.layerCount = int.Parse(value); break; case "layer-count": map.layerCount = int.Parse(value); break;
case "layer-interval": map.layerInterval = double.Parse(value); break; case "layer-interval": map.layerInterval = double.Parse(value); break;

View File

@ -77,9 +77,9 @@ namespace MCGalaxy {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
ulong flags = lvl.blockqueue[i]; ulong flags = lvl.blockqueue[i];
int index = (int)(flags >> 32); int index = (int)(flags >> 32);
byte type = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags; byte block = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags;
byte extType = (flags & 0x100) != 0 ? (byte)flags : Block.air; byte extBlock = (flags & 0x100) != 0 ? (byte)flags : Block.air;
bulkSender.Add(index, type, extType); bulkSender.Add(index, block, extBlock);
} }
bulkSender.Send(true); bulkSender.Send(true);
lvl.blockqueue.RemoveRange(0, count); lvl.blockqueue.RemoveRange(0, count);

View File

@ -225,9 +225,9 @@ namespace MCGalaxy {
} }
public bool CheckAffectPermissions(Player p, ushort x, ushort y, ushort z, public bool CheckAffectPermissions(Player p, ushort x, ushort y, ushort z,
byte b, byte type, byte extType = 0) { byte b, byte block, byte extBlock = 0) {
if (!Block.AllowBreak(b) && !Block.canPlace(p, b) && !Block.BuildIn(b)) return false; if (!Block.AllowBreak(b) && !Block.canPlace(p, b) && !Block.BuildIn(b)) return false;
if (p.PlayingTntWars && !CheckTNTWarsChange(p, x, y, z, ref type)) return false; if (p.PlayingTntWars && !CheckTNTWarsChange(p, x, y, z, ref block)) return false;
bool inZone = false; bool inZone = false;
if (!CheckZonePerms(p, x, y, z, ref inZone)) return false; if (!CheckZonePerms(p, x, y, z, ref inZone)) return false;

View File

@ -455,17 +455,17 @@ namespace MCGalaxy {
public struct BlockPos { public struct BlockPos {
public string name; public string name;
public int flags, index; // bit 0 = is deleted, bit 1 = is ext, rest bits = time delta public int flags, index; // bit 0 = is deleted, bit 1 = is ext, rest bits = time delta
public byte rawType; public byte rawBlock;
public void SetData(byte type, byte extType, bool delete) { public void SetData(byte block, byte extBlock, bool delete) {
TimeSpan delta = DateTime.UtcNow.Subtract(Server.StartTime); TimeSpan delta = DateTime.UtcNow.Subtract(Server.StartTime);
flags = (int)delta.TotalSeconds << 2; flags = (int)delta.TotalSeconds << 2;
flags |= (byte)(delete ? 1 : 0); flags |= (byte)(delete ? 1 : 0);
if (type == Block.custom_block) { if (block == Block.custom_block) {
rawType = extType; flags |= 2; rawBlock = extBlock; flags |= 2;
} else { } else {
rawType = type; rawBlock = block;
} }
} }
} }

View File

@ -70,7 +70,7 @@ namespace MCGalaxy {
nameP.Value = bP.name; nameP.Value = bP.name;
timeP.Value = date; timeP.Value = date;
xP.Value = x; yP.Value = y; zP.Value = z; xP.Value = x; yP.Value = y; zP.Value = z;
tileP.Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawType; tileP.Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawBlock;
delP.Value = (bP.flags & 1) != 0; delP.Value = (bP.flags & 1) != 0;
} else { } else {
((NativeParameter)nameP).SetString(bP.name); ((NativeParameter)nameP).SetString(bP.name);
@ -78,7 +78,7 @@ namespace MCGalaxy {
((NativeParameter)xP).U16Value = x; ((NativeParameter)xP).U16Value = x;
((NativeParameter)yP).U16Value = y; ((NativeParameter)yP).U16Value = y;
((NativeParameter)zP).U16Value = z; ((NativeParameter)zP).U16Value = z;
((NativeParameter)tileP).U8Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawType; ((NativeParameter)tileP).U8Value = (bP.flags & 2) != 0 ? Block.custom_block : bP.rawBlock;
((NativeParameter)delP).BoolValue = (bP.flags & 1) != 0; ((NativeParameter)delP).BoolValue = (bP.flags & 1) != 0;
} }

View File

@ -86,7 +86,7 @@ namespace MCGalaxy {
Player.Message(p, "Reset {0} color for {1}%S to normal", envTypeName, p.level.name); Player.Message(p, "Reset {0} color for {1}%S to normal", envTypeName, p.level.name);
target = ""; target = "";
} else { } else {
if (!Utils.CheckHex(p, ref value)) return; if (!Utils.CheckHex(p, ref value)) return;
Player.Message(p, "Set {0} color for {1}%S to #{2}", envTypeName, p.level.name, value); Player.Message(p, "Set {0} color for {1}%S to #{2}", envTypeName, p.level.name, value);
target = value; target = value;
} }

View File

@ -73,25 +73,25 @@ namespace MCGalaxy.BlockPhysics {
C.data.Data++; C.data.Data++;
} }
static void FloodAir(Level lvl, int b, byte type) { static void FloodAir(Level lvl, int index, byte block) {
if (b == -1) return; if (index == -1) return;
byte block = Block.Convert(lvl.blocks[b]); byte curBlock = Block.Convert(lvl.blocks[index]);
if (block == Block.water || block == Block.lava) if (curBlock == Block.water || curBlock == Block.lava)
lvl.AddUpdate(b, type); lvl.AddUpdate(index, block);
} }
internal static void PhysAir(Level lvl, int b) { internal static void PhysAir(Level lvl, int index) {
if (b == -1) return; if (index == -1) return;
byte block = lvl.blocks[b]; byte block = lvl.blocks[index];
byte convBlock = Block.Convert(block); byte convBlock = Block.Convert(block);
if (convBlock == Block.water || convBlock == Block.lava || if (convBlock == Block.water || convBlock == Block.lava ||
(block >= Block.red && block <= Block.white)) { (block >= Block.red && block <= Block.white)) {
lvl.AddCheck(b); return; lvl.AddCheck(index); return;
} }
switch (block) { switch (block) {
//case Block.water: //case Block.water:
//case Block.lava: //case Block.lava:
case Block.shrub: case Block.shrub:
case Block.sand: case Block.sand:
case Block.gravel: case Block.gravel:
@ -104,7 +104,7 @@ namespace MCGalaxy.BlockPhysics {
case Block.deathwater: case Block.deathwater:
case Block.geyser: case Block.geyser:
case Block.magma:*/ case Block.magma:*/
lvl.AddCheck(b); lvl.AddCheck(index);
break; break;
default: default:
break; break;

View File

@ -22,7 +22,6 @@ namespace MCGalaxy {
public sealed partial class Player : IDisposable { public sealed partial class Player : IDisposable {
public NetworkStream Stream; public NetworkStream Stream;
public BinaryReader Reader;
static void Receive(IAsyncResult result) { static void Receive(IAsyncResult result) {
//Server.s.Log(result.AsyncState.ToString()); //Server.s.Log(result.AsyncState.ToString());
@ -636,12 +635,5 @@ namespace MCGalaxy {
} }
RemoveFromPending(); RemoveFromPending();
} }
public string ReadString(int count = 64) {
if ( Reader == null ) return null;
var chars = new byte[count];
Reader.Read(chars, 0, count);
return Encoding.UTF8.GetString(chars).TrimEnd().Replace("\0", string.Empty);
}
} }
} }

View File

@ -37,7 +37,7 @@ namespace MCGalaxy {
skinName = name; skinName = name;
int altsCount = 0; int altsCount = 0;
lock (pendingLock) { lock (pendingLock) {
DateTime now = DateTime.UtcNow; DateTime now = DateTime.UtcNow;
foreach (PendingItem item in pendingNames) { foreach (PendingItem item in pendingNames) {
if (item.Name == truename && (now - item.Connected).TotalSeconds <= 60) if (item.Name == truename && (now - item.Connected).TotalSeconds <= 60)

View File

@ -42,10 +42,10 @@ namespace MCGalaxy {
this.level = player.level; this.level = player.level;
} }
public bool Add(int index, byte type, byte extType) { public bool Add(int index, byte block, byte extBlock) {
indices[count] = index; indices[count] = index;
if (type == Block.custom_block) types[count] = extType; if (block == Block.custom_block) types[count] = extBlock;
else types[count] = Block.Convert(type); else types[count] = Block.Convert(block);
count++; count++;
return Send(false); return Send(false);
} }

View File

@ -68,6 +68,10 @@ namespace MCGalaxy {
for (int i = 0; i < bytes; i++) for (int i = 0; i < bytes; i++)
*srcByte = value; srcByte++; *srcByte = value; srcByte++;
} }
public static int Clamp(int value, int lo, int hi) {
return Math.Max(Math.Min(value, hi), lo);
}
public static decimal Clamp(decimal value, decimal lo, decimal hi) { public static decimal Clamp(decimal value, decimal lo, decimal hi) {
return Math.Max(Math.Min(value, hi), lo); return Math.Max(Math.Min(value, hi), lo);
@ -89,7 +93,6 @@ namespace MCGalaxy {
string itemName = nameGetter(item); string itemName = nameGetter(item);
if (itemName.Equals(name, comp)) { matches = 1; return item; } if (itemName.Equals(name, comp)) { matches = 1; return item; }
if (itemName.IndexOf(name, comp) < 0) continue; if (itemName.IndexOf(name, comp) < 0) continue;
Queue<Queue<Queue>> queue = new Queue<Queue<Queue>>();
match = item; matches++; match = item; matches++;
if (matches <= limit) if (matches <= limit)