1
0
Fork 0

Make tile positions relative

This commit is contained in:
Piegames 2018-04-22 16:46:49 +02:00
parent 8ebeb2b982
commit b034e23fd6
2 changed files with 29 additions and 7 deletions

View file

@ -150,8 +150,21 @@ public class DungeonGenerator {
rooms.Remove(start);
rooms.Remove(end);
foreach (GenRoom r in rooms)
makeRoomRelative(r);
makeRoomRelative(start);
makeRoomRelative(end);
makeRoomRelative(path);
}
public void makeRoomRelative(GenRoom room) {
room.roomPosition = room.bounds.position;
foreach (Vector2Int v in room.tiles.Keys) {
v.Set((v - room.roomPosition).x, (v-room.roomPosition).y);
}
}
public static void AddStraightHorizontal(HashSet<GenRoom> rooms, GenEdge ed) {
GenRoom righter = ed.r1.r.GetCenter().x > ed.r2.r.GetCenter().x ? ed.r1.r : ed.r2.r;
GenRoom lefter = ed.r1.r.GetCenter().x > ed.r2.r.GetCenter().x ? ed.r2.r : ed.r1.r;

View file

@ -3,19 +3,28 @@ using System.Collections.Generic;
using UnityEngine;
public class GenRoom {
public RectInt bounds = new RectInt();
public Dictionary<Vector2Int, Room.TileType> tiles = new Dictionary<Vector2Int, Room.TileType>();
public HashSet<Vector2Int> doorsUp = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsDown = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsLeft = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsRight = new HashSet<Vector2Int>();
// ---Internal for generation only---
// TODO make them package protcted please
public RectInt bounds = new RectInt();
public HashSet<Vector2Int> doorsUp = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsDown = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsLeft = new HashSet<Vector2Int>();
public HashSet<Vector2Int> doorsRight = new HashSet<Vector2Int>();
// --- The final room genration result ---
// The position of the anchor of the room in world space. This should be the top left corner of the room, but may be any point in the world.
public Vector2Int roomPosition;
// All positions are in room space relative to the room's anchor
public Dictionary<Vector2Int, Room.TileType> tiles = new Dictionary<Vector2Int, Room.TileType>();
public float Distance(GenRoom r) {
return Math.Abs(GetCenter().x - r.GetCenter().x) + Math.Abs(GetCenter().y - r.GetCenter().y);
}
public Vector2Int GetCenter() {
return new Vector2Int(( int ) bounds.center.x, ( int ) bounds.center.y);
return new Vector2Int(( int ) bounds.center.x, ( int ) bounds.center.y);
}
public HashSet<Vector2Int> AllDoors() {