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)); }
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); }
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)); } }
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)); } }
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]); } } }
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]; }
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; }
public PointOfInterest(float i_angle, float i_height, MapMarkerType mtype, Path i_path) : base(i_angle, i_height, mtype) { difficulty = RecalculateDifficulty(); path = i_path; }