Command repeating by using cmd queues

This replaces the old pushq/saveq arrays (which were used to save
the keys pressed by the user for repeating a previous command)
with a new command queue.  This means there's no hard-coded limit
to the saved keys, and it can repeat extended commands which are
not bound to any key.
This commit is contained in:
Pasi Kallinen
2022-08-08 14:02:59 +03:00
parent 4e6d3aba4f
commit fd9745f9c6
34 changed files with 417 additions and 379 deletions

View File

@@ -1721,8 +1721,8 @@ dorub(void)
}
if (obj != uwep) {
if (wield_tool(obj, "rub")) {
cmdq_add_ec(dorub);
cmdq_add_key(obj->invlet);
cmdq_add_ec(CQ_CANNED, dorub);
cmdq_add_key(CQ_CANNED, obj->invlet);
return ECMD_TIME;
}
return ECMD_OK;
@@ -2837,8 +2837,8 @@ use_whip(struct obj *obj)
if (obj != uwep) {
if (wield_tool(obj, "lash")) {
cmdq_add_ec(doapply);
cmdq_add_key(obj->invlet);
cmdq_add_ec(CQ_CANNED, doapply);
cmdq_add_key(CQ_CANNED, obj->invlet);
return ECMD_TIME;
}
return ECMD_OK;
@@ -3232,8 +3232,8 @@ use_pole(struct obj *obj, boolean autohit)
}
if (obj != uwep) {
if (wield_tool(obj, "swing")) {
cmdq_add_ec(doapply);
cmdq_add_key(obj->invlet);
cmdq_add_ec(CQ_CANNED, doapply);
cmdq_add_key(CQ_CANNED, obj->invlet);
return ECMD_TIME;
}
return ECMD_OK;
@@ -3509,8 +3509,8 @@ use_grapple(struct obj *obj)
}
if (obj != uwep) {
if (wield_tool(obj, "cast")) {
cmdq_add_ec(doapply);
cmdq_add_key(obj->invlet);
cmdq_add_ec(CQ_CANNED, doapply);
cmdq_add_key(CQ_CANNED, obj->invlet);
return ECMD_TIME;
}
return ECMD_OK;