summaryrefslogtreecommitdiffstats
path: root/src/Window.cpp
diff options
context:
space:
mode:
authorLaG1924 <12997935+LaG1924@users.noreply.github.com>2017-09-16 17:48:19 +0200
committerLaG1924 <12997935+LaG1924@users.noreply.github.com>2018-01-13 03:39:31 +0100
commit892b9732751b64c2016ba476801e1fe4ed4e750f (patch)
tree99aa40953de5d61e30d47bdf345ee2cb9c3c18e1 /src/Window.cpp
parent2017-09-15 (diff)
downloadAltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar.gz
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar.bz2
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar.lz
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar.xz
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.tar.zst
AltCraft-892b9732751b64c2016ba476801e1fe4ed4e750f.zip
Diffstat (limited to 'src/Window.cpp')
-rw-r--r--src/Window.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/Window.cpp b/src/Window.cpp
index fbf9aaa..f3ad6d5 100644
--- a/src/Window.cpp
+++ b/src/Window.cpp
@@ -1,6 +1,32 @@
#include "Window.hpp"
-void Window::MakeClick(short ClickedSlot, bool Lmb) {
- PacketClickWindow packet(WindowId, ClickedSlot, Lmb? 0 : 1, actions++, 0, slots[ClickedSlot]);
- this->pendingTransactions.push(packet);
+void Window::MakeClick(short ClickedSlot, bool Lmb, bool dropMode) {
+ if (!dropMode) {
+ PacketClickWindow packet(WindowId, ClickedSlot, Lmb ? 0 : 1, actions++, 0, slots[ClickedSlot]);
+ this->pendingTransactions.push(packet);
+ std::swap(slots[ClickedSlot], handSlot);
+ transactions.push_back(std::make_pair(actions, std::make_pair(ClickedSlot, -1)));
+ } else {
+ PacketClickWindow packet(WindowId, ClickedSlot, Lmb ? 0 : 1, actions++, 0, SlotData());
+ this->pendingTransactions.push(packet);
+ transactions.push_back(std::make_pair(actions, std::make_pair(ClickedSlot, -1)));
+ }
+}
+
+void Window::ConfirmTransaction(PacketConfirmTransactionCB packet) {
+ if (!packet.Accepted) {
+ throw std::logic_error("Transaction failed");
+ }
+ /*auto toDelete = transactions.begin();
+ for (auto it = transactions.begin(); it != transactions.end(); ++it) {
+ if (it->first == packet.ActionNumber) {
+ toDelete = it;
+ if (!packet.Accepted) {
+ std::swap(slots[std::get<0>(it->second)], slots[std::get<1>(it->second)]);
+ }
+ break;
+ }
+ }
+ if (toDelete->first == packet.ActionNumber)
+ transactions.erase(toDelete);*/
} \ No newline at end of file