lsnes rr2-β24
[lsnes.git] / src / interface / controller.cpp
blob7845c205cbdabb5851a7422a8c5222fe38e7b0bf
1 #include "interface/controller.hpp"
2 #include <algorithm>
4 namespace
6 portctrl::index_triple t(unsigned p, unsigned c, unsigned i)
8 portctrl::index_triple x;
9 x.valid = true;
10 x.port = p;
11 x.controller = c;
12 x.control = i;
13 return x;
16 void push_port_indices(std::vector<portctrl::index_triple>& tab, unsigned p, portctrl::type& pt)
18 unsigned ctrls = pt.controller_info->controllers.size();
19 for(unsigned i = 0; i < ctrls; i++)
20 for(unsigned j = 0; j < pt.controller_info->controllers[i].buttons.size(); j++)
21 tab.push_back(t(p, i, j));
25 struct portctrl::index_map controller_set::portindex()
27 portctrl::index_map m;
28 m.logical_map = logical_map;
29 m.pcid_map = logical_map;
30 std::sort(m.pcid_map.begin(), m.pcid_map.end());
31 for(unsigned i = 0; i < ports.size(); i++)
32 push_port_indices(m.indices, i, *ports[i]);
33 return m;