Teleport enemy to random room item
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user