bool CheckMarkerPlacement(int x, int y, int radius, MapMarkerType type)
 {
     return(mapMarkers
            .Where(marker => marker.Type == type)
            .All(marker => Math.Abs(marker.Location.X - x) >= radius ||
                 Math.Abs(marker.Location.Y - y) >= radius));
 }
Example #2
0
 Rectangle2D CalculateIconSourceRectangle(MapMarkerType mapMarkerType)
 {
     return(new Rectangle2D(
                (int)mapMarkerType % 14 * 16,
                (int)mapMarkerType / 14 * 16,
                16,
                16));
 }
        void AddMapMarker(int x, int y, MapMarkerType type)
        {
            MapMarker mapMarker = new MapMarker
            {
                Type     = type,
                Location = new Point2D(x, y)
            };

            mapMarkers.Add(mapMarker);
        }
Example #4
0
    public static MapPoint CreatePointOfType(float i_angle, float i_height, MapMarkerType mtype)
    {
        switch (mtype)
        {
        case MapMarkerType.MyCity:
        case MapMarkerType.FlyingExpedition:
            return(new MapPoint(i_angle, i_height, mtype));

        case MapMarkerType.Star:
            return(new SunPoint(i_angle, i_height, GameMaster.realMaster.globalMap.ascension));

        case MapMarkerType.Unknown:
        case MapMarkerType.Station:
        case MapMarkerType.Wreck:
        case MapMarkerType.Island:
        case MapMarkerType.SOS:
        case MapMarkerType.Portal:
        case MapMarkerType.Colony:
        case MapMarkerType.Wiseman:
        case MapMarkerType.Wonder:
        case MapMarkerType.Resources:
            float f = Random.value;
            var   p = Path.NoPath;
            if (f > 0.1f)
            {
                if (f > 0.7f)
                {
                    p = Path.TechPath;
                }
                else
                {
                    if (f > 0.4f)
                    {
                        p = Path.SecretPath;
                    }
                    else
                    {
                        p = Path.LifePath;
                    }
                }
            }
            return(new PointOfInterest(i_angle, i_height, mtype, p));

        case MapMarkerType.QuestMark:
            return(new MapPoint(i_angle, i_height, mtype));

        default:
            return(new MapPoint(i_angle, i_height, mtype));
        }
    }
Example #5
0
    private void AddNewSector(byte index, MapMarkerType mtype, Environment e)
    {
        if (mapSectors[index] != null)
        {
            RemoveSector(index);
        }
        Vector2  spos   = GetSectorPosition(index);
        MapPoint mpoint = MapPoint.CreatePointOfType(spos.x, spos.y, mtype);

        mapPoints.Add(mpoint);
        RingSector rs = new RingSector(mpoint, e);

        mapSectors[index] = rs;
        actionsHash++;
    }
        void ProcessMapMarkers()
        {
            for (int y = 0; y < currentWorld.Height; y++)
            {
                for (int x = 0; x < currentWorld.Width; x++)
                {
                    WorldObject worldObject = GetWorldObject(x, y);

                    if (worldObject == null)
                    {
                        continue;
                    }

                    MapMarkerType type = MapMarkerType.None;

                    switch (worldObject.Type)
                    {
                    case WorldObjectType.Anvil:
                        type = MapMarkerType.Anvil;
                        break;

                    case WorldObjectType.Cooking:
                        type = MapMarkerType.CookingStation;
                        break;

                    case WorldObjectType.WaterSource:
                        type = MapMarkerType.WaterSource;
                        break;
                    }

                    if (type != MapMarkerType.None &&
                        CheckMarkerPlacement(x, y, 16, type))
                    {
                        AddMapMarker(x, y, type);
                    }
                }
            }
        }
    // =====================  AUXILIARY METHODS
    public static Rect GetMarkerRect(MapMarkerType mtype)
    {
        float p = 0.25f;

        switch (mtype)
        {
        case MapMarkerType.MyCity: return(new Rect(p, 0, p, p));

        case MapMarkerType.Station: return(new Rect(0, p, p, p));

        case MapMarkerType.Wreck: return(new Rect(p, p, p, p));

        case MapMarkerType.FlyingExpedition: return(new Rect(2 * p, p, p, p));

        case MapMarkerType.Island: return(new Rect(3 * p, p, p, p));

        case MapMarkerType.SOS: return(new Rect(0, 2 * p, p, p));

        case MapMarkerType.Portal: return(new Rect(p, 2 * p, p, p));

        case MapMarkerType.QuestMark: return(new Rect(2 * p, 2 * p, p, p));

        case MapMarkerType.Colony: return(new Rect(3 * p, 2 * p, p, p));

        case MapMarkerType.Star: return(new Rect(0, 3 * p, p, p));

        case MapMarkerType.Wiseman: return(new Rect(p, 3 * p, p, p));

        case MapMarkerType.Wonder: return(new Rect(2 * p, 3 * p, p, p));

        case MapMarkerType.Resources: return(new Rect(3 * p, 3 * p, p, p));

        case MapMarkerType.Unknown:
        default:
            return(new Rect(0, 0, p, p));
        }
    }
Example #8
0
    public MapMarkerType PickMainPointType()
    {
        MapMarkerType[] list = new MapMarkerType[4];
        switch (presetType)
        {
        case EnvironmentPreset.Ocean:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.SOS;
            list[2] = MapMarkerType.Island;
            list[3] = MapMarkerType.Wonder;
            break;

        case EnvironmentPreset.Meadows:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.Station;
            list[3] = MapMarkerType.Colony;
            break;

        case EnvironmentPreset.WhiteSpace:
            list[0] = MapMarkerType.Star;
            list[1] = MapMarkerType.Wiseman;
            list[2] = MapMarkerType.Wonder;
            list[3] = MapMarkerType.Portal;
            break;

        case EnvironmentPreset.Space:
        case EnvironmentPreset.Ice:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.SOS;
            list[3] = MapMarkerType.Station;
            break;

        case EnvironmentPreset.Desert:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.SOS;
            list[3] = MapMarkerType.Island;
            break;

        case EnvironmentPreset.Fire:
            list[0] = MapMarkerType.Star;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.SOS;
            list[3] = MapMarkerType.Portal;
            break;

        case EnvironmentPreset.Ruins:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.Wiseman;
            list[3] = MapMarkerType.Colony;
            break;

        case EnvironmentPreset.Crystal:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wiseman;
            list[2] = MapMarkerType.Island;
            list[3] = MapMarkerType.Portal;
            break;

        case EnvironmentPreset.Forest:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Island;
            list[2] = MapMarkerType.Colony;
            list[3] = MapMarkerType.Wonder;
            break;

        case EnvironmentPreset.Pollen:
            list[0] = MapMarkerType.SOS;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.Island;
            list[3] = MapMarkerType.Portal;
            break;

        case EnvironmentPreset.Pipe:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Wreck;
            list[2] = MapMarkerType.Star;
            list[3] = MapMarkerType.Island;
            break;

        default:
            list[0] = MapMarkerType.Resources;
            list[1] = MapMarkerType.Island;
            list[2] = MapMarkerType.Station;
            list[3] = MapMarkerType.Wonder;
            break;
        }
        float x = Random.value;

        if (x > 0.3f)
        {
            if (x > 0.6f)
            {
                return(list[0]);
            }
            else
            {
                return(list[1]);
            }
        }
        else
        {
            if (x < 0.1f)
            {
                return(list[3]);
            }
            else
            {
                return(list[2]);
            }
        }
    }
Example #9
0
 public MovingMapPoint(float i_angle, float i_height, byte ring, MapMarkerType mtype) : base(i_angle, i_height, mtype)
 {
     moveVector = Vector2.zero;
 }
 public MapMarkerData(MapMarkerType Type, Byte[] Unused)
 {
     this.Type   = Type;
     this.Unused = Unused;
 }
 public MapMarkerData(string Tag = null)
     : base(Tag)
 {
     Type   = new MapMarkerType();
     Unused = new byte[1];
 }
Example #12
0
    protected MapPoint(float i_angle, float i_height, MapMarkerType mtype)
    {
        ID        = nextID++;
        angle     = i_angle;
        height    = i_height;
        ringIndex = GameMaster.realMaster.globalMap.DefineRing(height);
        type      = mtype;

        switch (mtype)
        {
        case MapMarkerType.Unknown:
            stability = Random.value * 0.3f;
            break;

        case MapMarkerType.MyCity:
            stability = 1f;
            break;

        case MapMarkerType.Star:
            stability = 0.5f + Random.value * 0.4f;
            break;

        case MapMarkerType.Station:
            stability = 0.5f;
            break;

        case MapMarkerType.Wreck:
            stability = 0.1f + 0.23f * Random.value;
            break;

        case MapMarkerType.FlyingExpedition:
            stability = 1f;
            break;     // flyingExpedition.expedition.sectorCollapsingTest

        case MapMarkerType.Island:
            stability = 0.5f + Random.value * 0.2f;
            break;

        case MapMarkerType.SOS:
            stability = Random.value * 0.05f;
            break;

        case MapMarkerType.Portal:
            stability = 0.1f + Random.value * 0.3f;
            break;

        case MapMarkerType.QuestMark:
            stability = 1f;
            break;

        case MapMarkerType.Colony:
            stability = 0.4f + Random.value * 0.2f;
            break;

        case MapMarkerType.Wiseman:
            stability = 0.5f + Random.value * 0.25f;
            break;

        case MapMarkerType.Wonder:
            stability = Random.value;
            break;

        case MapMarkerType.Resources:
            stability = 0.2f + Random.value * 0.3f;
            break;
        }
        destroyed = false;
    }
Example #13
0
 public PointOfInterest(float i_angle, float i_height, MapMarkerType mtype, Path i_path) : base(i_angle, i_height, mtype)
 {
     difficulty = RecalculateDifficulty();
     path       = i_path;
 }