Fixed teleport enemies bug (swapped Y and Z values....)
This commit is contained in:
@@ -215,7 +215,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
var spawnPointsGodotCollection = new Godot.Collections.Array<Marker3D>(spawnPoints);
|
||||
var randomSpawnPoint = spawnPointsGodotCollection.PickRandom();
|
||||
|
||||
GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, 0, randomSpawnPoint.GlobalPosition.Y);
|
||||
GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, GlobalPosition.Y, randomSpawnPoint.GlobalPosition.Z);
|
||||
_previousPosition = GlobalPosition;
|
||||
|
||||
if (this is IHavePatrolBehavior patrolEnemy)
|
||||
|
||||
@@ -536,7 +536,7 @@ public partial class Game : Node3D, IGame
|
||||
switch (effectItem.UsableItemTag)
|
||||
{
|
||||
case UsableItemTag.TeleportAllEnemiesToRoom:
|
||||
_effectService.TeleportEnemiesToCurrentRoom();
|
||||
_effectService.TeleportEnemiesToCurrentRoom(GetTree().GetNodesInGroup("enemy").OfType<IEnemy>().ToList());
|
||||
GameRepo.CloseInventory();
|
||||
_player.PlaySpellFX(SpellFXEnum.DivinityRecall);
|
||||
SfxDatabase.Instance.Play(SoundEffect.RecallEnemies);
|
||||
|
||||
@@ -20,25 +20,15 @@ public class EffectService
|
||||
_map = map;
|
||||
}
|
||||
|
||||
public void TeleportEnemiesToCurrentRoom()
|
||||
public void TeleportEnemiesToCurrentRoom(List<IEnemy> enemyList)
|
||||
{
|
||||
var currentFloor = _game.CurrentFloor;
|
||||
var rooms = currentFloor.Rooms;
|
||||
var currentRoom = _map.GetPlayersCurrentRoom();
|
||||
|
||||
if (currentRoom is not MonsterRoom)
|
||||
return;
|
||||
|
||||
var validRooms = rooms.OfType<MonsterRoom>().ToList();
|
||||
if (currentRoom is MonsterRoom monsterRoom)
|
||||
validRooms.Remove(monsterRoom);
|
||||
|
||||
var currentMonsterRoom = (MonsterRoom)currentRoom;
|
||||
|
||||
var enemyList = validRooms.SelectMany(x => x.GetEnemiesInCurrentRoom()).OfType<Enemy>();
|
||||
|
||||
foreach (var enemy in enemyList)
|
||||
enemy.MoveEnemyToNewRoom(currentMonsterRoom);
|
||||
if (currentRoom is MonsterRoom currentMonsterRoom)
|
||||
{
|
||||
foreach (var enemy in enemyList)
|
||||
enemy.MoveEnemyToNewRoom(currentMonsterRoom);
|
||||
}
|
||||
}
|
||||
|
||||
public void KillHalfEnemiesInRoom()
|
||||
@@ -48,7 +38,7 @@ public class EffectService
|
||||
return;
|
||||
|
||||
var currentMonsterRoom = (MonsterRoom)currentRoom;
|
||||
var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType<Enemy>().ToList();
|
||||
var enemyList = currentMonsterRoom.GetEnemiesInCurrentRoom().OfType<IEnemy>().ToList();
|
||||
var enemiesToKill = enemyList.Count / 2;
|
||||
for (var i = 0; i < enemiesToKill; i++)
|
||||
enemyList[i].Die();
|
||||
@@ -61,7 +51,7 @@ public class EffectService
|
||||
if (currentRoom is not MonsterRoom)
|
||||
return;
|
||||
|
||||
var currentEnemies = currentRoom.EnemiesInRoom.OfType<Enemy>().ToList();
|
||||
var currentEnemies = currentRoom.EnemiesInRoom.OfType<IEnemy>().ToList();
|
||||
foreach (var enemy in currentEnemies)
|
||||
{
|
||||
enemy.OnMorph();
|
||||
|
||||
Reference in New Issue
Block a user