Added Cleaning Stations to the Funkey Trunk

This commit is contained in:
Julia Butenhoff 2022-07-27 23:28:58 -05:00
parent 2bf17634f2
commit 9c735c7358
8 changed files with 193 additions and 10 deletions

View File

@ -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:

View File

@ -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<Familiar> familiars = familiarService.findAll();
@ -155,7 +155,6 @@ public class TrunkPlugin {
}
public String GetJammersList() {
// Get all the jammers
List<Jammer> jammers = jammerService.findAll();
@ -177,7 +176,6 @@ public class TrunkPlugin {
}
public String GetMoodsList() {
// Get all the moods
List<Mood> moods = moodService.findAll();
@ -198,6 +196,27 @@ public class TrunkPlugin {
return stringBuilder.toString();
}
public String GetCleaningsList() {
// Get all the cleaning stations
List<Cleaning> cleanings = cleaningService.findAll();
// Start to build the response
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<h10_0><gcl>");
// Iterate over the items in the moods list to add them to the response
for (Cleaning cleaning : cleanings) {
stringBuilder.append("<c rid=\"" + cleaning.getRid() + "\" id=\"" + cleaning.getId() + "\" c=\""
+ cleaning.getCost() + "\" q=\"1\" d=\"\" />");
}
// Add closing tags
stringBuilder.append("</gcl></h10_0>");
// 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 "<h10_0><bm id=\"" + element.getAttribute("id") + "\" b=\"" + LOOT_BALANCE + "\" /></h10_0>";
}
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 "<h10_0><bc id=\"" + element.getAttribute("id") + "\" b=\"" + LOOT_BALANCE + "\" /></h10_0>";
}
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

View File

@ -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<String> 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<String> 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++;
}
}
}

View File

@ -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;
}

View File

@ -23,6 +23,4 @@ public class Mood {
private String rid;
private Integer cost;
//private Integer qty;
}

View File

@ -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<Cleaning, Integer> {
List<Cleaning> findAll();
@Query("select cleaning from Cleaning cleaning where cleaning.rid = :rid")
Optional<Cleaning> 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);
}

View File

@ -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<Cleaning> findAll();
Cleaning save(Cleaning cleaning);
Optional<Cleaning> findByRid(String rid);
Integer getCostById(Integer id);
String getRidById(Integer id);
}

View File

@ -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<Cleaning> findAll() {
return cleaningRepository.findAll();
}
@Override
public Cleaning save(Cleaning cleaning) {
return cleaningRepository.save(cleaning);
}
@Override
public Optional<Cleaning> 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);
}
}