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"));
break;
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);
break;
case "votetime":
@ -223,23 +223,23 @@ namespace MCGalaxy.Commands
try {
switch (args[2]) {
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 + "%");
break;
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 + "%");
break;
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 + "%");
break;
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 + "%");
break;
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 + "%");
break;
case "layerheight":

View File

@ -71,7 +71,7 @@ namespace MCGalaxy.Commands {
foundOne = true;
string user = inCache[i].name.Trim();
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;
Output(p, user, block, deleted, now - time);
}

View File

@ -175,13 +175,13 @@ namespace MCGalaxy.Gui {
lsLoadedMap = name;
try {
LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(name);
lsNudFastLava.Value = Utils.Clamp((decimal)settings.fast, 0, 100);
lsNudKiller.Value = Utils.Clamp((decimal)settings.killer, 0, 100);
lsNudDestroy.Value = Utils.Clamp((decimal)settings.destroy, 0, 100);
lsNudWater.Value = Utils.Clamp((decimal)settings.water, 0, 100);
lsNudLayer.Value = Utils.Clamp((decimal)settings.layer, 0, 100);
lsNudLayerHeight.Value = Utils.Clamp((decimal)settings.layerHeight, 1, 1000);
lsNudLayerCount.Value = Utils.Clamp((decimal)settings.layerCount, 1, 1000);
lsNudFastLava.Value = Utils.Clamp(settings.fast, 0, 100);
lsNudKiller.Value = Utils.Clamp(settings.killer, 0, 100);
lsNudDestroy.Value = Utils.Clamp(settings.destroy, 0, 100);
lsNudWater.Value = Utils.Clamp(settings.water, 0, 100);
lsNudLayer.Value = Utils.Clamp(settings.layer, 0, 100);
lsNudLayerHeight.Value = Utils.Clamp(settings.layerHeight, 1, 1000);
lsNudLayerCount.Value = Utils.Clamp(settings.layerCount, 1, 1000);
lsNudLayerTime.Value = (decimal)Utils.Clamp(settings.layerInterval, 1, 1000);
lsNudRoundTime.Value = (decimal)Utils.Clamp(settings.roundTime, 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) {
string[] sp;
switch (key.ToLower()) {
case "fast-chance": map.fast = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
case "killer-chance": map.killer = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
case "destroy-chance": map.destroy = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
case "water-chance": map.water = (byte)Utils.Clamp(decimal.Parse(value), 0, 100); break;
case "layer-chance": map.layer = (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(int.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(int.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-count": map.layerCount = int.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++) {
ulong flags = lvl.blockqueue[i];
int index = (int)(flags >> 32);
byte type = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags;
byte extType = (flags & 0x100) != 0 ? (byte)flags : Block.air;
bulkSender.Add(index, type, extType);
byte block = (flags & 0x100) != 0 ? Block.custom_block : (byte)flags;
byte extBlock = (flags & 0x100) != 0 ? (byte)flags : Block.air;
bulkSender.Add(index, block, extBlock);
}
bulkSender.Send(true);
lvl.blockqueue.RemoveRange(0, count);

View File

@ -225,9 +225,9 @@ namespace MCGalaxy {
}
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 (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;
if (!CheckZonePerms(p, x, y, z, ref inZone)) return false;

View File

@ -455,17 +455,17 @@ namespace MCGalaxy {
public struct BlockPos {
public string name;
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);
flags = (int)delta.TotalSeconds << 2;
flags |= (byte)(delete ? 1 : 0);
if (type == Block.custom_block) {
rawType = extType; flags |= 2;
if (block == Block.custom_block) {
rawBlock = extBlock; flags |= 2;
} else {
rawType = type;
rawBlock = block;
}
}
}

View File

@ -70,7 +70,7 @@ namespace MCGalaxy {
nameP.Value = bP.name;
timeP.Value = date;
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;
} else {
((NativeParameter)nameP).SetString(bP.name);
@ -78,7 +78,7 @@ namespace MCGalaxy {
((NativeParameter)xP).U16Value = x;
((NativeParameter)yP).U16Value = y;
((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;
}

View File

@ -86,7 +86,7 @@ namespace MCGalaxy {
Player.Message(p, "Reset {0} color for {1}%S to normal", envTypeName, p.level.name);
target = "";
} 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);
target = value;
}

View File

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

View File

@ -22,7 +22,6 @@ namespace MCGalaxy {
public sealed partial class Player : IDisposable {
public NetworkStream Stream;
public BinaryReader Reader;
static void Receive(IAsyncResult result) {
//Server.s.Log(result.AsyncState.ToString());
@ -636,12 +635,5 @@ namespace MCGalaxy {
}
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;
int altsCount = 0;
lock (pendingLock) {
lock (pendingLock) {
DateTime now = DateTime.UtcNow;
foreach (PendingItem item in pendingNames) {
if (item.Name == truename && (now - item.Connected).TotalSeconds <= 60)

View File

@ -42,10 +42,10 @@ namespace MCGalaxy {
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;
if (type == Block.custom_block) types[count] = extType;
else types[count] = Block.Convert(type);
if (block == Block.custom_block) types[count] = extBlock;
else types[count] = Block.Convert(block);
count++;
return Send(false);
}

View File

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