Beispiel #1
0
        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));
                }
            }
        }
Beispiel #2
0
        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));
                }
            }
        }