public void Init(Door.Key key) { KeyInstance = key; var renderer = GetComponentInChildren <MeshRenderer>(); renderer.material.color = KeyInstance.color; }
protected override void OnInit() { KeyInstance = ParentRoom.KeyPickup; var meshRenderer = GetComponentInChildren <MeshRenderer>(); meshRenderer.material.color = KeyInstance.color; meshRenderer.material.SetColor("_EmissionColor", KeyInstance.color); }
private void BuildLocks(WorldData data) { var firstCell = data.RoomMap[data.FirstRoom.MapPosition.x][data.FirstRoom.MapPosition.y]; List <Room> processed = new List <Room>(); List <WorldData.RoomCell> rooms = new List <WorldData.RoomCell>(); ProcessLocks(data.FirstRoom, ref processed, ref rooms); rooms.Add(firstCell); processed.Clear(); for (int i = 0; i < Info.KeysCount; i++) { var key = Keys[i]; Info.Keys.Push(new KeyInfo() { Key = key }); } var bossCell = rooms[0]; var furthest = FindFurthest(bossCell, ref processed, 0); var bossKey = new Door.Key() { color = Color.red }; bossCell.Reference.KeyLock = bossKey; furthest.Room.KeyPickup = bossKey; List <Room> locked = new List <Room>(); while (Info.Keys.Any()) { processed.Clear(); processed.AddRange(locked); var nextKey = Info.Keys.Pop(); var next = FindFurthest(bossCell, ref processed); if (furthest.Room.KeyLock != null || next.Room.KeyPickup != null) { continue; } furthest.Room.KeyLock = nextKey.Key; next.Room.KeyPickup = nextKey.Key; locked.Add(furthest.Room); furthest = next; } }
public bool HasKey(Door.Key key) { return(Data.Pickups.Any(p => { var k = p as KeyPickup; if (k != null) { return k.KeyInstance == key; } return false; })); }
public void PickupKey(Door.Key keyPickup) { Keys.Add(keyPickup); }
public bool HasKey(Door.Key key) { return(Keys.Contains(key)); }