You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							117 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							117 lines
						
					
					
						
							3.1 KiB
						
					
					
				| package engine.objects; | |
|  | |
| import engine.Enum; | |
| import engine.gameManager.DbManager; | |
| import engine.net.ByteBufferWriter; | |
|  | |
| import java.util.ArrayList; | |
| import java.util.HashMap; | |
|  | |
| /* Runegates are tied to particular buildings at | |
|  * bootstrap derived from the Portal creation. | |
|  * This is only to enable the toggling of effect | |
|  * bits when traveler is used. | |
|  */ | |
|  | |
| public class Runegate { | |
|  | |
|     // Runegate class Instance variables | |
|     public static HashMap<Integer, Runegate> _runegates = new HashMap<>(); | |
|  | |
|     public Portal[] _portals; | |
|     public Building gateBuilding; | |
|  | |
|     private Runegate(Building gateBuilding) { | |
|  | |
|         this._portals = new Portal[8]; | |
|         this.gateBuilding = gateBuilding; | |
|  | |
|         // Load portals for this runegate portals from the database | |
|  | |
|         configurePortals(); | |
|  | |
|         // Chaos, Khar and Oblivion are on by default | |
|  | |
|         _portals[Enum.PortalType.CHAOS.ordinal()].activate(false); | |
|         _portals[Enum.PortalType.OBLIV.ordinal()].activate(false); | |
|         _portals[Enum.PortalType.MERCHANT.ordinal()].activate(false); | |
|  | |
|     } | |
|  | |
|     public static void loadAllRunegates() { | |
|  | |
|         ArrayList<Integer> gateList; | |
|  | |
|         gateList = DbManager.RunegateQueries.GET_RUNEGATE_LIST(); | |
|  | |
|         for (int gateID : gateList) { | |
|  | |
|             Building gateBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, gateID); | |
|  | |
|             Runegate runegate = new Runegate(gateBuilding); | |
|             _runegates.put(gateID, runegate); | |
|         } | |
|  | |
|     } | |
|  | |
|     public static ArrayList<String> GetAllOpenGateIDStrings() { | |
|         ArrayList<String> openGateIDStrings = new ArrayList<>(); | |
|  | |
|         openGateIDStrings.add("TRA-003"); | |
|         openGateIDStrings.add("TRA-004"); | |
|         openGateIDStrings.add("TRA-005"); | |
|         openGateIDStrings.add("TRA-006"); | |
|         openGateIDStrings.add("TRA-007"); | |
|         openGateIDStrings.add("TRA-008"); | |
|         openGateIDStrings.add("TRA-009"); | |
|         openGateIDStrings.add("TRA-010"); | |
|         return openGateIDStrings; | |
|     } | |
|  | |
|     public void activatePortal(Enum.PortalType portalType) { | |
|  | |
|         this._portals[portalType.ordinal()].activate(true); | |
|  | |
|     } | |
|  | |
|     public void deactivatePortal(Enum.PortalType portalType) { | |
|  | |
|         this._portals[portalType.ordinal()].deactivate(); | |
|  | |
|     } | |
|  | |
|     public Portal[] getPortals() { | |
|  | |
|         return this._portals; | |
|  | |
|     } | |
|  | |
|     public void collidePortals() { | |
|  | |
|         for (Portal portal : this.getPortals()) { | |
|  | |
|             if (portal.isActive()) | |
|                 portal.collide(); | |
|         } | |
|     } | |
|  | |
|     public void configurePortals() { | |
|  | |
|         ArrayList<Portal> portalList = DbManager.RunegateQueries.GET_PORTAL_LIST(this.gateBuilding.getObjectUUID()); | |
|  | |
|         for (Portal portal : portalList) { | |
|             this._portals[portal.portalType.ordinal()] = portal; | |
|         } | |
|     } | |
|  | |
|     public void _serializeForEnterWorld(ByteBufferWriter writer) { | |
|  | |
|         writer.putInt(gateBuilding.getObjectType().ordinal()); | |
|         writer.putInt(gateBuilding.getObjectUUID()); | |
|         writer.putString(gateBuilding.getParentZone().getName()); | |
|         writer.putFloat(gateBuilding.getLoc().getLat()); | |
|         writer.putFloat(gateBuilding.getLoc().getAlt()); | |
|         writer.putFloat(gateBuilding.getLoc().getLong()); | |
|     } | |
|  | |
| }
 | |
| 
 |