diff --git a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java index 140dcbe..d8180be 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/ArkOneController.java @@ -153,6 +153,9 @@ public class ArkOneController implements TcpHandler { case "gml": responses.add(trunkPlugin.GetMoodsList()); break; + case "gcl": + responses.add(trunkPlugin.GetCleaningsList()); + break; case "gutc": responses.add(trunkPlugin.GetUserTransactionsCount(connection)); break; @@ -171,6 +174,9 @@ public class ArkOneController implements TcpHandler { case "bm": responses.add(trunkPlugin.BuyMood(commandInfo, connection)); break; + case "bc": + responses.add(trunkPlugin.BuyCleaning(commandInfo, connection)); + break; // Catch Unhandled Commands default: diff --git a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/Plugins/TrunkPlugin.java b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/Plugins/TrunkPlugin.java index faf7894..2dc2d14 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/Plugins/TrunkPlugin.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/ArkOne/Plugins/TrunkPlugin.java @@ -2,10 +2,7 @@ package com.icedberries.UBFunkeysServer.ArkOne.Plugins; import com.icedberries.UBFunkeysServer.ArkOne.ArkOneParser; import com.icedberries.UBFunkeysServer.DatabaseSetup.TrunkData; -import com.icedberries.UBFunkeysServer.domain.Familiar; -import com.icedberries.UBFunkeysServer.domain.Jammer; -import com.icedberries.UBFunkeysServer.domain.Mood; -import com.icedberries.UBFunkeysServer.domain.User; +import com.icedberries.UBFunkeysServer.domain.*; import com.icedberries.UBFunkeysServer.service.*; import javagrinko.spring.tcp.Connection; import javagrinko.spring.tcp.Server; @@ -37,7 +34,8 @@ public class TrunkPlugin { private enum PurchaseType { FAMILIAR, JAMMER, - MOOD + MOOD, + CLEANING } @Autowired @@ -55,6 +53,9 @@ public class TrunkPlugin { @Autowired MoodService moodService; + @Autowired + CleaningService cleaningService; + @Autowired UserService userService; @@ -132,7 +133,6 @@ public class TrunkPlugin { } public String GetFamiliarsList() { - // Get all the familiars List familiars = familiarService.findAll(); @@ -155,7 +155,6 @@ public class TrunkPlugin { } public String GetJammersList() { - // Get all the jammers List jammers = jammerService.findAll(); @@ -177,7 +176,6 @@ public class TrunkPlugin { } public String GetMoodsList() { - // Get all the moods List moods = moodService.findAll(); @@ -198,6 +196,27 @@ public class TrunkPlugin { return stringBuilder.toString(); } + public String GetCleaningsList() { + // Get all the cleaning stations + List cleanings = cleaningService.findAll(); + + // Start to build the response + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(""); + + // Iterate over the items in the moods list to add them to the response + for (Cleaning cleaning : cleanings) { + stringBuilder.append(""); + } + + // Add closing tags + stringBuilder.append(""); + + // Return the list + return stringBuilder.toString(); + } + public String GetUserTransactionsCount(Connection connection) { User user = server.getConnectedUsers().get(connection.getClientIdentifier()); @@ -282,6 +301,14 @@ public class TrunkPlugin { return ""; } + public String BuyCleaning(Element element, Connection connection) { + // Save this transaction to the DB + PostTransaction(connection, PurchaseType.CLEANING, Integer.valueOf(element.getAttribute("id"))); + + // We always return LOOT_BALANCE so players are never charged for these items + return ""; + } + public void PostTransaction(Connection connection, PurchaseType purchaseType, Integer itemId) { User user = server.getConnectedUsers().get(connection.getClientIdentifier()); @@ -302,6 +329,9 @@ public class TrunkPlugin { case MOOD: cost = moodService.getCostById(itemId); break; + case CLEANING: + cost = cleaningService.getCostById(itemId); + break; } // Get the rid of the item @@ -316,6 +346,9 @@ public class TrunkPlugin { case MOOD: rid = moodService.getRidById(itemId); break; + case CLEANING: + rid = cleaningService.getRidById(itemId); + break; } // Create a transaction xml tag diff --git a/src/main/java/com/icedberries/UBFunkeysServer/DatabaseSetup/TrunkData.java b/src/main/java/com/icedberries/UBFunkeysServer/DatabaseSetup/TrunkData.java index eefcb7f..cce3470 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/DatabaseSetup/TrunkData.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/DatabaseSetup/TrunkData.java @@ -1,8 +1,10 @@ package com.icedberries.UBFunkeysServer.DatabaseSetup; +import com.icedberries.UBFunkeysServer.domain.Cleaning; import com.icedberries.UBFunkeysServer.domain.Familiar; import com.icedberries.UBFunkeysServer.domain.Jammer; import com.icedberries.UBFunkeysServer.domain.Mood; +import com.icedberries.UBFunkeysServer.service.CleaningService; import com.icedberries.UBFunkeysServer.service.FamiliarService; import com.icedberries.UBFunkeysServer.service.JammerService; import com.icedberries.UBFunkeysServer.service.MoodService; @@ -26,6 +28,9 @@ public class TrunkData { @Autowired MoodService moodService; + @Autowired + CleaningService cleaningService; + // Familiars private final List familiarIds = Arrays.asList("80036a", "80035a", "80034a", "80033a", "80032a", "80031a", "80030a", "80029a", "80028a", "80027a", "80026a", "80025a", "80017a", "80016a", "80015a", "80007a", "80006a", @@ -44,6 +49,10 @@ public class TrunkData { "80022a", "80021a", "80020a", "80019a", "80018a", "80013a", "80012a", "80011a", "80010a", "80009a", "80008a"); private final Integer MOOD_COST = 100; + // Cleanings + private final List cleaningIds = Arrays.asList("70021a"); + private final Integer CLEANING_COST = 100; + @EventListener(ApplicationReadyEvent.class) public void insertFamiliars() { // Iterate over the familiar ids @@ -124,4 +133,30 @@ public class TrunkData { idNum++; } } + + @EventListener(ApplicationReadyEvent.class) + public void insertCleanings() { + // Iterate over the cleaning ids + int idNum = 0; + for (String id : cleaningIds) { + // Attempt to get from the DB + Cleaning cleaning = cleaningService.findByRid(id).orElse(null); + + // Only insert if the data is null + if (cleaning == null) { + // Build a new mood to insert + Cleaning newCleaning = Cleaning.builder() + .id(idNum) + .rid(id) + .cost(MOOD_COST) + .build(); + + // Save it to the db + cleaningService.save(newCleaning); + } + + // Increment id + idNum++; + } + } } diff --git a/src/main/java/com/icedberries/UBFunkeysServer/domain/Cleaning.java b/src/main/java/com/icedberries/UBFunkeysServer/domain/Cleaning.java new file mode 100644 index 0000000..90a273b --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/domain/Cleaning.java @@ -0,0 +1,26 @@ +package com.icedberries.UBFunkeysServer.domain; + +import lombok.*; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "Cleanings") +public class Cleaning { + + // DB ID + @Id + private Integer id; + + // Item ID + private String rid; + + private Integer cost; +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/domain/Mood.java b/src/main/java/com/icedberries/UBFunkeysServer/domain/Mood.java index b2b06d7..61268e9 100644 --- a/src/main/java/com/icedberries/UBFunkeysServer/domain/Mood.java +++ b/src/main/java/com/icedberries/UBFunkeysServer/domain/Mood.java @@ -23,6 +23,4 @@ public class Mood { private String rid; private Integer cost; - - //private Integer qty; } diff --git a/src/main/java/com/icedberries/UBFunkeysServer/repository/CleaningRepository.java b/src/main/java/com/icedberries/UBFunkeysServer/repository/CleaningRepository.java new file mode 100644 index 0000000..494bdec --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/repository/CleaningRepository.java @@ -0,0 +1,25 @@ +package com.icedberries.UBFunkeysServer.repository; + +import com.icedberries.UBFunkeysServer.domain.Cleaning; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface CleaningRepository extends CrudRepository { + + List findAll(); + + @Query("select cleaning from Cleaning cleaning where cleaning.rid = :rid") + Optional findByRid(@Param("rid") String rid); + + @Query("select cleaning.cost from Cleaning cleaning where cleaning.id = :id") + Integer getCostById(@Param("id") Integer id); + + @Query("select cleaning.rid from Cleaning cleaning where cleaning.id = :id") + String getRidById(@Param("id") Integer id); +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/CleaningService.java b/src/main/java/com/icedberries/UBFunkeysServer/service/CleaningService.java new file mode 100644 index 0000000..66a9c96 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/CleaningService.java @@ -0,0 +1,19 @@ +package com.icedberries.UBFunkeysServer.service; + +import com.icedberries.UBFunkeysServer.domain.Cleaning; + +import java.util.List; +import java.util.Optional; + +public interface CleaningService { + + List findAll(); + + Cleaning save(Cleaning cleaning); + + Optional findByRid(String rid); + + Integer getCostById(Integer id); + + String getRidById(Integer id); +} diff --git a/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CleaningServiceImpl.java b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CleaningServiceImpl.java new file mode 100644 index 0000000..43559b6 --- /dev/null +++ b/src/main/java/com/icedberries/UBFunkeysServer/service/impl/CleaningServiceImpl.java @@ -0,0 +1,41 @@ +package com.icedberries.UBFunkeysServer.service.impl; + +import com.icedberries.UBFunkeysServer.domain.Cleaning; +import com.icedberries.UBFunkeysServer.repository.CleaningRepository; +import com.icedberries.UBFunkeysServer.service.CleaningService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class CleaningServiceImpl implements CleaningService { + + private final CleaningRepository cleaningRepository; + + public List findAll() { + return cleaningRepository.findAll(); + } + + @Override + public Cleaning save(Cleaning cleaning) { + return cleaningRepository.save(cleaning); + } + + @Override + public Optional findByRid(String rid) { + return cleaningRepository.findByRid(rid); + } + + @Override + public Integer getCostById(Integer id) { + return cleaningRepository.getCostById(id); + } + + @Override + public String getRidById(Integer id) { + return cleaningRepository.getRidById(id); + } +}