Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarInteractionTypes.cpp
blob: 09a0d9db9309db9717dad16ffe75e50583fac8a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "StarInteractionTypes.hpp"
#include "StarDataStreamExtra.hpp"

namespace Star {

DataStream& operator>>(DataStream& ds, InteractRequest& ir) {
  ds >> ir.sourceId;
  ds >> ir.sourcePosition;
  ds >> ir.targetId;
  ds >> ir.interactPosition;
  return ds;
}

DataStream& operator<<(DataStream& ds, InteractRequest const& ir) {
  ds << ir.sourceId;
  ds << ir.sourcePosition;
  ds << ir.targetId;
  ds << ir.interactPosition;
  return ds;
}

EnumMap<InteractActionType> const InteractActionTypeNames{{InteractActionType::None, "None"},
    {InteractActionType::OpenContainer, "OpenContainer"},
    {InteractActionType::SitDown, "SitDown"},
    {InteractActionType::OpenCraftingInterface, "OpenCraftingInterface"},
    {InteractActionType::OpenSongbookInterface, "OpenSongbookInterface"},
    {InteractActionType::OpenNpcCraftingInterface, "OpenNpcCraftingInterface"},
    {InteractActionType::OpenMerchantInterface, "OpenMerchantInterface"},
    {InteractActionType::OpenAiInterface, "OpenAiInterface"},
    {InteractActionType::OpenTeleportDialog, "OpenTeleportDialog"},
    {InteractActionType::ShowPopup, "ShowPopup"},
    {InteractActionType::ScriptPane, "ScriptPane"},
    {InteractActionType::Message, "Message"}};

InteractAction::InteractAction() {
  type = InteractActionType::None;
  entityId = NullEntityId;
}

InteractAction::InteractAction(InteractActionType type, EntityId entityId, Json data)
  : type(type), entityId(entityId), data(data) {}

InteractAction::InteractAction(String const& typeName, EntityId entityId, Json data)
  : type(InteractActionTypeNames.getLeft(typeName)), entityId(entityId), data(data) {}

InteractAction::operator bool() const {
  return type != InteractActionType::None;
}

DataStream& operator>>(DataStream& ds, InteractAction& ir) {
  ds.read(ir.type);
  ds.read(ir.entityId);
  ds.read(ir.data);
  return ds;
}

DataStream& operator<<(DataStream& ds, InteractAction const& ir) {
  ds.write(ir.type);
  ds.write(ir.entityId);
  ds.write(ir.data);
  return ds;
}

}