private void OnTriggerEnter(Collider other) { Debug.Log("Pitfall"); if (other.gameObject.tag == "Player") { Pitfall.Invoke(); } }
private void CreateWorld() { //Resetting monster counter when game restarts Monster.MonsterCounter = 0; world = new Space[worldSizeX, worldSizeY]; for (int y = 0; y < world.GetLength(1); y++) { for (int x = 0; x < world.GetLength(0); x++) { if (RandomUtils.TryPercentage(2)) { world[x, y] = new Pitfall(); } else { Space space; if (RandomUtils.TryPercentage(3)) { space = new Cave(); } else { space = new Room(); } //Skulle kunna lösa placering av creatures/items i metoder för att abstrahera bort det från Space-klassen. if (player.X != x || player.Y != y) { if (RandomUtils.TryPercentage(5)) { space.Monster = new Troll(); } else if (RandomUtils.TryPercentage(5)) { space.Monster = new Teacher("Håkan"); } if (RandomUtils.TryPercentage(5)) { space.Item = new Apple(); } else if (RandomUtils.TryPercentage(1)) { space.Item = new Spear(1); } } world[x, y] = space; } } } }
void UpdateToNewStoryElement() { // TODO Day view is shifted by 1 // This is stupid but no time to fix it daysText.text = dayNumber.ToString(); dayNumber += 1; daysTextInOverlay.text = string.Format(DAYS_TEXT, dayNumber.ToString()); // TODO int caughtScore = Random.Range(40, 100); if (riskAmount > caughtScore) { currentStoryElement = null; int numberOfPitfalls = story.pitfalls.Length; int pitfallIndex = Random.Range(0, numberOfPitfalls); currentPitfall = story.pitfalls[pitfallIndex]; } else { currentPitfall = null; int numberOfStoryElements = story.storyElements.Length; List <StoryElement> accessibleStoryElements = new List <StoryElement>(); // This is HORRIBLE >:( for (int i = 0; i < numberOfStoryElements; i++) { StoryElement current = story.storyElements[i]; bool isLevelAchievedHighEnough = current.prerequisites.level <= currentLevel; bool isStoryAlreadyDone = alreadyDoneStories.Contains(current.id) && current.prerequisites.doableOnce; if (isLevelAchievedHighEnough && !isStoryAlreadyDone) { if (!current.prerequisites.needsUnlock) { // If it does not need any unlock, it's okay! accessibleStoryElements.Add(current); } else { // Otherwise, element has to be present in list if (unlockedStories.Contains(current.id)) { accessibleStoryElements.Add(current); } } } } int numberOfAccessibleStoryElements = accessibleStoryElements.Count; int level = Random.Range(0, numberOfAccessibleStoryElements); currentStoryElement = accessibleStoryElements[level]; } }
public void BuildMaze(int maze Number) { string _filePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory); _filePath = Directory.GetParent(_filePath).FullName; _filePath = Directory.GetParent(Directory.GetParent(_filePath).FullName).FullName; _filePath += @"\Sokoban M3\Mazes\doolhof" + mazeNumber + ".txt"; TextReader tr = new StreamReader(_filePath); string line; List <string> list = new List <string>(); while ((line = tr.ReadLine()) != null) { list.Add(line); } char[] characters = list[0].ToArray(); Maze = new Maze(); Model.Tile[,] tiles = new Model.Tile[list.Count, characters.Length]; for (int i = 0; i < list.Count; i++) { characters = list[i].ToArray(); for (int j = 0; j < characters.Length; j++) { switch (characters[j]) { case ' ': tiles[i, j] = new EmptyTile(); break; case '.': tiles[i, j] = new Floor(); break; case '#': tiles[i, j] = new Wall(); break; case '@': tiles[i, j] = new Floor(); tiles[i, j].Entity = new Model.Forklift(); Maze.CurrentForkLift = tiles[i, j]; break; case 'x': tiles[i, j] = new Destination(); break; case 'o': tiles[i, j] = new Floor(); tiles[i, j].Entity = new Chest(); Maze.AmountOfChests++; break; case '~': tiles[i, j] = new Pitfall(); break; case '$': tiles[i, j] = new Floor(); tiles[i, j].Entity = new Worker(); Maze.CurrentWorker = tiles[i, j]; break; } if (Maze.First == null) { Maze.First = tiles[i, j]; } } } for (int i = 0; i < list.Count; i++) { for (int j = 0; j < characters.Length; j++) { if (i - 1 > -1) { tiles[i, j].Above = tiles[i - 1, j]; } if (i + 1 < list.Count) { tiles[i, j].Below = tiles[i + 1, j]; } if (j - 1 > -1) { tiles[i, j].Left = tiles[i, j - 1]; } if (j + 1 < characters.Length) { tiles[i, j].Right = tiles[i, j + 1]; } } } }