diff options
author | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-09-16 17:48:19 +0200 |
---|---|---|
committer | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2018-01-13 03:39:31 +0100 |
commit | 892b9732751b64c2016ba476801e1fe4ed4e750f (patch) | |
tree | 99aa40953de5d61e30d47bdf345ee2cb9c3c18e1 /src/Window.cpp | |
parent | 2017-09-15 (diff) | |
download | AltCraft-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.cpp | 32 |
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 |