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.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							5.4 KiB
						
					
					
				| // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ . | |
| // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· | |
| // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ | |
| // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ | |
| // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀ | |
| //      Magicbane Emulator Project © 2013 - 2022 | |
| //                www.magicbane.com | |
|  | |
|  | |
| package engine.db.handlers; | |
|  | |
| import engine.Enum.ProtectionState; | |
| import engine.gameManager.DbManager; | |
| import engine.math.Vector3fImmutable; | |
| import engine.objects.AbstractGameObject; | |
| import engine.objects.Building; | |
| import engine.objects.Shrine; | |
| import org.joda.time.DateTime; | |
| import org.pmw.tinylog.Logger; | |
|  | |
| import java.net.UnknownHostException; | |
| import java.sql.ResultSet; | |
| import java.sql.SQLException; | |
| import java.util.ArrayList; | |
|  | |
| public class dbShrineHandler extends dbHandlerBase { | |
|  | |
|     public dbShrineHandler() { | |
|         this.localClass = Shrine.class; | |
|         this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName()); | |
|     } | |
|  | |
|     public ArrayList<AbstractGameObject> CREATE_SHRINE( int parentZoneID, int OwnerUUID, String name, int meshUUID, | |
|             Vector3fImmutable location, float meshScale, int currentHP, | |
|             ProtectionState protectionState, int currentGold, int rank, | |
|             DateTime upgradeDate, int blueprintUUID, float w, float rotY, String shrineType) { | |
|  | |
|         prepareCallable("CALL `shrine_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?, ?,?);"); | |
|  | |
|        | |
|         setInt(1, parentZoneID); | |
|         setInt(2, OwnerUUID); | |
|         setString(3, name); | |
|         setInt(4, meshUUID); | |
|         setFloat(5, location.x); | |
|         setFloat(6, location.y); | |
|         setFloat(7, location.z); | |
|         setFloat(8, meshScale); | |
|         setInt(9, currentHP); | |
|         setString(10, protectionState.name()); | |
|         setInt(11, currentGold); | |
|         setInt(12, rank); | |
|  | |
|         if (upgradeDate != null) { | |
|             setTimeStamp(13, upgradeDate.getMillis()); | |
|         } else { | |
|             setNULL(13, java.sql.Types.DATE); | |
|         } | |
|  | |
|         setInt(14, blueprintUUID); | |
|         setFloat(15, w); | |
|         setFloat(16, rotY); | |
|         setString(17, shrineType); | |
|  | |
|         ArrayList<AbstractGameObject> list = new ArrayList<>(); | |
|         //System.out.println(this.cs.get().toString()); | |
|         try { | |
|             boolean work = execute(); | |
|             if (work) { | |
|                 ResultSet rs = this.cs.get().getResultSet(); | |
|                 while (rs.next()) { | |
|                     addObject(list, rs); | |
|                 } | |
|                 rs.close(); | |
|             } else { | |
|                 Logger.info("Shrine Creation Failed: " + this.cs.get().toString()); | |
|                 return list; //city creation failure | |
|             } | |
|             while (this.cs.get().getMoreResults()) { | |
|                 ResultSet rs = this.cs.get().getResultSet(); | |
|                 while (rs.next()) { | |
|                     addObject(list, rs); | |
|                 } | |
|                 rs.close(); | |
|             } | |
|         } catch (SQLException e) { | |
|             Logger.info("Shrine Creation Failed, SQLException: " + this.cs.get().toString() + e.toString()); | |
|             return list; //city creation failure | |
|         } catch (UnknownHostException e) { | |
|             Logger.info("Shrine Creation Failed, UnknownHostException: " + this.cs.get().toString()); | |
|             return list; //city creation failure | |
|         } finally { | |
|             closeCallable(); | |
|         } | |
|         return list; | |
|  | |
|     } | |
|  | |
|     public boolean updateFavors(Shrine shrine, int amount, int oldAmount) { | |
|  | |
|         prepareCallable("UPDATE `obj_shrine` SET `shrine_favors`=? WHERE `UID` = ? AND `shrine_favors` = ?"); | |
|         setInt(1, amount); | |
|         setLong(2, (long) shrine.getObjectUUID()); | |
|         setInt(3, oldAmount); | |
|         return (executeUpdate() != 0); | |
|     } | |
|  | |
|     public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException, UnknownHostException { | |
|         String type = rs.getString("type"); | |
|         switch (type) { | |
|             case "building": | |
|                 Building building = new Building(rs); | |
|                 DbManager.addToCache(building); | |
|                 list.add(building); | |
|                 break; | |
|             case "shrine": | |
|                 Shrine shrine = new Shrine(rs); | |
|                 DbManager.addToCache(shrine); | |
|                 list.add(shrine); | |
|                 break; | |
|         } | |
|     } | |
|  | |
|     public void LOAD_ALL_SHRINES() { | |
|  | |
|         Shrine thisShrine; | |
|  | |
|         prepareCallable("SELECT `obj_shrine`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_shrine` ON `object`.`UID` = `obj_shrine`.`UID` WHERE `object`.`type` = 'shrine';"); | |
|  | |
|         try { | |
|             ResultSet rs = executeQuery(); | |
|  | |
|             //shrines cached in rs for easy cache on creation. | |
|             while (rs.next()) { | |
|                 thisShrine = new Shrine(rs); | |
|                 thisShrine.getShrineType().addShrineToServerList(thisShrine); | |
|             } | |
|  | |
|         } catch (SQLException e) { | |
|             Logger.error( e.getErrorCode() + ' ' + e.getMessage(), e); | |
|         } finally { | |
|             closeCallable(); | |
|         } | |
|  | |
|     } | |
|  | |
| }
 | |
| 
 |