]> git.pond.sub.org Git - empserver/log
empserver
16 years agoFix make distclean to remove generated sources.mk
Markus Armbruster [Sun, 9 Mar 2008 17:19:07 +0000 (18:19 +0100)]
Fix make distclean to remove generated sources.mk

16 years agoBump version to 4.3.12
Markus Armbruster [Sun, 9 Mar 2008 17:06:13 +0000 (18:06 +0100)]
Bump version to 4.3.12

16 years agoUpdate known contributors comments
Markus Armbruster [Sun, 9 Mar 2008 15:26:27 +0000 (16:26 +0100)]
Update known contributors comments

16 years agoMake xundump catch extraneous fields
Markus Armbruster [Sun, 9 Mar 2008 12:50:00 +0000 (13:50 +0100)]
Make xundump catch extraneous fields

Make deffld() reject fields whose selector has flag NSC_EXTRA set.
Since xundump() doesn't provides space for these, the bug could lead
to buffer overruns.

16 years agoFix stmtch() for exact match after multiple partial matches
Markus Armbruster [Sun, 9 Mar 2008 12:45:29 +0000 (13:45 +0100)]
Fix stmtch() for exact match after multiple partial matches

Keep looking for exact match after finding the second partial match.

16 years agoNew timestamp selectors
Markus Armbruster [Sun, 9 Mar 2008 12:41:13 +0000 (13:41 +0100)]
New timestamp selectors

New timestamp selector for commodity, country, game, loan, nation,
news, trade, treaty.

16 years agoSet timestamp automatically on write
Markus Armbruster [Wed, 5 Mar 2008 21:43:10 +0000 (22:43 +0100)]
Set timestamp automatically on write

Do it in do_write().  Remove the setting of timestamps elsewhere.

This fixes empdump to set timestamps to the current time instead of
zero on import.

16 years agoPut a timestamp into struct emptypedstr
Markus Armbruster [Wed, 5 Mar 2008 21:36:48 +0000 (22:36 +0100)]
Put a timestamp into struct emptypedstr

Make sure all members of unit empobj_storage share it.

Add matching timestamp member to struct comstr, struct empobj, struct
gamestr, struct lonstr, struct natstr, struct nwsstr, struct trdstr,
struct trtstr.  The timestamp isn't yet set for these.  To be fixed.

Move the timestamp member to the right place in struct lndstr, struct
loststr, struct realmstr, struct nukstr, struct plnstr, struct sctstr,
struct shpstr.

16 years agoFactor common code out of add() and new() into nat_reset()
Markus Armbruster [Wed, 5 Mar 2008 21:21:08 +0000 (22:21 +0100)]
Factor common code out of add() and new() into nat_reset()

The common nation wipe code is not quite identical, and it doesn't
wipe the nation thoroughly enough.  The new code does.

Changes to both commands:

* Wipe nat_update, nat_ann, nat_access, and nat_contact.  Bug: should
  set nat_ann to the number of announcements.

Changes to add command:

* Don't wipe for status active and god.  Before, nat_relate and
  nat_flags where wiped then.

Changes to newcap command:

* Wipe nat_hostaddr, nat_hostname, nat_userid, nat_dayno, nat_minused,
  nat_reserve, nat_last_login, nat_last_logout, nat_newstim,
  nat_annotim, nat_relate, nat_rejects, nat_flags.

16 years agoUpdate indent-emp for removed typedef names, belatedly.
Markus Armbruster [Wed, 5 Mar 2008 05:10:54 +0000 (06:10 +0100)]
Update indent-emp for removed typedef names, belatedly.

16 years agoReplace some typedef names by enum tags.
Markus Armbruster [Wed, 5 Mar 2008 05:09:48 +0000 (06:09 +0100)]
Replace some typedef names by enum tags.

Also get rid of some mildly silly manual packing of enum types.

16 years agoNew utility program empdump
Markus Armbruster [Tue, 4 Mar 2008 20:55:29 +0000 (21:55 +0100)]
New utility program empdump

empdump exports and imports game state as plain text.  Limitations: it
currently can't export player bmaps, power report, telegrams,
announcements, message of the day, no-login message and log files.
Exported floating-point values may be inexact.  Importing an exported
game state may not result in identical data files; besides the loss of
floating-point precision just mentioned, coordinates are normalized,
and characters beyond a string's terminating zero in a character array
are lost.  Bug: importing resets timestamps to zero.  It should set
them to the current time.

16 years agoImplement human-readable dialect for xdump
Markus Armbruster [Tue, 4 Mar 2008 20:49:44 +0000 (21:49 +0100)]
Implement human-readable dialect for xdump

This is for the forthcoming empdump utility program.  The xdump
command still does not support the human-readable dialect.

xundump has supported the human-readable dialect for a long time
(commit 4871a10a).

16 years agoMake xundump interpret escapes in identifiers
Markus Armbruster [Tue, 4 Mar 2008 20:41:26 +0000 (21:41 +0100)]
Make xundump interpret escapes in identifiers

We need this because we have symbols with spaces, e.g. missions[].

16 years agoMinor xdump documentation edit
Markus Armbruster [Tue, 4 Mar 2008 20:38:59 +0000 (21:38 +0100)]
Minor xdump documentation edit

16 years agoMake xdump code available for future use outside the server
Markus Armbruster [Fri, 8 Feb 2008 20:51:24 +0000 (21:51 +0100)]
Make xdump code available for future use outside the server

Move the bits useful there from src/lib/commands/xdump.c to new
include/xdump.h and src/lib/common/xdump.c.

16 years agoPrepare some xdump code for future use outside the server
Markus Armbruster [Fri, 8 Feb 2008 20:12:43 +0000 (21:12 +0100)]
Prepare some xdump code for future use outside the server

We don't have player->cnum, player->god and pr() there.  Pass
parameters instead.

16 years agoDon't store land unit stats in struct lndstr, part 2
Markus Armbruster [Tue, 4 Mar 2008 20:27:30 +0000 (21:27 +0100)]
Don't store land unit stats in struct lndstr, part 2

struct lndstr members lnd_spy, lnd_rad, lnd_ammo, lnd_fuelc,
lnd_fuelu, lnd_maxlight, lnd_maxlight are mere copies of struct
lchrstr members l_spy, l_rad, l_ammo, l_fuelc, l_fuelu, l_nxlight,
l_nland.  Remove them.

Make land unit selectors spy, rmax, ammo, fuelc, fuelu, maxlight
virtual.

16 years agoDon't store land unit stats in struct lndstr, part 1
Markus Armbruster [Tue, 4 Mar 2008 20:20:23 +0000 (21:20 +0100)]
Don't store land unit stats in struct lndstr, part 1

New lnd_att(), lnd_def(), lnd_vul(), lnd_spd(), lnd_vis(), lnd_frg(),
lnd_acc(), lnd_dam(), lnd_aaf() replace the struct lndstr members with
the same names.

Make land unit selectors att, def, vul, spd, vis, frg, acc, dam, aaf
virtual.

16 years agoDon't store ship stats in struct shpstr
Markus Armbruster [Tue, 4 Mar 2008 20:15:59 +0000 (21:15 +0100)]
Don't store ship stats in struct shpstr

New shp_armor(), shp_speed(), shp_visib(), shp_frnge(), shp_glim()
replace the struct shpstr members with the same names.

16 years agoDon't store plane stats in struct plnstr
Markus Armbruster [Tue, 4 Mar 2008 20:09:32 +0000 (21:09 +0100)]
Don't store plane stats in struct plnstr

New pln_att(), pln_def(), pln_acc(), pln_range_max(), pln_load()
replace the struct plnstr members with the same names.

Make plane selectors att and def virtual.

16 years agoNew nstr_mksymval() to create symbolic values
Markus Armbruster [Tue, 4 Mar 2008 09:29:49 +0000 (10:29 +0100)]
New nstr_mksymval() to create symbolic values

16 years agoVirtual selectors
Markus Armbruster [Tue, 4 Mar 2008 20:02:00 +0000 (21:02 +0100)]
Virtual selectors

Where ordinary selectors specify a value stored in some object,
virtual selectors specify a function to call to compute a value
associated with some object.

Use them to replace the special case xdump ver by new table
EF_VERSION.

Move configkeys[] to lib/common because nsc_init() needs it to
initialize empfile[EF_VERSION].cadef.

16 years agoReorder members of struct castr to make nsc.c easier to read
Markus Armbruster [Tue, 4 Mar 2008 19:27:26 +0000 (20:27 +0100)]
Reorder members of struct castr to make nsc.c easier to read

16 years agoMake nstr_exec oops on bad operator
Markus Armbruster [Tue, 4 Mar 2008 07:10:05 +0000 (08:10 +0100)]
Make nstr_exec oops on bad operator

16 years agoMake nstr_exec_val() return its first argument
Markus Armbruster [Tue, 4 Mar 2008 07:03:01 +0000 (08:03 +0100)]
Make nstr_exec_val() return its first argument

16 years agoMake nstr_exec_val() more robust
Markus Armbruster [Tue, 4 Mar 2008 06:55:32 +0000 (07:55 +0100)]
Make nstr_exec_val() more robust

Oops on bad argument, and make a better error value then.

16 years agoMove nstr_promote() to src/lib/common/, external linkage
Markus Armbruster [Tue, 4 Mar 2008 06:51:56 +0000 (07:51 +0100)]
Move nstr_promote() to src/lib/common/, external linkage

16 years agoDocument nsc.h more completely
Markus Armbruster [Tue, 4 Mar 2008 06:47:06 +0000 (07:47 +0100)]
Document nsc.h more completely

16 years agoFix documentation of empfile[] contents
Markus Armbruster [Tue, 4 Mar 2008 06:43:23 +0000 (07:43 +0100)]
Fix documentation of empfile[] contents

16 years agoMake xdprval() oops on bad argument
Markus Armbruster [Mon, 3 Mar 2008 20:43:36 +0000 (21:43 +0100)]
Make xdprval() oops on bad argument

16 years agoFix oops recovery in xdprval()
Markus Armbruster [Mon, 3 Mar 2008 20:40:22 +0000 (21:40 +0100)]
Fix oops recovery in xdprval()

Failed to print the separator, which could run fields together.

16 years agoFactor out torpedo hit chance into shp_torp_hitchance()
Markus Armbruster [Mon, 3 Mar 2008 19:59:39 +0000 (20:59 +0100)]
Factor out torpedo hit chance into shp_torp_hitchance()

16 years agoFactor out ship usable gun calculation into shp_usable_gun()
Markus Armbruster [Mon, 3 Mar 2008 19:33:54 +0000 (20:33 +0100)]
Factor out ship usable gun calculation into shp_usable_gun()

16 years agoGive effrange() internal linkage.
Markus Armbruster [Mon, 3 Mar 2008 19:28:03 +0000 (20:28 +0100)]
Give effrange() internal linkage.

16 years agoFactor out land unit firing range calculation into lnd_fire_range()
Markus Armbruster [Mon, 3 Mar 2008 19:24:52 +0000 (20:24 +0100)]
Factor out land unit firing range calculation into lnd_fire_range()

16 years agoFactor out ship firing range calculation into shp_fire_range()
Markus Armbruster [Mon, 3 Mar 2008 19:20:39 +0000 (20:20 +0100)]
Factor out ship firing range calculation into shp_fire_range()

16 years agoTighten gcc warning options
Markus Armbruster [Mon, 3 Mar 2008 19:12:46 +0000 (20:12 +0100)]
Tighten gcc warning options

Suppress only unused parameters, not all unused stuff.

16 years agoRemove an unused variable in fit_plane_off_land()
Markus Armbruster [Mon, 3 Mar 2008 19:09:26 +0000 (20:09 +0100)]
Remove an unused variable in fit_plane_off_land()

16 years agoRemove dead code for estimating defense
Markus Armbruster [Mon, 3 Mar 2008 19:08:43 +0000 (20:08 +0100)]
Remove dead code for estimating defense

Clean up of intelligence_report().  Should have been done in commit
092a52f2.

16 years agouse_supply() is now unused, remove
Markus Armbruster [Mon, 3 Mar 2008 07:31:03 +0000 (08:31 +0100)]
use_supply() is now unused, remove

16 years agoFactor out common land unit fire code into lnd_fire()
Markus Armbruster [Mon, 3 Mar 2008 07:29:52 +0000 (08:29 +0100)]
Factor out common land unit fire code into lnd_fire()

This takes care of a number of bugs / inconsistencies:

* Resupply before fire: fire command did not require unit to be in
  supply, and resupplied shells.  Everywhere else (return fire,
  support and interdiction) the land unit had to be in supply after
  resupply of everything.  Unify not to resupply anything and not to
  require being in supply.  This is consistent with ships and sectors.

* Resupply after fire: fire command resupplied shells after active
  fire.  Unify not to do that.  This is consistent with ships and
  sectors.

* When a land unit returned fire to multiple attackers, quiet_bigdef()
  charged it ammo for each one.  Finally, it was charged one shell
  more by use_ammo().  Except only the first land unit got charged
  there in fact, because buggy add_to_fired_queue() entered only the
  first land unit into the defender list.  Fix add_to_fired_queue()
  and change quiet_bigdef() not to charge ammo, just like for ships
  and sectors.  This charges only one shell instead of the true ammo
  use, which is wrong, but consistent with ships.

* lnd_support() tallied support damage unrounded.  Unify to round
  before tally.

16 years agoSimplify torpedo return fire logic
Markus Armbruster [Sun, 2 Mar 2008 21:19:57 +0000 (22:19 +0100)]
Simplify torpedo return fire logic

Don't bother checking capabilities that will be checked again later,
just try torpedo, then depth charge / gun fire.

16 years agoFactor out common torpedo fire code into shp_torp()
Markus Armbruster [Sun, 2 Mar 2008 14:45:41 +0000 (15:45 +0100)]
Factor out common torpedo fire code into shp_torp()

This takes care of a number of bugs / inconsistencies:

* Submarines with zero mobility could interdict.  Change to require
  positive mobility.

* Submarines with zero firing range could not interdict.  Fix by
  dropping the test from perform_mission().  No ships in the stock
  game are affected.

* Submarines without capability torp could fire return torpedoes and
  interdict.  Stock sbc, nm and msb were affected by the return fire
  bug.  Closes bug#950936.

* Shell resupply bugs: quiet_bigdef(), fire_torp() and
  perform_mission() resupplied before checking all other requirements
  and could thus get more shells than actually needed.

torp() no longer resupplies shells.  It's hardly worth the bother, and
fire doesn't do it either.

16 years agoFix torpedo return fire line of sight requirement and range
Markus Armbruster [Sun, 2 Mar 2008 13:05:31 +0000 (14:05 +0100)]
Fix torpedo return fire line of sight requirement and range

anti_torp() required line of sight and used gun range for all kinds of
return fire.  Require line of sight only for torpedoes, not for gun
fire and depth charges.  Use torpedo range for torpedoes, gun range
for gun fire and depth charges.

16 years agoChange test whether a land unit is artillery
Markus Armbruster [Mon, 3 Mar 2008 06:29:24 +0000 (07:29 +0100)]
Change test whether a land unit is artillery

Test for land unit firing damage instead of range, for consistency
with ships.

16 years agoFactor out common ship gun fire code into shp_fire()
Markus Armbruster [Sun, 2 Mar 2008 10:59:56 +0000 (11:59 +0100)]
Factor out common ship gun fire code into shp_fire()

This takes care of a number of bugs / inconsistencies:

* Ships with zero firing range could return fire and fire support, but
  not fire actively or interdict.  Fix by testing for gun limit
  instead in multifire() and mission().  No ships in the stock game
  are affected.

* Required gun crew was inconsistent: multifire() let N military fire
  max(1,floor(N/2)) guns for active fire.  Ditto perform_mission() for
  interdiction.  quiet_bigdef() let them fire N guns for returning gun
  fire.  Ditto sd() for firing support and firing at boarding parties.
  fire_dchrg() let them fire floor(N/2) for returning fire to
  torpedoes.  Unify to let N military fire floor((N+1)/2) guns.

* Shell use was inconsistent: sd() and perform_mission() used one
  shell per gun, everything else one per two guns.  Unify to one shell
  per two guns.

* Shell resupply bugs: multifire() got two shells regardless of actual
  ammo use.  quiet_bigdef() got one shell (but use_ammo() uses only
  one, which is a bug).  sd() and perform_mission() resupplied before
  checking all other requirements and could thus get more shells than
  actually needed.

16 years agoMake depth-charging code and documentation match
Markus Armbruster [Sun, 2 Mar 2008 10:01:42 +0000 (11:01 +0100)]
Make depth-charging code and documentation match

Before 4.0.6, depth charges required no guns, one military, did damage
like shell fire from two guns, and used two shells.  Missions were not
quite consistent with that (bug).  4.0.6 changed depth charges to work
exactly like shell fire (but without updating documentation
accordingly): require guns and gun crew, non-zero firing range, scale
damage and ammunition use with guns.

Go back to the old model, but with damage like three guns, to avoid
changing the stock game's dd now (three gun damage for two shells).
Stock game's af changes from two gun damage for one shell, and nas
from four gun damage for two shells.

Factor out common depth-charging code into shp_dchrg().

16 years agoFactor out common fortress fire code into fort_fire()
Markus Armbruster [Fri, 14 Mar 2008 19:01:05 +0000 (20:01 +0100)]
Factor out common fortress fire code into fort_fire()

This takes care of a number of bugs / inconsistencies:

* sb() fired support even when there were not enough mil.

* Shell resupply bugs: multifire() and quiet_bigdef() resupplied
  shells before checking all other requirements and could thus get
  more shells than actually needed.

Rename landgun() to fortgun() for consistency.

16 years agoInclude system headers before ours
Markus Armbruster [Fri, 29 Feb 2008 06:09:34 +0000 (07:09 +0100)]
Include system headers before ours

16 years agoGive logx() internal linkage
Markus Armbruster [Fri, 29 Feb 2008 06:08:59 +0000 (07:08 +0100)]
Give logx() internal linkage

16 years agoNew unit stat development functions
Markus Armbruster [Fri, 29 Feb 2008 05:49:18 +0000 (06:49 +0100)]
New unit stat development functions

The macros defining unit stat development in tech are somewhat
inconvenient to use.  Define more convenient functions, and hide away
the macros near the function definitions.

16 years agoConvert a CANT_HAPPEN() to CANT_REACH()
Markus Armbruster [Thu, 28 Feb 2008 19:26:54 +0000 (20:26 +0100)]
Convert a CANT_HAPPEN() to CANT_REACH()

16 years agoRemove edit keys deprecated in 4.3.3
Markus Armbruster [Thu, 28 Feb 2008 19:22:12 +0000 (20:22 +0100)]
Remove edit keys deprecated in 4.3.3

These are: land 'C', plane 'a' and 'd', unit 'X', ship 'H', 'P', 'X'
and 'Y'.

16 years agoImplement xundump table truncation
Markus Armbruster [Tue, 26 Feb 2008 20:19:26 +0000 (21:19 +0100)]
Implement xundump table truncation

16 years agoNew ef_truncate()
Markus Armbruster [Sun, 9 Mar 2008 12:42:12 +0000 (13:42 +0100)]
New ef_truncate()

16 years agoPOSIX compatible ftruncate() for Windows
Markus Armbruster [Tue, 26 Feb 2008 19:05:36 +0000 (20:05 +0100)]
POSIX compatible ftruncate() for Windows

16 years agoClean up dependencies after failed compile
Markus Armbruster [Mon, 25 Feb 2008 20:38:22 +0000 (21:38 +0100)]
Clean up dependencies after failed compile

If gcc's preprocessor chokes, it leaves an empty dependency file
behind, and doesn't touch the object file.  If an old object file
exists, and is newer than the .c file, make will then consider the
object file up-to-date.  This can lead to nasty version errors.

16 years agoRemove redundant initializations from fairland's fl_sct_init()
Markus Armbruster [Mon, 25 Feb 2008 20:22:07 +0000 (21:22 +0100)]
Remove redundant initializations from fairland's fl_sct_init()

16 years agoClean up confusing loop control in fairland
Markus Armbruster [Mon, 25 Feb 2008 20:20:48 +0000 (21:20 +0100)]
Clean up confusing loop control in fairland

16 years agoReplace unit_type_name() by empobj_chr_name()
Markus Armbruster [Mon, 25 Feb 2008 20:18:35 +0000 (21:18 +0100)]
Replace unit_type_name() by empobj_chr_name()

16 years agoSimplify empobj_chr_name() oops recovery
Markus Armbruster [Mon, 25 Feb 2008 20:15:50 +0000 (21:15 +0100)]
Simplify empobj_chr_name() oops recovery

Return something usable instead of null.  Matches obj_nameof().  Fixes
those callers that neglected to check the value.

16 years agoRename emp_obj_chr_name() to empobj_chr_name()
Markus Armbruster [Mon, 25 Feb 2008 20:11:19 +0000 (21:11 +0100)]
Rename emp_obj_chr_name() to empobj_chr_name()

16 years agoMake ef_verify() check ef_type and uid
Markus Armbruster [Mon, 25 Feb 2008 20:07:06 +0000 (21:07 +0100)]
Make ef_verify() check ef_type and uid

16 years agoOops when bad ef_type or uid is written to disk
Markus Armbruster [Mon, 25 Feb 2008 20:05:48 +0000 (21:05 +0100)]
Oops when bad ef_type or uid is written to disk

16 years agoCheck ef_type before dereferencing struct empobj
Markus Armbruster [Mon, 25 Feb 2008 19:57:33 +0000 (20:57 +0100)]
Check ef_type before dereferencing struct empobj

Such manual checking is error prone, but the best we can do right now.

16 years agoCheck subscript of rpt[]
Markus Armbruster [Sun, 24 Feb 2008 21:15:10 +0000 (22:15 +0100)]
Check subscript of rpt[]

Make nws_vrb unsigned to simplify that.

16 years agoFix tests for unused news slots
Markus Armbruster [Sun, 24 Feb 2008 19:33:57 +0000 (20:33 +0100)]
Fix tests for unused news slots

delete_old_news() and init_nreport() tested for non-zero nws_when,
which is breaks for news at the epoch.  Not likely to happen, but
still wrong.

ncache() tested nws_uid, which breaks for the first entry in the news
file.  This made ncache() overlook that entry in the cache, and create
a new news item instead of incrementing nws_ntm.  Was always broken
that way.

Fix by testing nws_vrb instead.

16 years agoGet rid of struct newscache
Markus Armbruster [Sun, 24 Feb 2008 18:12:49 +0000 (19:12 +0100)]
Get rid of struct newscache

Just use struct nwsstr, it has the uid now.

16 years agoFix news expiry not to screw up nws_uid
Markus Armbruster [Sun, 24 Feb 2008 18:55:10 +0000 (19:55 +0100)]
Fix news expiry not to screw up nws_uid

delete_old_news() moves unexpired news.  Update nws_uid accordingly.
It then zaps the slots no longer in use.  Don't zap ef_type and
nws_uid.

16 years agoUse ef_blank() when extending news file
Markus Armbruster [Sun, 24 Feb 2008 18:02:43 +0000 (19:02 +0100)]
Use ef_blank() when extending news file

The call of ef_ensure_space() serves no purpose: the blank records it
adds are ignored on read, and overwritten (not updated) by new news.
Get rid of it.

16 years agoUse ef_blank() when extending lost file, and simplify
Markus Armbruster [Sun, 24 Feb 2008 17:50:02 +0000 (18:50 +0100)]
Use ef_blank() when extending lost file, and simplify

16 years agoUse ef_blank() when extending treaty, loan, comm and trade file
Markus Armbruster [Sun, 24 Feb 2008 17:47:22 +0000 (18:47 +0100)]
Use ef_blank() when extending treaty, loan, comm and trade file

Only treaty extension initialized ef_type and uid properly.  None of
them zeroed unused members and holes in the struct.  comm and trade
extension called ef_extend(), which had no effect, so remove that.

16 years agoUse ef_blank for new ships, planes, land units and nukes
Markus Armbruster [Fri, 14 Mar 2008 18:59:30 +0000 (19:59 +0100)]
Use ef_blank for new ships, planes, land units and nukes

Fixes commit 6cd3d55c, which broke initialization of ef_type.

16 years agoNew ef_blank()
Markus Armbruster [Sun, 24 Feb 2008 17:28:09 +0000 (18:28 +0100)]
New ef_blank()

It performs the same initialization as ef_extend().

16 years agoempfile's init callback is now unused, remove
Markus Armbruster [Sun, 24 Feb 2008 10:19:51 +0000 (11:19 +0100)]
empfile's init callback is now unused, remove

16 years agoshp_init(), lnd_init(), pln_init(), nuk_init() are now empty, remove
Markus Armbruster [Sun, 24 Feb 2008 10:13:48 +0000 (11:13 +0100)]
shp_init(), lnd_init(), pln_init(), nuk_init() are now empty, remove

16 years agoInitialize ef_type and uid automatically in ef_extend()
Markus Armbruster [Sun, 24 Feb 2008 10:07:18 +0000 (11:07 +0100)]
Initialize ef_type and uid automatically in ef_extend()

New struct emptypedstr to avoid depending on empobj.h there.

Remove now superfluous manual initializations elsewhere.

This doesn't fix any missing initializations.

16 years agoNew empfile flag EFF_TYPED to signal struct empobj support
Markus Armbruster [Sun, 24 Feb 2008 09:06:01 +0000 (10:06 +0100)]
New empfile flag EFF_TYPED to signal struct empobj support

Elements of tables with EFF_TYPED set share the common header of
struct empobj.

16 years agoExtend the common header of struct empobj to include uid
Markus Armbruster [Mon, 25 Feb 2008 07:23:19 +0000 (08:23 +0100)]
Extend the common header of struct empobj to include uid

Make sure all members of unit empobj_storage share uid in addition to
ef_type.

Add matching uid member to struct gamestr, struct natstr and struct
sctstr, and set them.

Swap struct empobj members uid and own to make that easier, and update
struct comstr, struct lndstr, struct lonstr, struct loststr, struct
nwsstr, struct nukstr, struct plnstr, struct realmstr, struct shpstr,
struct trdstr, struct trtstr accordingly.

Note that the uid isn't properly set for struct nwsstr, struct lonstr,
struct trdstr, struct comstr and struct loststr.  To be fixed.

16 years agoDocument tables EF_COMM, EF_TRADE and EF_COUNTRY have an owner
Markus Armbruster [Mon, 25 Feb 2008 19:37:01 +0000 (20:37 +0100)]
Document tables EF_COMM, EF_TRADE and EF_COUNTRY have an owner

xdvisible() relies on that.

Set EFF_OWNER in the table definitions.  EFF_OWNER is not actually
used right now, so this doesn't fix anything broken.

16 years agoSimplify unit_put()
Markus Armbruster [Sat, 23 Feb 2008 07:35:13 +0000 (08:35 +0100)]
Simplify unit_put()

16 years agoUse get_empobj() instead of get_empobjp() in unit_map()
Markus Armbruster [Sat, 23 Feb 2008 07:26:04 +0000 (08:26 +0100)]
Use get_empobj() instead of get_empobjp() in unit_map()

The get_FOOp() macros are generally avoided outside the update,
because direct access to the sector cache needs synchronization to be
safe.  unit_map() didn't access the cache directly until it was
converted from get_ship() & friends to get_empobjp() in commit
fec9878c.  Switching to get_empobj() reverts the change to direct
access while keeping the simplification.

16 years agoDefine common get/put macros for empobj
Markus Armbruster [Sat, 23 Feb 2008 07:03:35 +0000 (08:03 +0100)]
Define common get/put macros for empobj

This turns existing functions get_empobjp() and put_empobj() into
equivalent macros.

16 years agoFix get_empobjp() not to reject EF_SECTOR
Markus Armbruster [Sat, 23 Feb 2008 06:59:10 +0000 (07:59 +0100)]
Fix get_empobjp() not to reject EF_SECTOR

There's no technical reason for rejecting sector access by id.  It's
unusual, but not wrong.

Also remove the superfluous test for EF_BAD; ef_ptr() covers that.

16 years agoFix put_empobj() for types other than units
Markus Armbruster [Sat, 23 Feb 2008 06:48:32 +0000 (07:48 +0100)]
Fix put_empobj() for types other than units

put_empobj() used struct empobj member uid, which is valid only for
units.  Existing users pass only units, fortunately.  Fix by making it
take type and uid parameters.

16 years agoGive unit_map() internal linkage
Markus Armbruster [Fri, 22 Feb 2008 20:53:24 +0000 (21:53 +0100)]
Give unit_map() internal linkage

16 years agoNew realm selector timestamp
Markus Armbruster [Fri, 22 Feb 2008 20:37:04 +0000 (21:37 +0100)]
New realm selector timestamp

The timestamp always existed, but the selector was missing.  It's
needed for incremental xdumps.

16 years agoClean up ugly line break
Markus Armbruster [Fri, 22 Feb 2008 20:13:32 +0000 (21:13 +0100)]
Clean up ugly line break

16 years agoFix test for water in explore
Markus Armbruster [Fri, 22 Feb 2008 20:11:30 +0000 (21:11 +0100)]
Fix test for water in explore

This led to a bogus message when an interactive explore moved onto a
bridge and got prompted, the bridge was destroyed, and the player
stopped the explore "on the water".

16 years agoMake sector types signed
Markus Armbruster [Fri, 22 Feb 2008 19:58:37 +0000 (20:58 +0100)]
Make sector types signed

get_empobj_chr() and emp_obj_chr_name() access struct sctstr member
sct_type through struct empobj member type.  This is technically
non-portable, because the two differ in signedness.  It was also
undocumented.  Fix by making sct_type signed.  sct_newtype as well,
for consistency.

map_char() uses unsigned char for a sector type argument.  Change that
to int.  Matches how this is done elsewhere.

16 years agoMake xundump capable of extending tables
Markus Armbruster [Thu, 21 Feb 2008 20:17:32 +0000 (21:17 +0100)]
Make xundump capable of extending tables

Use ef_ensure_space() in getobj().  This also makes sure objects are
properly initialized before undumping writes to them.

Clean up how sentinels are appended: instead of keeping its slot
reserved while undumping, keep it in the table, and strip it off when
done.

16 years agoGeneralize ef_extend() to non-file-backed tables
Markus Armbruster [Thu, 21 Feb 2008 20:12:58 +0000 (21:12 +0100)]
Generalize ef_extend() to non-file-backed tables

ef_extend() extended the file bypassing the cache, which screws up the
cache if it's EFF_MEM.  It fixed that by closing and reopening the
table.  Cheesy, and worked only for file-backed tables.

Rewrite ef_extend() to remap the cache properly for EFF_MEM.  While
there, simplify the !EFF_MEM case: steal a cache slot instead of
allocating a buffer.

Factor cache mapping out of ef_open() and ef_extend() into new
ef_realloc_cache().

16 years agoReplace EFF_RDONLY by EFF_PRIVATE
Markus Armbruster [Thu, 21 Feb 2008 20:04:11 +0000 (21:04 +0100)]
Replace EFF_RDONLY by EFF_PRIVATE

Read-only was a bit of a misnomer: you could write to the table by
obtaining a pointer into it from ef_ptr(), you just couldn't write to
the backing file.

Semantic changes:

* ef_flush() is now allowed when the table is file-backed or privately
  mapped.  Before, it had to be file-backed.  Flushing a privately
  mapped table does nothing, just like flushing a read-only table did.

* ef_write() is now allowed when the table is file-backed or fully
  cached.  Before, it had to be file-backed and not read-only.
  Writing to a privately mapped file-backed table doesn't write to the
  file.

* ef_extend() is not implemented for privately mapped tables, just
  like it wasn't implemented for read-only tables.

16 years agoRemove obsolete comment
Markus Armbruster [Tue, 19 Feb 2008 19:27:01 +0000 (20:27 +0100)]
Remove obsolete comment

Obsolete since ef_open() locks the file (commit de124108).

16 years agoRemove unused local variable in desi.c
Ron Koenderink [Wed, 27 Feb 2008 02:58:46 +0000 (20:58 -0600)]
Remove unused local variable in desi.c

Left behind by commit d3a3aa43.

16 years agoDefine and use NATID_BAD instead of literal 255
Markus Armbruster [Tue, 19 Feb 2008 19:25:08 +0000 (20:25 +0100)]
Define and use NATID_BAD instead of literal 255

16 years agoFix spelling of symbol PLN_AIRBURST in plane_flags[]
Markus Armbruster [Sun, 17 Feb 2008 18:54:41 +0000 (19:54 +0100)]
Fix spelling of symbol PLN_AIRBURST in plane_flags[]

16 years agoClean up trailing whitespace-space in manual pages
Markus Armbruster [Sun, 17 Feb 2008 18:50:38 +0000 (19:50 +0100)]
Clean up trailing whitespace-space in manual pages

16 years agoConsider only wilderness for randomly placed sanctuaries
Markus Armbruster [Sun, 17 Feb 2008 08:01:29 +0000 (09:01 +0100)]
Consider only wilderness for randomly placed sanctuaries

Before, any non-sea sector was acceptable.  Placing sanctuaries on
mountains, plains or bridges doesn't seem such a bright idea, though.