private void First() { var connector = Tile(0); connector.South = GlueFactory.IncrementStopper(binaryValue, signal); var middleZ0 = Tile(1); connector.North = Bind(connector, middleZ0); middleZ0.South = connector.North; var middleZ1 = Tile(2); middleZ0.Up = Bind(middleZ0, middleZ1); middleZ1.Down = middleZ0.Up; var rightZ1 = Tile(3); middleZ1.East = Bind(middleZ1, rightZ1); rightZ1.West = middleZ1.East; var rightZ0 = Tile(4); rightZ1.Down = Bind(rightZ1, rightZ0); rightZ0.Up = rightZ1.Down; rightZ0.North = GlueFactory.Copier(binaryValue, signal); tiles.AddRange(new [] { connector, middleZ0, middleZ1, rightZ0, rightZ1 }); }
public Copier(string binaryValue, string signal) { this.binaryValue = binaryValue; this.signal = signal; tiles = new List <Tile>(); startGlue = GlueFactory.LeftHook(); }
private void SetUp() { var previous = Guid.NewGuid(); var results = new List <Tile>(); for (var i = 0; i < binaryValue.Length; i++) { var bit = binaryValue[i] == '0' ? (AbstractBit) new ZeroBit(binaryValue, i, Modes.Copy, signal) : new OneBit(binaryValue, i, Modes.Copy, signal); if (i == 0) { bit.SouthGlue = GlueFactory.Copier(binaryValue, signal); } else { bit.SouthGlue = new Glue(previous.ToString()); } if (i + 1 == binaryValue.Length) { bit.NorthGlue = startGlue; } else { previous = Guid.NewGuid(); bit.NorthGlue = new Glue(previous.ToString()); } results.AddRange(bit.Tiles()); } tiles.AddRange(results); }
private CSharpToJavascriptConverter GetCSharpToJavascriptConverterForPerformance() { var cacher = new SessionCacher(); var factory = new GlueFactory(null, cacher, null, _ObjectChangesListener); return(new CSharpToJavascriptConverter(cacher, factory, _Logger)); }
/// <summary> /// Instanciate a new CJsonConverter /// </summary> public CJsonConverter() { var cache = new SessionCacher(); var factory = new GlueFactory(null, cache, null, null); _Converter = new CSharpToGlueMapper(cache, factory, new NullLogger()); }
public RightHook(string binaryStringValue, int height, bool carry) { this.height = height; this.binaryStringValue = binaryStringValue; signal = carry ? Signals.Carry : Signals.NoCarry; NorthGlue = GlueFactory.Writer(binaryStringValue, signal); SouthGlue = GlueFactory.RightHook(binaryStringValue, signal); }
public Writer(string binaryValue, string signal, int stoppingValue) { this.stoppingValue = stoppingValue; this.binaryValue = binaryValue; this.signal = signal; tiles = new List <Tile>(); startGlue = GlueFactory.Writer(binaryValue, signal); }
public LeftHook(string binaryStringValue, int height) { this.height = height * 4; this.binaryStringValue = binaryStringValue; signal = Signals.Nth; NorthGlue = GlueFactory.LeftHook(); SouthGlue = GlueFactory.PreReadLeft(signal); }
private void SetUp() { var id = Guid.NewGuid(); for (var i = 0; i <= height * 4; i++) { var tile = new Tile($"RightWall {i}"); if (i == 0) { tile.West = GlueFactory.RightWall; } else { tile.South = G(id); } id = Guid.NewGuid(); tile.North = G(id); tiles.Add(tile); } tiles.AddRange(new [] { RightBottom, RightMiddle, RightTopZ0, RightTopZ1, LeftBottom, LeftMiddle, LeftTopZ0, LeftTopZ1 }); RightBottom.South = G(id); RightBottom.North = Bind(RightBottom, RightMiddle); RightMiddle.South = RightBottom.North; RightMiddle.North = Bind(RightMiddle, RightTopZ0); RightTopZ0.South = RightMiddle.North; RightTopZ0.Up = Bind(RightTopZ0, RightTopZ1); RightTopZ1.Down = RightTopZ0.Up; RightTopZ1.West = Bind(RightTopZ1, LeftTopZ1); LeftTopZ1.East = RightTopZ1.West; LeftTopZ1.Down = Bind(LeftTopZ1, LeftTopZ0); LeftTopZ0.Up = LeftTopZ1.Down; LeftTopZ0.South = Bind(LeftTopZ0, LeftMiddle); LeftMiddle.North = LeftTopZ0.South; LeftMiddle.South = Bind(LeftMiddle, LeftBottom); LeftBottom.North = LeftMiddle.South; LeftBottom.South = GlueFactory.PreReadRight(Signals.Carry); }
private void SetUp() { var id = Guid.NewGuid(); for (var i = 0; i < height; i++) { var tile = Tile(i); tile.North = i == 0 ? GlueFactory.PreReadRight(signal) : G(id); id = Guid.NewGuid(); if (i + 1 == height) { tile.West = G(id); if (signal != Signals.Carry) { tile.South = GlueFactory.LeftWall; } } else { tile.South = G(id); } tiles.Add(tile); } var right = Tile(height); right.East = G(id); id = Guid.NewGuid(); right.West = G(id); tiles.Add(right); var left = Tile(height + 1); left.East = right.West; left.West = GlueFactory.Reader(signal); tiles.Add(left); }
private void SetUp() { var previous = Guid.NewGuid(); for (var i = 0; i < binaryValue.Length; i++) { var value = binaryValue[i]; var bit = value == '0' ? (AbstractBit) new ZeroBit(binaryValue, i, Modes.Copy, signal) : new OneBit(binaryValue, i, Modes.Copy, signal); // the first tile needs to bind with the hook, according to this binary string's data bit.NorthGlue = i == 0 ? startGlue : new Glue(previous.ToString()); // the last tiles should propagate a copy stopper, every other bit should propagate another bit previous = Guid.NewGuid(); var lastBit = i + 1 == binaryValue.Length; if (lastBit) { var valueBase10 = Convert.ToInt32(binaryValue, 2) + 1; bit.SouthGlue = valueBase10 <= stoppingValue?GlueFactory.CopyStopper(signal) : new Glue(); } else { bit.SouthGlue = new Glue(previous.ToString()); } List <Tile> results = bit.Tiles().ToList(); if (value == '1') { foreach (var tile in results) { tile.Color = "blue"; } } tiles.AddRange(results); } }
private void SetUp() { var id = Guid.NewGuid(); for (var i = 0; i < height; i++) { var tile = Tile(i); tile.North = i == 0 ? GlueFactory.PreReadLeft(signal) : G(id); id = Guid.NewGuid(); if (i + 1 == height) { tile.Up = G(id); tile.South = GlueFactory.RightTurn(); } else { tile.South = G(id); } tiles.Add(tile); } var leftZ1 = Tile(height); leftZ1.Down = G(id); id = Guid.NewGuid(); leftZ1.East = G(id); var rightZ1 = Tile(height + 1); rightZ1.West = leftZ1.East; rightZ1.East = GlueFactory.Reader(signal); tiles.Add(leftZ1); tiles.Add(rightZ1); }
private void SetUp() { topRight = Tile(TileNames.CopyStopperTopRight); topLeft = Tile(TileNames.CopyStopperTopLeft); bottomLeft = Tile(TileNames.CopyStopperBottomLeft); bottomRight = Tile(TileNames.CopyStopperBottomRight); topRight.North = GlueFactory.CopyStopper(signal); topRight.West = Bind(topRight, topLeft); topLeft.East = topRight.West; topLeft.South = Bind(topLeft, bottomLeft); bottomLeft.North = topLeft.South; bottomLeft.East = Bind(bottomLeft, bottomRight); bottomRight.West = bottomLeft.East; bottomRight.South = GlueFactory.PreReadRight(signal); tiles = new List <Tile> { topRight, topLeft, bottomLeft, bottomRight }; }
private void Setup() { tiles.AddRange(new [] { bottomRightZ0, bottomRightZ1, bottomMiddle }); bottomRightZ0.North = GlueFactory.LeftWall; bottomRightZ0.Up = Bind(bottomRightZ0, bottomRightZ1); bottomRightZ1.Down = bottomRightZ0.Up; bottomRightZ1.West = Bind(bottomRightZ1, bottomMiddle); bottomMiddle.East = bottomRightZ1.West; bottomMiddle.North = Bind(0, 1); var height = bits * 4; for (var i = 0; i <= height; i++) { var tile = Tile(i); tile.North = Bind(i, i + 1); tile.South = Bind(i - 1, i); tiles.Add(tile); } var lastAdded = tiles.Last(); lastAdded.North = Bind(lastAdded, topMiddle); topMiddle.South = lastAdded.North; tiles.Add(topMiddle); topMiddle.West = Bind(topMiddle, topLeft); topLeft.East = topMiddle.West; tiles.Add(topLeft); // 2n + 2 start north and south var leftSideHeight = height * 2 + 4; var id = Guid.NewGuid(); topLeft.Down = new Glue(id.ToString()); for (var i = 0; i < leftSideHeight; i++) { var tile = Tile("LeftSide", i); tiles.Add(tile); tile.South = new Glue(id.ToString()); id = Guid.NewGuid(); tile.North = new Glue(id.ToString()); if (i == 0) { tile.Up = tile.South; tile.South = new Glue(); } if (i + 1 == leftSideHeight) { tile.East = tile.North; tile.North = new Glue(); } } var rightSideHeight = height + 2; for (var i = 0; i < rightSideHeight; i++) { var tile = Tile("RightSide", i); tiles.Add(tile); tile.North = new Glue(id.ToString()); id = Guid.NewGuid(); tile.South = new Glue(id.ToString()); if (i == 0) { tile.West = tile.North; tile.North = new Glue(); } if (i + 1 == rightSideHeight) { tile.South = GlueFactory.PreReadLeft(Signals.First); } } }
private void Setup() { firstZ0 = Tile($"R: Z0-1st, B='{bitsRead}', S={signal}"); secondZ0 = Tile($"R: Z0-2nd, B='{bitsRead}1', S={signal}"); thirdZ0 = Tile($"R: Z0-3rd, B='{bitsRead}1', S={signal}"); fourthZ0 = Tile($"R: Z0-4th, B='{bitsRead}1', S={signal}"); firstZ1 = Tile($"R: Z1-1st, B='{bitsRead}', S={signal}"); secondZ1 = Tile($"R: Z1-2nd, B='{bitsRead}0', S={signal}"); thirdZ1 = Tile($"R: Z1-3rd, B='{bitsRead}0', S={signal}"); fourthZ1 = Tile($"R: Z1-4th, B='{bitsRead}0', S={signal}"); fifthZ1 = Tile($"R: Z1-5th, B='{bitsRead}0', S={signal}"); tiles = new List <Tile> { firstZ0, secondZ0, thirdZ0, fourthZ0, firstZ1, secondZ1, thirdZ1, fourthZ1, fifthZ1 }; if (bitsRead.Length == 0) { firstZ0.East = GlueFactory.Reader(signal); } else { firstZ0.South = new Glue($"ReadContinue: {bitsRead}, S={signal}"); } firstZ0.North = Bind(firstZ0, secondZ0); secondZ0.South = firstZ0.North; secondZ0.North = Bind(secondZ0, thirdZ0); thirdZ0.South = secondZ0.North; thirdZ0.North = Bind(thirdZ0, fourthZ0); fourthZ0.South = thirdZ0.North; firstZ0.Up = fourthZ0.Down; firstZ0.Up = Bind(firstZ0, firstZ1); firstZ1.Down = firstZ0.Up; firstZ1.North = Bind(firstZ1, secondZ1); secondZ1.South = firstZ1.North; secondZ1.North = Bind(secondZ1, thirdZ1); thirdZ1.South = secondZ1.North; thirdZ1.North = Bind(thirdZ1, fourthZ1); fourthZ1.South = thirdZ1.North; fourthZ1.Down = Bind(fourthZ1, fifthZ1); fifthZ1.Up = fourthZ1.Down; // final bit if (bitsRead.Length + 1 == totalBits) { fourthZ0.North = new Glue($"ReadContinue: {bitsRead}1, S={signal}"); fifthZ1.North = new Glue($"ReadContinue: {bitsRead}0, S={signal}"); var currentCarrySignal = signal == Signals.Carry; if (currentCarrySignal) { var value = $"{bitsRead}0"; var inDecimal = Convert.ToInt32(value, 2); var canIncrementIfLastBitWas0 = inDecimal < baseK - 1; if (canIncrementIfLastBitWas0) { var valueToCreateFifthZ1 = IncrementInBinary(value); fifthZ1.North = GlueFactory.RightHook(valueToCreateFifthZ1, Signals.NoCarry); } else { var allZeros = string.Concat(Enumerable.Repeat("0", totalBits)); fifthZ1.North = GlueFactory.RightHook(allZeros, Signals.Carry); } value = $"{bitsRead}1"; var canIncrementIfLastBitWas1 = Convert.ToInt32($"{bitsRead}1", 2) < baseK - 1; if (canIncrementIfLastBitWas1) { var valueToCreateFourthZ0 = IncrementInBinary(value); fourthZ0.North = GlueFactory.RightHook(valueToCreateFourthZ0, Signals.NoCarry); } else { var allZeros = string.Concat(Enumerable.Repeat("0", totalBits)); fourthZ0.North = GlueFactory.RightHook(allZeros, Signals.Carry); } } else { fourthZ0.North = GlueFactory.RightHook($"{bitsRead}1", Signals.NoCarry); fifthZ1.North = GlueFactory.RightHook($"{bitsRead}0", Signals.NoCarry); } } else { fourthZ0.North = new Glue($"ReadContinue: {bitsRead}1, S={signal}"); fifthZ1.North = new Glue($"ReadContinue: {bitsRead}0, S={signal}"); } }
private static BuildingBase CreateBuildingFromXML(string building, GameServer server, Player player) { var buildingData = Settings.GetBuilding(building); if(buildingData == null) return new BuildingBase(server, player); BuildingBase ret = new BuildingBase(server, player); switch (buildingData.BuildingType.ToLower()) { default: ret = new BuildingBase(server, player); break; case "base": ret = new HomeBuilding(server,player); break; case "supply": ret = new SupplyBuilding(server, player, buildingData.SupplyAdd); break; case "gluefactory": ret = new GlueFactory(server, player); break; } foreach (var unitElement in buildingData.Units) { ret.spells.Add(unitElement.UnitTypeString, new SpellData(0, null) { AppleCost = unitElement.AppleCost, WoodCost = unitElement.WoodCost, CastTime = unitElement.CreationTime, GlueCost = unitElement.GlueCost, SupplyCost = unitElement.SupplyCost, SpellType = SpellTypes.UnitCreation, }); } ret.Health = buildingData.Health; ret.MaxHealth = buildingData.MaxHealth; ret.BuildTime = buildingData.BuildTime; ret.HotkeyString = buildingData.Name; return ret; }
private void SetUp() { var middleBottom = Tile("MiddleBottom"); var leftBottom = Tile("LeftBottom"); var leftMiddle = Tile("LeftMiddle"); var leftTopZ0 = Tile("LeftTopZ0"); var leftTopZ1 = Tile("LeftTopZ1"); var middleTop = Tile("MiddleTopZ1"); var rightTop = Tile("RightTop"); tiles.AddRange(new[] { middleBottom, leftBottom, leftMiddle, leftTopZ0, leftTopZ1, middleTop, rightTop }); middleBottom.North = GlueFactory.RightTurn(); middleBottom.West = Bind(middleBottom, leftBottom); leftBottom.East = middleBottom.West; leftBottom.North = Bind(leftBottom, leftMiddle); leftMiddle.South = leftBottom.North; leftMiddle.North = Bind(leftMiddle, leftTopZ0); leftTopZ0.South = leftMiddle.North; leftTopZ0.Up = Bind(leftTopZ0, leftTopZ1); leftTopZ1.Down = leftTopZ0.Up; leftTopZ1.East = Bind(leftTopZ1, middleTop); middleTop.West = leftTopZ1.East; middleTop.East = Bind(middleTop, rightTop); rightTop.West = middleTop.East; var id = Guid.NewGuid(); rightTop.Down = Bind(id); for (var i = 0; i < height * 2; i += 4) { var bottomLeft = Tile("BottomLeft", i); if (i == 0) { bottomLeft.Up = Bind(id); } else { bottomLeft.South = Bind(id); } var bottomRight = Tile("BottomRight", i + 1); bottomLeft.East = Bind(bottomLeft, bottomRight); bottomRight.West = bottomLeft.East; var topRight = Tile("TopRight", i + 2); bottomRight.North = Bind(bottomRight, topRight); topRight.South = bottomRight.North; var topLeft = Tile("TopLeft", i + 3); topRight.West = Bind(topRight, topLeft); topLeft.East = topRight.West; tiles.AddRange(new[] { bottomLeft, bottomRight, topRight, topLeft }); id = Guid.NewGuid(); topLeft.North = Bind(id); } var topLeftEnd = new Tile("RightTurnEnd") { East = GlueFactory.RightWall, South = Bind(id) }; tiles.Add(topLeftEnd); }
private void Setup() { firstZ0 = Tile($"LR: Z0-1st, B='{bitsRead}', S={signal}"); secondZ0 = Tile($"LR: Z0-2nd, B='1{bitsRead}', S={signal}"); thirdZ0 = Tile($"LR: Z0-3rd, B='1{bitsRead}', S={signal}"); fourthZ0 = Tile($"LR: Z0-4th, B='1{bitsRead}', S={signal}"); firstZ1 = Tile($"LR: Z1-1st, B='{bitsRead}', S={signal}"); secondZ1 = Tile($"LR: Z1-2nd, B='0{bitsRead}', S={signal}"); thirdZ1 = Tile($"LR: Z1-3rd, B='0{bitsRead}', S={signal}"); fourthZ1 = Tile($"LR: Z1-4th, B='0{bitsRead}', S={signal}"); fifthZ1 = Tile($"LR: Z1-5th, B='0{bitsRead}', S={signal}"); tiles = new List <Tile> { firstZ0, secondZ0, thirdZ0, fourthZ0, firstZ1, secondZ1, thirdZ1, fourthZ1, fifthZ1 }; if (bitsRead.Length == 0) { firstZ1.West = GlueFactory.Reader(signal); } else { firstZ0.South = new Glue($"LR: ReadContinue: {bitsRead}, S={signal}"); } firstZ0.North = Bind(firstZ0, secondZ0); secondZ0.South = firstZ0.North; secondZ0.North = Bind(secondZ0, thirdZ0); thirdZ0.South = secondZ0.North; thirdZ0.North = Bind(thirdZ0, fourthZ0); fourthZ0.South = thirdZ0.North; firstZ0.Up = fourthZ0.Down; firstZ0.Up = Bind(firstZ0, firstZ1); firstZ1.Down = firstZ0.Up; firstZ1.North = Bind(firstZ1, secondZ1); secondZ1.South = firstZ1.North; secondZ1.North = Bind(secondZ1, thirdZ1); thirdZ1.South = secondZ1.North; thirdZ1.North = Bind(thirdZ1, fourthZ1); fourthZ1.South = thirdZ1.North; fourthZ1.Down = Bind(fourthZ1, fifthZ1); fifthZ1.Up = fourthZ1.Down; // final bit if (bitsRead.Length + 1 == totalBits) { var currentValueForFifthZ1 = $"0{bitsRead}"; var currentValueForFourthZ0 = $"1{bitsRead}"; fourthZ0.North = GlueFactory.IncrementStopper(currentValueForFourthZ0, signal); fifthZ1.North = GlueFactory.IncrementStopper(currentValueForFifthZ1, signal); } else { fourthZ0.North = new Glue($"LR: ReadContinue: 1{bitsRead}, S={signal}"); fifthZ1.North = new Glue($"LR: ReadContinue: 0{bitsRead}, S={signal}"); } }