public void FocusRoom(CombatRoom room, float fadingSpeed, bool inmediate = false) { if (inmediate) { transform.position = new Vector3(room.transform.position.x, room.transform.position.y, transform.position.z); mainCamera.orthographicSize = CalculateCameraSize(room.bounds); } else { transitionSpeed = fadingSpeed; cameraDestPosition = new Vector3(room.transform.position.x, room.transform.position.y, transform.position.z); if (movementCoroutine != null) { StopCoroutine(movementCoroutine); } movementCoroutine = StartCoroutine(MoveCamera()); cameraDestSize = CalculateCameraSize(room.bounds); if (zoomCoroutine != null) { StopCoroutine(zoomCoroutine); } zoomCoroutine = StartCoroutine(ZoomCamera()); } }
/// <summary> /// Generates specific values for the DungeonType. /// </summary> /// <param name="room">The current room.</param> /// <param name="dungeonRoomObject">The gameobject to which the room should be generate don.</param> /// <param name="levelNumber">The number of the level.</param> /// <returns>The fully generated DungeonRoom.</returns> private DungeonRoom SetRoomType(Room room, GameObject dungeonRoomObject, int levelNumber, DungeonConfig config) { switch (room.Type) { case RoomType.Start: StartRoom startRoom = dungeonRoomObject.AddComponent <StartRoom>(); if (Player.LocalPlayer.isServer && levelNumber == 0) { startRoom.SpawnItems(RegionDict.Instance.StartingRoomPickables, DungeonCreator.Instance.TilePositionToWorldPosition(room.Position + (room.Layout.Size / 2))); } return(startRoom); case RoomType.Combat: CombatRoom combatRoom = dungeonRoomObject.AddComponent <CombatRoom>(); combatRoom.ThreatLevel = room.TileCount; combatRoom.enemiesToSpawn = new EnemyObject[combatRoom.ThreatLevel / 48]; for (int j = 0; j < combatRoom.enemiesToSpawn.Length; j++) { combatRoom.enemiesToSpawn[j] = RandomUtil.Element(RegionDict.Instance.EnemiesToSpawn); } return(combatRoom); case RoomType.Loot: LootRoom lootRoom = dungeonRoomObject.AddComponent <LootRoom>(); lootRoom.pickables = new Pickable[room.TileCount / 48]; for (int j = 0; j < lootRoom.pickables.Length; j++) { lootRoom.pickables[j] = RandomUtil.Element(RegionDict.Instance.LootingRoomPickables); } return(lootRoom); case RoomType.Shop: ShopRoom shopRoom = dungeonRoomObject.AddComponent <ShopRoom>(); const int numItems = 4; shopRoom.shopItems = new Pickable[numItems]; shopRoom.locations = new Vector2[numItems]; // TODO: Replace Pickabledict with dungeon config shop pickables. for (int j = 0; j < numItems; j++) { int rnd = Random.Range(0, config.shopItems.Length); shopRoom.shopItems[j] = config.shopItems[rnd]; shopRoom.locations[j] = room.Position + new Vector2Int((int)room.GameObjects[j + 4].Position.x, (int)room.GameObjects[j + 4].Position.y); } shopRoom.SpawnItems(); return(shopRoom); case RoomType.Boss: BossRoom bossRoom = dungeonRoomObject.AddComponent <BossRoom>(); bossRoom.bossObjects = new BossObject[] { RandomUtil.Element(RegionDict.Instance.BossesToSpawn) }; DungeonDict.Instance.SetBossRoom(bossRoom); return(bossRoom); case RoomType.Empty: EmptyRoom emptyRoom = dungeonRoomObject.AddComponent <EmptyRoom>(); return(emptyRoom); default: throw new System.Exception("Unknown room type! (" + room.Type + ")"); } }
public void StartRunning(CombatRoom room) { barParent.SetActive(true); currentRoom = room; remainingTime = room.GetRoomTime(); maxTime = room.GetRoomTime(); running = true; }
public void Matching() { /* 两两匹配 */ var resList = new List <MatchingResult>(); var players = new List <Socket>(); foreach (var player in m_MatchingSet) { players.Add(player); if (players.Count >= CombatRoom.MAX_PLAYER) { var res = new MatchingResult { roomId = m_RoomAllocator.GetId(), players = players, }; players = new List <Socket>(); resList.Add(res); } } /* 创建房间 */ foreach (var res in resList) { var room = new CombatRoom(res.roomId); Int32 seed = m_Random.Next(); Int32 playerId = 1; foreach (var player in res.players) { m_MatchingSet.Remove(player); room.AddPlayer(player); m_MapPlayerToRoom.Add(player, res.roomId); ServerNetManager.Send(player, (Int16)ProtocType.CombatMatchRes, new CombatMatchRes { RoomId = res.roomId, Seed = seed, PlayerCount = CombatRoom.MAX_PLAYER, SelfId = playerId, }); playerId++; } m_RoomSet.Add(res.roomId, room); } }
public MapInfo(MapSize size) { rows = 3; cols = 3; rooms = new Room[rows, cols]; rooms[0, 0] = new NavRoom(); rooms[0, 1] = new NavRoom(); rooms[0, 2] = new TrapRoom(); rooms[1, 1] = new CombatRoom(); rooms[2, 1] = new NavRoom(); rooms[2, 0] = new TrapRoom(); rooms[2, 2] = new NavRoom(); currRow = 0; currCol = 0; startRoom = rooms[currRow, currCol]; endRoom = rooms[2, 2]; }
public void AssignCombatRoom(CombatRoom room) { assignedCombatRoom = room; }
void CreateRoom(RoomIdentifier r, Transform level) { GameObject northWall = (r.connections & NORTH) > 0 ? doorway : wall; GameObject eastWall = (r.connections & EAST) > 0 ? doorway : wall; GameObject southWall = (r.connections & SOUTH) > 0 ? doorway : wall; GameObject westWall = (r.connections & WEST) > 0 ? doorway : wall; GameObject floor = this.floor; GameObject ceiling = this.ceiling; Vector3 roomOrigin = ROOM_SIZE * new Vector3(r.x, 0, r.y); GameObject newRoomObj = new GameObject("room" + r.x + r.y); newRoomObj.transform.position = roomOrigin; newRoomObj.transform.parent = level; Instantiate(floor, roomOrigin, Quaternion.Euler(0, 0, 0), newRoomObj.transform); Instantiate(ceiling, roomOrigin, Quaternion.Euler(0, 0, 0), newRoomObj.transform); Instantiate(northWall, roomOrigin, Quaternion.Euler(0, 270, 0), newRoomObj.transform); Instantiate(eastWall, roomOrigin, Quaternion.Euler(0, 180, 0), newRoomObj.transform); Instantiate(southWall, roomOrigin, Quaternion.Euler(0, 90, 0), newRoomObj.transform); Instantiate(westWall, roomOrigin, Quaternion.Euler(0, 0, 0), newRoomObj.transform); switch (r.type) { case (RoomType.START): newRoomObj.AddComponent <SpawnRoom>(); break; case (RoomType.END): GameObject teleporter = Instantiate(bossTeleporter, roomOrigin, Quaternion.Euler(0, 0, 0), newRoomObj.transform); teleporter.GetComponent <Teleporter>().SetDestination(new Vector3(0, 0, 0)); teleporter.SetActive(false); BossWaveCombatRoom bossRoom = newRoomObj.AddComponent <BossWaveCombatRoom>(); //GameObject boss = bosses[Random.Range(0, bosses.Length)]; bossRoom.generateEnemies(enemies, numEnemiesPerRoom, 3, curLevel + 1); bossRoom.teleporter = teleporter; break; case (RoomType.DEAD_END): case (RoomType.ENEMY): CombatRoom combatRoom = newRoomObj.AddComponent <CombatRoom>(); combatRoom.generateEnemies(enemies, numEnemiesPerRoom, curLevel + 1); if (Random.Range(0f, 1f) < RewardChance) { WandPickup wp = Instantiate(wandPickup, newRoomObj.transform.position + (Vector3.up * PICKUP_HEIGHT), Quaternion.identity, newRoomObj.transform).GetComponent <WandPickup>(); GameObject wand = wands[Random.Range(0, wands.Length)]; wp.SetWand(wand); wp.gameObject.SetActive(false); combatRoom.SetReward(wp.gameObject); } break; default: break; } BoxCollider boxCollider = newRoomObj.AddComponent <BoxCollider>(); boxCollider.size = new Vector3(ROOM_SIZE, ROOM_SIZE, ROOM_SIZE); boxCollider.isTrigger = true; newRoomObj.tag = "Invisible"; }
//Time Bar public void StartTimeBar(CombatRoom room) { timeBar.StartRunning(room); }
private IEnumerator Start() { yield return(new WaitForSeconds(0.1f)); UIManager.Instance.ShowLevelLoadScreen(); DungeonDict.Instance.ClearRooms(); RegionSceneLoader loader = RegionSceneLoader.Instance; yield return(loader.LoadScene(Region.EnemyTestRoom)); Vector2Int weaponSize = new Vector2Int(30, 30); Vector2Int corridorSize = new Vector2Int(10, 2); Vector2Int enemySize = new Vector2Int(20, 20); Vector2Int startSize = new Vector2Int(10, 10); Vector2Int weaponPos = new Vector2Int(1, 3); Vector2Int startPos = new Vector2Int(weaponPos.x + weaponSize.x + corridorSize.x - 2, 3); Vector2Int corridor1Pos = startPos + new Vector2Int(0, 2);// - new Vector2Int(corridorSize.x, -2); Vector2Int corridor2Pos = startPos + new Vector2Int(startSize.x - 1, 2); Vector2Int enemyPos = startPos + new Vector2Int(startSize.x - 1, 0) + new Vector2Int(corridorSize.x - 1, 0); Fast2DArray <TileType> layout = new Fast2DArray <TileType>(startSize.x, startSize.y); FillRoomWithBounds(layout); layout.Set(TileType.CorridorAccess, layout.XSize - 1, 2); layout.Set(TileType.CorridorAccess, layout.XSize - 1, 3); List <TiledImporter.PrefabLocations> gameObjects = new List <TiledImporter.PrefabLocations>(); Room startRoom = new Room(startPos.x, startPos.y, layout, gameObjects, RoomType.Start); layout = new Fast2DArray <TileType>(weaponSize.x, weaponSize.y); FillRoomWithBounds(layout); layout.Set(TileType.CorridorAccess, layout.XSize - 1, 2); layout.Set(TileType.CorridorAccess, layout.XSize - 1, 3); Room weaponRoom = new Room(weaponPos.x, weaponPos.y, layout, gameObjects, RoomType.Empty); Corridor corridor1 = new Corridor(corridor1Pos.x, corridor1Pos.y, corridorSize.x, Direction.Left); Corridor corridor2 = new Corridor(corridor2Pos.x, corridor2Pos.y, corridorSize.x, Direction.Right); layout = new Fast2DArray <TileType>(enemySize.x, enemySize.y); FillRoomWithBounds(layout); for (int x = 3; x < enemySize.x - 2; x++) { for (int y = 5; y < enemySize.y - 2; y += 5) { layout.Set(TileType.Wall, x, y); } } layout.Set(TileType.CorridorAccess, 0, 2); layout.Set(TileType.CorridorAccess, 0, 3); Room enemyRoom = new Room(enemyPos.x, enemyPos.y, layout, gameObjects, RoomType.Combat); Room[] rooms = { startRoom, enemyRoom, weaponRoom }; Corridor[] corridors = { corridor1, corridor2 }; if (Player.LocalPlayer.isServer) { GlobalsDict.Instance.GameStateManagerObject.AddComponent <GameManager>(); } Dungeon dungeon = new Dungeon(rooms, corridors, enemyPos + new Vector2Int(layout.XSize, layout.YSize)); DungeonConfig config = DungeonConfig.StandardConfig; yield return(DungeonCreator.Instance.CreateDungeon(-1, 1, config, RegionDict.Instance.Tileset, dungeon)); CombatRoom combatRoom = DungeonDict.Instance.Rooms.First(x => x.RoomType == RoomType.Combat) as CombatRoom; combatRoom.enemiesToSpawn = enemiesToSpawn; Destroy(gameObject); }