(switch_leader, switch_flagship): New.
(navi, marc): Add the ability to select a flagship or leader.
This commit is contained in:
parent
df8dc6ab5a
commit
f874995c19
2 changed files with 54 additions and 16 deletions
|
@ -46,6 +46,7 @@
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
|
|
||||||
static int set_leader(struct emp_qelem *list, struct lndstr **leaderp);
|
static int set_leader(struct emp_qelem *list, struct lndstr **leaderp);
|
||||||
|
static void switch_leader(struct emp_qelem *list, int land_uid);
|
||||||
|
|
||||||
int
|
int
|
||||||
march(void)
|
march(void)
|
||||||
|
@ -147,14 +148,11 @@ march(void)
|
||||||
skip = 1;
|
skip = 1;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
{
|
if (ac <= 1)
|
||||||
struct emp_qelem *qp;
|
switch_leader(&land_list, -1);
|
||||||
|
else
|
||||||
qp = land_list.q_back;
|
switch_leader(&land_list, atoi(player->argp[1]));
|
||||||
emp_remque(land_list.q_back);
|
set_leader(&land_list, &lnd);
|
||||||
emp_insque(qp, &land_list);
|
|
||||||
set_leader(&land_list, &lnd);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
lnd_list(&land_list);
|
lnd_list(&land_list);
|
||||||
|
@ -209,3 +207,24 @@ set_leader(struct emp_qelem *list, struct lndstr **leaderp)
|
||||||
pr("%s\n", prland(&llp->land));
|
pr("%s\n", prland(&llp->land));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
switch_leader(struct emp_qelem *list, int land_uid)
|
||||||
|
{
|
||||||
|
struct emp_qelem *qp, *save;
|
||||||
|
struct llist *llp;
|
||||||
|
|
||||||
|
if (QEMPTY(list))
|
||||||
|
return;
|
||||||
|
|
||||||
|
save = qp = list->q_back;
|
||||||
|
do {
|
||||||
|
emp_remque(qp);
|
||||||
|
emp_insque(qp, list);
|
||||||
|
qp = list->q_back;
|
||||||
|
llp = (struct llist *)qp;
|
||||||
|
if (llp->land.lnd_uid == land_uid || land_uid == -1)
|
||||||
|
break;
|
||||||
|
} while (list->q_back != save);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#include "optlist.h"
|
#include "optlist.h"
|
||||||
|
|
||||||
static int set_flagship(struct emp_qelem *list, struct shpstr **flagshipp);
|
static int set_flagship(struct emp_qelem *list, struct shpstr **flagshipp);
|
||||||
|
static void switch_flagship(struct emp_qelem *list, int ship_uid);
|
||||||
|
|
||||||
int
|
int
|
||||||
navi(void)
|
navi(void)
|
||||||
|
@ -175,14 +176,11 @@ navi(void)
|
||||||
skip = 1;
|
skip = 1;
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
{
|
if (ac <= 1)
|
||||||
struct emp_qelem *qp;
|
switch_flagship(&ship_list, -1);
|
||||||
|
else
|
||||||
qp = ship_list.q_back;
|
switch_flagship(&ship_list, atoi(player->argp[1]));
|
||||||
emp_remque(ship_list.q_back);
|
set_flagship(&ship_list, &shp);
|
||||||
emp_insque(qp, &ship_list);
|
|
||||||
set_flagship(&ship_list, &shp);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
shp_list(&ship_list);
|
shp_list(&ship_list);
|
||||||
|
@ -312,3 +310,24 @@ set_flagship(struct emp_qelem *list, struct shpstr **flagshipp)
|
||||||
pr("%s\n", prship(&mlp->ship));
|
pr("%s\n", prship(&mlp->ship));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
switch_flagship(struct emp_qelem *list, int ship_uid)
|
||||||
|
{
|
||||||
|
struct emp_qelem *qp, *save;
|
||||||
|
struct mlist *mlp;
|
||||||
|
|
||||||
|
if (QEMPTY(list))
|
||||||
|
return;
|
||||||
|
|
||||||
|
save = qp = list->q_back;
|
||||||
|
do {
|
||||||
|
emp_remque(qp);
|
||||||
|
emp_insque(qp, list);
|
||||||
|
qp = list->q_back;
|
||||||
|
mlp = (struct mlist *)qp;
|
||||||
|
if (mlp->ship.shp_uid == ship_uid || ship_uid == -1)
|
||||||
|
break;
|
||||||
|
} while (list->q_back != save);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue