Add purse update chatlog message
This commit is contained in:
parent
06c5802d7a
commit
5b633de981
16 changed files with 327 additions and 16 deletions
|
|
@ -5,6 +5,7 @@ import com.pixelized.server.lwa.server.exception.BusinessException
|
|||
import com.pixelized.shared.lwa.model.inventory.Inventory
|
||||
import com.pixelized.shared.lwa.model.inventory.InventoryJson
|
||||
import com.pixelized.shared.lwa.model.inventory.factory.InventoryJsonFactory
|
||||
import com.pixelized.shared.lwa.protocol.rest.ApiPurseJson
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
|
|
@ -38,6 +39,25 @@ class InventoryService(
|
|||
?: factory.convertToJson(Inventory.empty(characterSheetId = characterSheetId))
|
||||
}
|
||||
|
||||
@Throws
|
||||
fun updatePurse(
|
||||
purse: ApiPurseJson,
|
||||
) {
|
||||
val inventory = inventory(
|
||||
characterSheetId = purse.characterSheetId
|
||||
)
|
||||
inventoryStore.save(
|
||||
inventory = inventory.copy(
|
||||
purse = inventory.purse.copy(
|
||||
gold = inventory.purse.gold + purse.gold,
|
||||
silver = inventory.purse.silver + purse.silver,
|
||||
copper = inventory.purse.copper + purse.copper,
|
||||
),
|
||||
),
|
||||
create = false,
|
||||
)
|
||||
}
|
||||
|
||||
@Throws
|
||||
fun save(
|
||||
inventoryJson: InventoryJson,
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import com.pixelized.server.lwa.server.rest.inventory.deleteInventory
|
|||
import com.pixelized.server.lwa.server.rest.inventory.deleteInventoryItem
|
||||
import com.pixelized.server.lwa.server.rest.inventory.getInventory
|
||||
import com.pixelized.server.lwa.server.rest.inventory.putInventory
|
||||
import com.pixelized.server.lwa.server.rest.inventory.putPurse
|
||||
import com.pixelized.server.lwa.server.rest.item.deleteItem
|
||||
import com.pixelized.server.lwa.server.rest.item.getItem
|
||||
import com.pixelized.server.lwa.server.rest.item.getItems
|
||||
|
|
@ -272,6 +273,10 @@ class LocalServer {
|
|||
path = "/update",
|
||||
body = engine.putInventory()
|
||||
)
|
||||
put(
|
||||
path = "/update/purse",
|
||||
body = engine.putPurse(),
|
||||
)
|
||||
delete(
|
||||
path = "/delete",
|
||||
body = engine.deleteInventory()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
package com.pixelized.server.lwa.server.rest.inventory
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.rest.ApiPurseJson
|
||||
import com.pixelized.shared.lwa.protocol.websocket.ApiSynchronisation
|
||||
import io.ktor.server.request.receive
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
||||
fun Engine.putPurse(): suspend RoutingContext.() -> Unit {
|
||||
return {
|
||||
try {
|
||||
// get the query parameter
|
||||
val form = call.receive<ApiPurseJson>()
|
||||
// get the character inventory
|
||||
inventoryService.updatePurse(
|
||||
purse = form,
|
||||
)
|
||||
// send it back to the user.
|
||||
call.respond(
|
||||
message = APIResponse.success()
|
||||
)
|
||||
webSocket.emit(
|
||||
value = ApiSynchronisation.PurseUpdate(
|
||||
timestamp = System.currentTimeMillis(),
|
||||
characterSheetId = form.characterSheetId,
|
||||
add = (form.gold * 10000 + form.silver * 100 + form.copper) >= 0,
|
||||
gold = form.gold,
|
||||
silver = form.silver,
|
||||
copper = form.copper,
|
||||
),
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue