/*
* $Id: scen.h,v 1.1.1.1 2005/01/11 21:18:32 kstevens Exp $
*
* Author: Markus Stenberg <fingon@iki.fi>
*
* Copyright (c) 1997 Markus Stenberg
* Copyright (c) 1998-2002 Thomas Wouters
* Copyright (c) 2000-2002 Cord Awtry
* All rights reserved
*
* Created: Sun Oct 19 19:42:37 1997 fingon
* Last modified: Tue Apr 28 21:48:19 1998 fingon
*
*/
#ifndef SCEN_H
#define SCEN_H
ECMD(scen_start);
ECMD(scen_end);
ECMD(scen_status);
typedef struct {
dbref mynum;
int state; /* 0 : Not started, 1: Started, 2: Ended */
time_t start_t;
time_t end_t;
} SCEN;
typedef struct {
dbref mynum;
char slet[10]; /* Side letters, if any, identifying mechs in this side */
} SSIDE;
typedef struct {
dbref mynum;
int state;
} SSOBJ;
typedef struct {
dbref mynum;
} SSINS;
typedef struct {
dbref mynum;
} SSEXT;
void scen_trigger_mine(MAP * map, MECH * mech, int x, int y);
void scen_see_base(MAP * map, MECH * mech, mapobj * o);
void scen_damage_base(MAP * map, MECH * mech, mapobj * o);
void scen_destroy_base(MAP * map, MECH * mech, mapobj * o);
MAP *scen_map(SCEN * s);
#define LOOP_THRU_SIDES(side,scen,i) \
DOLIST(i, Contents(scen->mynum)) \
if (Hardcode(i)) \
if (WhichSpecial(i) == GTYPE_SSIDE) \
if ((side = (SSIDE *) FindObjectsData(i)))
#define LOOP_THRU_OBJECTIVES(ob,side,i) \
DOLIST(i, Contents(side->mynum)) \
if (Hardcode(i)) \
if (WhichSpecial(i) == GTYPE_SSOBJ) \
if ((ob = (SSOBJ *) FindObjectsData(i)))
#define LOOP_THRU_INSERTIONS(ob,side,i) \
DOLIST(i, Contents(side->mynum)) \
if (Hardcode(i)) \
if (WhichSpecial(i) == GTYPE_SSINS) \
if ((ob = (SSINS *) FindObjectsData(i)))
#define LOOP_THRU_EXTRACTIONS(ob,side,i) \
DOLIST(i, Contents(side->mynum)) \
if (Hardcode(i)) \
if (WhichSpecial(i) == GTYPE_SSEXT) \
if ((ob = (SSEXT *) FindObjectsData(i)))
#define LOOP_MAP_MECHS(mech,map,i) \
for (i = 0 ; i < map->first_free ; i++) \
if ((mech = FindObjectsData(map->mechsOnMap[i])))
#define LOOP_DS_BAYS(d, mech, i) \
for (i = 0 ; i < NUM_BAYS ; i++) \
if ((d = AeroBay(mech, i)) > 0) \
if (Hardcode(d)) \
if (WhichSpecial(d) == GTYPE_MAP)
#define LOOP_MAP_MAPLINKS(map, o) \
for (o = first_mapobj(map, TYPE_BUILD) ; o ; o = next_mapobj(o))
#define LOOP_MAP_MAPLINKS_REF(ob,map, o) \
LOOP_MAP_MAPLINKS(map,o) \
if ((ob = o->obj) > 0) \
if (Hardcode(ob)) \
if (WhichSpecial(ob) == GTYPE_MAP)
#define scen_mech_in_side(m,s) \
(!s->slet[0] || !strncmp(s->slet, silly_atr_get(m->mynum, A_MECHNAME), strlen(s->slet)))
#endif /* SCEN_H */