2018-07-06 15:30:00 +02:00
package com.eu.habbo.habbohotel.pets ;
import com.eu.habbo.Emulator ;
import com.eu.habbo.habbohotel.achievements.AchievementManager ;
import com.eu.habbo.habbohotel.users.Habbo ;
import com.eu.habbo.messages.ServerMessage ;
2020-05-04 22:24:09 +02:00
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
2018-07-06 15:30:00 +02:00
import java.sql.Connection ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.sql.SQLException ;
2019-05-26 20:14:53 +02:00
public class GnomePet extends Pet implements IPetLook {
2020-05-04 22:24:09 +02:00
private static final Logger LOGGER = LoggerFactory . getLogger ( GnomePet . class ) ;
2018-07-06 15:30:00 +02:00
private final String gnomeData ;
2019-05-26 20:14:53 +02:00
public GnomePet ( ResultSet set ) throws SQLException {
2018-07-06 15:30:00 +02:00
super ( set ) ;
this . gnomeData = set . getString ( " gnome_data " ) ;
}
2019-05-26 20:14:53 +02:00
public GnomePet ( int type , int race , String color , String name , int userId , String gnomeData ) {
2018-07-06 15:30:00 +02:00
super ( type , race , color , name , userId ) ;
this . gnomeData = gnomeData ;
}
@Override
2019-05-26 20:14:53 +02:00
public void serialize ( ServerMessage message ) {
2018-07-06 15:30:00 +02:00
message . appendInt ( this . getId ( ) ) ;
message . appendString ( this . getName ( ) ) ;
message . appendInt ( this . petData . getType ( ) ) ;
message . appendInt ( this . race ) ;
message . appendString ( this . color ) ;
message . appendInt ( 0 ) ;
message . appendInt ( 0 ) ;
message . appendInt ( 0 ) ;
}
@Override
2019-05-26 20:14:53 +02:00
public void run ( ) {
if ( this . needsUpdate ) {
2018-07-06 15:30:00 +02:00
super . run ( ) ;
2019-05-26 20:14:53 +02:00
try ( Connection connection = Emulator . getDatabase ( ) . getDataSource ( ) . getConnection ( ) ; PreparedStatement statement = connection . prepareStatement ( " UPDATE users_pets SET gnome_data = ? WHERE id = ? LIMIT 1 " ) ) {
2018-07-06 15:30:00 +02:00
statement . setString ( 1 , this . gnomeData ) ;
statement . setInt ( 2 , this . id ) ;
statement . executeUpdate ( ) ;
2019-05-26 20:14:53 +02:00
} catch ( SQLException e ) {
2020-05-04 22:24:09 +02:00
LOGGER . error ( " Caught SQL exception " , e ) ;
2018-07-06 15:30:00 +02:00
}
}
}
@Override
2019-05-26 20:14:53 +02:00
public String getLook ( ) {
2018-07-06 15:30:00 +02:00
return this . getPetData ( ) . getType ( ) + " 0 FFFFFF " + this . gnomeData ;
}
@Override
2019-05-26 20:14:53 +02:00
public void scratched ( Habbo habbo ) {
2018-07-06 15:30:00 +02:00
super . scratched ( habbo ) ;
2019-05-26 20:14:53 +02:00
if ( this . getPetData ( ) . getType ( ) = = 26 ) {
if ( habbo ! = null ) {
2018-07-06 15:30:00 +02:00
AchievementManager . progressAchievement ( habbo , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " GnomeRespectGiver " ) ) ;
}
AchievementManager . progressAchievement ( Emulator . getGameEnvironment ( ) . getHabboManager ( ) . getHabbo ( this . getUserId ( ) ) , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " GnomeRespectReceiver " ) ) ;
2019-05-26 20:14:53 +02:00
} else if ( this . getPetData ( ) . getType ( ) = = 27 ) {
if ( habbo ! = null ) {
2018-07-06 15:30:00 +02:00
AchievementManager . progressAchievement ( habbo , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " LeprechaunRespectGiver " ) ) ;
}
AchievementManager . progressAchievement ( Emulator . getGameEnvironment ( ) . getHabboManager ( ) . getHabbo ( this . getUserId ( ) ) , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " LeprechaunRespectReceiver " ) ) ;
}
}
@Override
2019-05-26 20:14:53 +02:00
protected void levelUp ( ) {
2018-07-06 15:30:00 +02:00
super . levelUp ( ) ;
2019-05-26 20:14:53 +02:00
if ( this . getPetData ( ) . getType ( ) = = 26 ) {
2018-07-06 15:30:00 +02:00
AchievementManager . progressAchievement ( Emulator . getGameEnvironment ( ) . getHabboManager ( ) . getHabbo ( this . getUserId ( ) ) , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " GnomeLevelUp " ) ) ;
2019-05-26 20:14:53 +02:00
} else if ( this . getPetData ( ) . getType ( ) = = 27 ) {
2018-07-06 15:30:00 +02:00
AchievementManager . progressAchievement ( Emulator . getGameEnvironment ( ) . getHabboManager ( ) . getHabbo ( this . getUserId ( ) ) , Emulator . getGameEnvironment ( ) . getAchievementManager ( ) . getAchievement ( " LeprechaunLevelUp " ) ) ;
}
}
}