@ -9,8 +9,8 @@
@@ -9,8 +9,8 @@
package engine.InterestManagement ;
/ * This class is the main interface for Magicbane ' s
* Interest management facilities .
* /
* Interest management facilities .
* /
import engine.Enum ;
import engine.math.Vector3fImmutable ;
@ -24,15 +24,26 @@ import engine.server.MBServerStatics;
@@ -24,15 +24,26 @@ import engine.server.MBServerStatics;
import engine.util.MapLoader ;
import org.pmw.tinylog.Logger ;
import java.awt.* ;
import java.util.HashMap ;
import static engine.objects.Realm.getRealm ;
public class RealmMap {
public enum RealmMap {
REALM_MAP ;
// Spatial hashmap. Used for detecting which Realm
// a player is currently in. .
// Spatial hashmap. Used for determin ing which Realm
// a player is currently located with in.
public static int [ ] [ ] _realmImageMap ;
private static final HashMap < Integer , Integer > _rgbToIDMap = new HashMap < > ( ) ;
public static int getRealmIDByRGB ( int realmRGB ) {
return _rgbToIDMap . get ( realmRGB ) ;
}
public static int getRealmIDAtLocation ( Vector3fImmutable pos ) {
@ -49,6 +60,10 @@ public class RealmMap {
@@ -49,6 +60,10 @@ public class RealmMap {
return RealmMap . _realmImageMap [ xBuckets ] [ yBuckets ] ;
}
public static void addToColorMap ( Color color , int realmID ) {
_rgbToIDMap . put ( color . getRGB ( ) , realmID ) ;
}
public static Realm getRealmForCity ( City city ) {
Realm outRealm = null ;
outRealm = city . getRealm ( ) ;
@ -61,28 +76,28 @@ public class RealmMap {
@@ -61,28 +76,28 @@ public class RealmMap {
}
public static void updateRealm ( PlayerCharacter player ) {
public static void updateRealm ( PlayerCharacter player ) {
int realmID = RealmMap . getRealmIDAtLocation ( player . getLoc ( ) ) ;
if ( realmID ! = player . getLastRealmID ( ) ) {
if ( realmID ! = player . getLastRealmID ( ) ) {
player . setLastRealmID ( realmID ) ;
Realm realm = Realm . getRealm ( realmID ) ;
if ( realm ! = null ) {
if ( realm . isRuled ( ) ) {
if ( realm ! = null ) {
if ( realm . isRuled ( ) ) {
City city = realm . getRulingCity ( ) ;
if ( city ! = null ) {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( ( PlayerCharacter ) realm . getRulingCity ( ) . getOwner ( ) , realm ) ;
if ( city ! = null ) {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( ( PlayerCharacter ) realm . getRulingCity ( ) . getOwner ( ) , realm ) ;
Dispatch dispatch = Dispatch . borrow ( player , tcm ) ;
DispatchMessage . dispatchMsgDispatch ( dispatch , Enum . DispatchChannel . PRIMARY ) ;
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( null , realm ) ;
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( null , realm ) ;
Dispatch dispatch = Dispatch . borrow ( player , tcm ) ;
DispatchMessage . dispatchMsgDispatch ( dispatch , Enum . DispatchChannel . PRIMARY ) ;
}
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( null , realm ) ;
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage ( null , realm ) ;
Dispatch dispatch = Dispatch . borrow ( player , tcm ) ;
DispatchMessage . dispatchMsgDispatch ( dispatch , Enum . DispatchChannel . PRIMARY ) ;
}