Skip to content

Commit 1605c45

Browse files
committed
swars: Allow selecting weapon of a group with keyboard
1 parent 951b944 commit 1605c45

File tree

3 files changed

+15
-29
lines changed

3 files changed

+15
-29
lines changed

src/game.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4927,16 +4927,10 @@ ubyte weapon_select_input(void)
49274927
// Double tapping - select for all agents
49284928
if (gameturn - last_sel_weapon_turn[n] < 7)
49294929
{
4930-
//TODO This doesn't work properly because the flag is not stored in packet
4931-
// building a packet needs rewriting; for now 0 is written there, which translates to "TOGGLE".
4932-
#if 0
49334930
ubyte flag;
49344931

49354932
flag = (person_get_selected_weapon(dcthing) == weptype) ? WepSel_SELECT : WepSel_HIDE;
49364933
my_build_packet(&packets[local_player_no], PAct_SELECT_GRP_SPEC_WEAPON, dcthing, weptype, flag, 0);
4937-
#else
4938-
my_build_packet(&packets[local_player_no], PAct_SELECT_SPECIFIC_WEAPON, dcthing, weptype, WepSel_TOGGLE, 0);
4939-
#endif
49404934
last_sel_weapon_turn[n] -= 7;
49414935
}
49424936
else

src/people.c

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3743,24 +3743,19 @@ ubyte thing_select_specific_weapon(struct Thing *p_person, ushort weptype, ubyte
37433743

37443744
if (((p_person->U.UPerson.CurrentWeapon == weptype) || (flag == WepSel_HIDE)) && (flag != WepSel_SELECT))
37453745
{
3746-
if ((p_person->Flag & TngF_PlayerAgent) != 0 && (p_person->Flag2 & TgF2_Unkn0800) == 0) {
3747-
PlayerInfo *p_player;
3748-
PlayerIdx plyr;
3749-
ushort plagent;
3750-
3751-
plagent = p_person->U.UPerson.ComCur & 3;
3752-
plyr = p_person->U.UPerson.ComCur >> 2;
3753-
p_player = &players[plyr];
3754-
3755-
p_player->PrevWeapon[plagent] = p_person->U.UPerson.CurrentWeapon;
3746+
if ((p_person->Flag & TngF_PlayerAgent) != 0 &&
3747+
(p_person->Flag2 & TgF2_Unkn0800) == 0 &&
3748+
p_person->U.UPerson.CurrentWeapon != WEP_NULL) {
3749+
player_agent_update_prev_weapon(p_person);
37563750
}
37573751
p_person->U.UPerson.CurrentWeapon = WEP_NULL;
3758-
switch_person_anim_mode(p_person, 0);
37593752
}
37603753
else
37613754
{
3762-
ubyte animode;
37633755
p_person->U.UPerson.CurrentWeapon = weptype;
3756+
}
3757+
{
3758+
ubyte animode;
37643759
animode = gun_out_anim(p_person, 0);
37653760
switch_person_anim_mode(p_person, animode);
37663761
}

src/plyr_packet.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ void player_agent_init_drop_item(PlayerIdx plyr, struct Thing *p_person, ushort
191191
}
192192

193193
void person_grp_switch_to_specific_weapon(struct Thing *p_person, PlayerIdx plyr,
194-
ushort weapon, ubyte first_flag)
194+
ushort weptype, ubyte first_flag)
195195
{
196196
struct Thing *p_owntng;
197197
ushort plagent;
@@ -201,12 +201,9 @@ void person_grp_switch_to_specific_weapon(struct Thing *p_person, PlayerIdx plyr
201201
if (p_person->State == PerSt_PROTECT_PERSON)
202202
p_owntng = &things[p_person->Owner];
203203

204-
flag = thing_select_specific_weapon(p_person, weapon, first_flag);
204+
flag = thing_select_specific_weapon(p_person, weptype, first_flag);
205205

206206
peep_change_weapon(p_person);
207-
p_person->U.UPerson.AnimMode = gun_out_anim(p_person, 0);
208-
reset_person_frame(p_person);
209-
p_person->Speed = calc_person_speed(p_person);
210207
p_person->U.UPerson.TempWeapon = p_person->U.UPerson.CurrentWeapon;
211208

212209
if ((plyr == local_player_no) && (p_person->U.UPerson.CurrentWeapon != 0))
@@ -224,15 +221,15 @@ void person_grp_switch_to_specific_weapon(struct Thing *p_person, PlayerIdx plyr
224221
if (p_agent == p_person)
225222
continue;
226223

227-
if (((p_agent->U.UPerson.WeaponsCarried & (1 << (weapon - 1))) == 0) || (flag == 1))
224+
if (!person_carries_weapon(p_agent, weptype) || (flag == WepSel_HIDE))
228225
{
229226
stop_looped_weapon_sample(p_agent, p_agent->U.UPerson.CurrentWeapon);
230-
if (flag == 1)
227+
if (flag == WepSel_HIDE)
231228
{
232229
player_agent_update_prev_weapon(p_agent);
233-
p_agent->U.UPerson.CurrentWeapon = 0;
230+
p_agent->U.UPerson.CurrentWeapon = WEP_NULL;
234231
}
235-
else if (p_agent->U.UPerson.TempWeapon != 0)
232+
else if (p_agent->U.UPerson.TempWeapon != WEP_NULL)
236233
{
237234
thing_select_specific_weapon(p_agent, p_agent->U.UPerson.TempWeapon, flag);
238235
}
@@ -244,7 +241,7 @@ void person_grp_switch_to_specific_weapon(struct Thing *p_person, PlayerIdx plyr
244241
else
245242
{
246243
peep_change_weapon(p_agent);
247-
thing_select_specific_weapon(p_agent, weapon, flag);
244+
thing_select_specific_weapon(p_agent, weptype, flag);
248245
}
249246
p_agent->U.UPerson.AnimMode = gun_out_anim(p_agent, 0);
250247
reset_person_frame(p_agent);
@@ -876,7 +873,7 @@ void process_packet(PlayerIdx plyr, struct Packet *p_pckt, ushort i)
876873
result = PARes_EINVAL;
877874
break;
878875
}
879-
if (p_pckt->Y > WepSel_HIDE) {
876+
if (p_pckt->Y > WepSel_SKIP) {
880877
result = PARes_EINVAL;
881878
break;
882879
}

0 commit comments

Comments
 (0)