Teleport enemy to random room item

This commit is contained in:
2025-03-02 11:55:19 -08:00
parent 2439791d05
commit 05295f535a
20 changed files with 166 additions and 59 deletions

View File

@@ -3,6 +3,7 @@ using Chickensoft.Introspection;
using Godot;
using System;
using System.Collections.Immutable;
using System.Linq;
namespace GameJamDungeon;
@@ -74,6 +75,33 @@ public partial class ThrowableItem : Node3D, IUsableItem
ChangeAffinity();
}
public void TeleportToRandomRoom(IEnemy enemy)
{
var currentFloor = Game.CurrentFloor;
var rooms = currentFloor.Rooms;
var rng = new RandomNumberGenerator();
rng.Randomize();
var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)];
var spawnPoints = randomRoom.EnemySpawnPoints.GetChildren().OfType<Marker3D>().ToList();
var randomSpawnPoint = spawnPoints[rng.RandiRange(0, spawnPoints.Count - 1)];
enemy.SetEnemyGlobalPosition(randomSpawnPoint.GlobalPosition);
}
public void TeleportToRandomRoom(IPlayer player)
{
var currentFloor = Game.CurrentFloor;
var rooms = currentFloor.Rooms;
var rng = new RandomNumberGenerator();
rng.Randomize();
var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)];
var spawnPoint = randomRoom.PlayerSpawn;
player.TeleportPlayer(spawnPoint.GlobalPosition);
}
private void ChangeAffinity()
{
var maximumElements = Enum.GetNames(typeof(ElementType)).Length;