From cd243ad844ac58711dd50e25f4738a3d2b2f917d Mon Sep 17 00:00:00 2001 From: Kp Date: Tue, 1 Jan 2019 04:54:35 +0000 Subject: [PATCH] Flatten some uses of trigger_wall_op --- similar/main/switch.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/similar/main/switch.cpp b/similar/main/switch.cpp index d662ae7ea..f637cd5a7 100644 --- a/similar/main/switch.cpp +++ b/similar/main/switch.cpp @@ -70,11 +70,11 @@ void trigger_init() } #endif -template -static inline void trigger_wall_op(const trigger &t, T1 &segment_factory, const T2 &op) +template +static inline void trigger_wall_op(const trigger &t, SF &segment_factory, const O &op, Oa &&... oargs) { for (unsigned i = 0, num_links = t.num_links; i != num_links; ++i) - op(segment_factory(t.seg[i]), t.side[i]); + op(std::forward(oargs)..., segment_factory(t.seg[i]), t.side[i]); } //----------------------------------------------------------------- @@ -85,10 +85,7 @@ static void do_link(const trigger &t) { auto &Walls = LevelUniqueWallSubsystemState.Walls; auto &vmwallptr = Walls.vmptr; - const auto &&op = [&vmwallptr](const vmsegptridx_t segnum, const unsigned sidenum) { - wall_toggle(vmwallptr, segnum, sidenum); - }; - trigger_wall_op(t, vmsegptridx, op); + trigger_wall_op(t, vmsegptridx, wall_toggle, vmwallptr); } #if defined(DXX_BUILD_DESCENT_II) @@ -97,10 +94,7 @@ namespace dsx { static void do_close_door(const trigger &t) { auto &Walls = LevelUniqueWallSubsystemState.Walls; - const auto &&op = [&Walls](const vmsegptridx_t segnum, const unsigned sidenum) { - wall_close_door(Walls, segnum, sidenum); - }; - trigger_wall_op(t, vmsegptridx, op); + trigger_wall_op(t, vmsegptridx, wall_close_door, Walls); } //turns lighting on. returns true if lights were actually turned on. (they @@ -282,10 +276,7 @@ static void do_il_on(const trigger &t) { auto &Walls = LevelUniqueWallSubsystemState.Walls; auto &vmwallptr = Walls.vmptr; - const auto &&op = [&vmwallptr](const vcsegptridx_t seg, const unsigned side) { - wall_illusion_on(vmwallptr, seg, side); - }; - trigger_wall_op(t, vcsegptridx, op); + trigger_wall_op(t, vcsegptridx, wall_illusion_on, vmwallptr); } namespace dsx {