From 215aabdc5f3e5b4253cf216f2cd509a2e3133949 Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Wed, 1 Jan 2025 21:38:48 -0600 Subject: [PATCH] arena circle addition --- src/engine/gameManager/ArenaManager.java | 18 ++++++++++++++++++ src/engine/objects/Arena.java | 1 + 2 files changed, 19 insertions(+) diff --git a/src/engine/gameManager/ArenaManager.java b/src/engine/gameManager/ArenaManager.java index 329e861c..40ab6030 100644 --- a/src/engine/gameManager/ArenaManager.java +++ b/src/engine/gameManager/ArenaManager.java @@ -3,6 +3,7 @@ package engine.gameManager; import engine.Enum; import engine.InterestManagement.WorldGrid; import engine.exception.MsgSendException; +import engine.math.Vector3f; import engine.math.Vector3fImmutable; import engine.objects.*; import engine.server.MBServerStatics; @@ -56,14 +57,23 @@ public class ArenaManager { private static void createArena() { if (playerQueue.size() > 1) { + Collections.shuffle(playerQueue); Arena newArena = new Arena(); //set starting time newArena.startTime = System.currentTimeMillis(); + //decide an arena location newArena.loc = selectRandomArenaLocation(); + //create building for arena + //arena mesh uuid = 423600 + Vector3f rot = new Vector3f(0.0f, 0.0f, 0.0f); + float w = 1f; + Building building = DbManager.BuildingQueries.CREATE_BUILDING(992, 0, "Duelling Arena", 423600, newArena.loc, 3.0f, 0, Enum.ProtectionState.PROTECTED, 0, 1, null, 423600, w, rot.y); + newArena.arenaCircle = building; + // Assign players to the arena newArena.player1 = playerQueue.remove(0); newArena.player2 = playerQueue.remove(0); @@ -90,6 +100,14 @@ public class ArenaManager { Zone sdr = ZoneManager.getZoneByUUID(656); MovementManager.translocate(arena.player1, Vector3fImmutable.getRandomPointOnCircle(sdr.getLoc(),50f), null); MovementManager.translocate(arena.player2, Vector3fImmutable.getRandomPointOnCircle(sdr.getLoc(),50f), null); + + Building building = arena.arenaCircle; + Zone zone = building.getParentZone(); + DbManager.BuildingQueries.DELETE_FROM_DATABASE(building); + DbManager.removeFromCache(building); + zone.zoneBuildingSet.remove(building); + WorldGrid.RemoveWorldObject(building); + activeArenas.remove(arena); if(winner != null){ diff --git a/src/engine/objects/Arena.java b/src/engine/objects/Arena.java index c6bde540..f4d0eeac 100644 --- a/src/engine/objects/Arena.java +++ b/src/engine/objects/Arena.java @@ -14,6 +14,7 @@ public class Arena { public PlayerCharacter player2; public Long startTime; public Vector3fImmutable loc; + public Building arenaCircle; public Arena(){