public static void MineExtraOre(MineJob mineJob, Character character) { Vector3 jobPosition = mineJob.Position; float z = jobPosition.Z; int depth = (int)(GnomanEmpire.Instance.Map.SurfaceLevel - z); Map map = GnomanEmpire.Instance.Map; if (depth < -7) { int mapWidth = map.MapWidth; int mapHeight = map.MapHeight; // Check if a torch exists a SafeTorchDistance away float y = jobPosition.Y; float x = jobPosition.X; if (x - SafeTorchDistance >= 1) { Vector3 torchPosition = new Vector3(x - SafeTorchDistance, y, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (x + SafeTorchDistance <= mapHeight - 2) { Vector3 torchPosition = new Vector3(x + SafeTorchDistance, y, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (y - SafeTorchDistance >= 1) { Vector3 torchPosition = new Vector3(x, y - SafeTorchDistance, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (y + SafeTorchDistance <= mapWidth - 2) { Vector3 torchPosition = new Vector3(x, y + SafeTorchDistance, z); CheckBuildTorch(jobPosition, torchPosition, map); } } else { foreach (var surroundingPosition in GetSurroundingPositions(map, jobPosition) .Where(surroundingPosition => { MapCell mapCell = map.GetCell(surroundingPosition); return(IsSafeMiningLocation(map, surroundingPosition, character) && mapCell.HasNaturalWall() && mapCell.HasEmbeddedWall()); })) { GnomanEmpire.Instance.Fortress.JobBoard.AddJob(new MineJob(surroundingPosition)); } } }
public void TestJobSerialization() { this.Setup(); MineJob job = new MineJob(new MagicalLifeAPI.DataTypes.Point2D(3, 6)); HumanFactory humanFactory = new HumanFactory(); Human human = humanFactory.GenerateHuman(new MagicalLifeAPI.DataTypes.Point2D(1, 3), 0, Guid.NewGuid()); JobAssignedMessage message = new JobAssignedMessage(human, job); byte[] data = ProtoUtil.Serialize(message); Assert.IsNotNull(data); JobAssignedMessage result = (JobAssignedMessage)ProtoUtil.Deserialize(data); }
private void InputHistory_InputAdded() { HistoricalInput last = InputHistory.History.Last(); if (last.ActionSelected == ActionSelected.Mine) { foreach (MagicalLifeAPI.GUI.Selectable item in last.Selected) { Tile tile = World.GetTile(RenderingPipe.Dimension, item.MapLocation.X, item.MapLocation.Y); if (tile.Resources != null) { MineJob job = new MineJob(tile.MapLocation); tile.ImpendingAction = ActionSelected.Mine; ClientSendRecieve.Send(new JobCreatedMessage(job)); } } } }
public static void MineExtraOre(MineJob mineJob, Character character) { Vector3 jobPosition = mineJob.Position; float z = jobPosition.Z; int depth = (int)(GnomanEmpire.Instance.Map.SurfaceLevel - z); Map map = GnomanEmpire.Instance.Map; if (depth < -7) { int mapWidth = map.MapWidth; int mapHeight = map.MapHeight; // Check if a torch exists a SafeTorchDistance away float y = jobPosition.Y; float x = jobPosition.X; if (x - SafeTorchDistance >= 1) { Vector3 torchPosition = new Vector3(x - SafeTorchDistance, y, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (x + SafeTorchDistance <= mapHeight - 2) { Vector3 torchPosition = new Vector3(x + SafeTorchDistance, y, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (y - SafeTorchDistance >= 1) { Vector3 torchPosition = new Vector3(x, y - SafeTorchDistance, z); CheckBuildTorch(jobPosition, torchPosition, map); } if (y + SafeTorchDistance <= mapWidth - 2) { Vector3 torchPosition = new Vector3(x, y + SafeTorchDistance, z); CheckBuildTorch(jobPosition, torchPosition, map); } } else { foreach (var surroundingPosition in GetSurroundingPositions(map, jobPosition) .Where(surroundingPosition => { MapCell mapCell = map.GetCell(surroundingPosition); return IsSafeMiningLocation(map, surroundingPosition, character) && mapCell.HasNaturalWall() && mapCell.HasEmbeddedWall(); })) { GnomanEmpire.Instance.Fortress.JobBoard.AddJob(new MineJob(surroundingPosition)); } } }