|
1 | 1 | import { Client as ColyseusClient, Room, logger } from '@colyseus/core';
|
| 2 | +import { Prisma } from '@prisma/client'; |
2 | 3 | import {
|
3 | 4 | FightMgt,
|
4 | 5 | INTERACTIVE_OBJECTS_MAP,
|
@@ -688,45 +689,47 @@ export class MapRoom extends Room<MapState> {
|
688 | 689 | `[MapRoom][${this.name}] Client '${client.sessionId}' (${player.name}) left the room`,
|
689 | 690 | );
|
690 | 691 |
|
691 |
| - await prisma.character.update({ |
692 |
| - where: { name: player.name }, |
693 |
| - data: { |
694 |
| - map: this.name, |
695 |
| - profession: player.profession, |
696 |
| - spritesheet: player.spritesheet, |
697 |
| - pos_x: player.x, |
698 |
| - pos_y: player.y, |
699 |
| - direction: player.direction, |
700 |
| - talents: TalentMgt.serializeTalents(player.talents), |
701 |
| - talentsPoints: player.talentsPoints, |
702 |
| - baseStatistics: StatisticMgt.serializeStatistics(player.getBaseStatistics()), |
703 |
| - baseStatisticsPoints: player.baseStatisticsPoints, |
704 |
| - experience: player.experience, |
705 |
| - health: player.health, |
706 |
| - teleporters: StringMgt.serializeTeleporters(player.teleporters), |
707 |
| - money: player.money, |
708 |
| - gachix: player.gachix, |
709 |
| - items: { |
710 |
| - deleteMany: player.itemsToRemove.map((id) => ({ id })), |
711 |
| - updateMany: player.items.map((item) => ({ |
712 |
| - where: { id: item.id }, |
713 |
| - data: { |
714 |
| - isUnique: item.isUnique, |
715 |
| - type: item.type, |
716 |
| - level: item.level, |
717 |
| - requiredLevel: item.requiredLevel, |
718 |
| - baseAffixes: ItemMgt.serializeAffixes(item.baseAffixes), |
719 |
| - prefixes: ItemMgt.serializeAffixes(item.prefixes), |
720 |
| - suffixes: ItemMgt.serializeAffixes(item.suffixes), |
721 |
| - damages: ItemMgt.serializeDamages(item.damages), |
722 |
| - position: item.position, |
723 |
| - }, |
724 |
| - })), |
725 |
| - }, |
| 692 | + const data: Prisma.CharacterUpdateInput = { |
| 693 | + map: this.name, |
| 694 | + profession: player.profession, |
| 695 | + spritesheet: player.spritesheet, |
| 696 | + pos_x: player.x, |
| 697 | + pos_y: player.y, |
| 698 | + direction: player.direction, |
| 699 | + talents: TalentMgt.serializeTalents(player.talents), |
| 700 | + talentsPoints: player.talentsPoints, |
| 701 | + baseStatistics: StatisticMgt.serializeStatistics(player.getBaseStatistics()), |
| 702 | + baseStatisticsPoints: player.baseStatisticsPoints, |
| 703 | + experience: player.experience, |
| 704 | + health: player.health, |
| 705 | + teleporters: StringMgt.serializeTeleporters(player.teleporters), |
| 706 | + money: player.money, |
| 707 | + gachix: player.gachix, |
| 708 | + items: { |
| 709 | + deleteMany: player.itemsToRemove.map((id) => ({ id })), |
| 710 | + updateMany: player.items.map((item) => ({ |
| 711 | + where: { id: item.id }, |
| 712 | + data: { |
| 713 | + isUnique: item.isUnique, |
| 714 | + type: item.type, |
| 715 | + level: item.level, |
| 716 | + requiredLevel: item.requiredLevel, |
| 717 | + baseAffixes: ItemMgt.serializeAffixes(item.baseAffixes), |
| 718 | + prefixes: ItemMgt.serializeAffixes(item.prefixes), |
| 719 | + suffixes: ItemMgt.serializeAffixes(item.suffixes), |
| 720 | + damages: ItemMgt.serializeDamages(item.damages), |
| 721 | + position: item.position, |
| 722 | + }, |
| 723 | + })), |
726 | 724 | },
|
727 |
| - }); |
| 725 | + }; |
728 | 726 |
|
729 | 727 | this.state.removePlayer(client.sessionId);
|
| 728 | + |
| 729 | + await prisma.character.update({ |
| 730 | + where: { name: player.name }, |
| 731 | + data, |
| 732 | + }); |
730 | 733 | }
|
731 | 734 |
|
732 | 735 | onDispose() {
|
|
0 commit comments