From 892b9732751b64c2016ba476801e1fe4ed4e750f Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Sat, 16 Sep 2017 20:48:19 +0500 Subject: 2017-09-16 --- src/Window.cpp | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'src/Window.cpp') 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 -- cgit v1.2.3