[CF List] Crossfire client 1.1.0 released

Mark Wedel mwedel at sonic.net
Fri Dec 28 19:41:16 CST 2001


 Crossfire client 1.1.0 has been released.  This is the gtk and X11 client.

 This version should woork with all current and past versions of the server.  I
know many people have had problems with the client crashing when connecting to
servers based on CVS.  Note that this release of the client only supports the
PNG image format - you must have the png library installed to compile the
client.

 You can get the client from
     
     http://prdownloads.sourceforge.net/crossfire/crossfire-client-1.1.0.tar.gz
     
     
I imagine the mirror sites should pick it up soon.


 There are also lots of improvements:
Fog of war (run with -fog): Tiles you saw previously but not currently in sight
will be dimmed but still displayed.

SDL support in the gtk client - using SDL is generally much faster on most
systems.  This should not be confused with the pure SDL client.

Improved darkness handling (via command line or in program switches) - much
better looking lighting effects can be achieved, including of actual dimming
(and not pixeling), as well as per pixel interpolated lighting.

Image resizing - you can specify the scale (either smaller or larger) for the
map and inventory icons. 

Re-organization of the source making it more modular.

Detailed list of changes:
===
Changes for 1.1.0:

README: Update notes on needing png (and not xpm) library.  Update mailing
    alias.
configure.in, configure: As the seperate sound program (cfsndserv) is the
    only supported sound configuration, remove new_sound_system defines
    and ability to use the old (now non existant) sound system.
    Have configure exit with error message if png library is not found, 
    as it is critical to the build process.  Change it so that
    gnome/Makefile is always built so that making of releases works.
gnome/gnome-cfclient.man, help/about.h, x11/cfclient.man: Update mail address.
gtk/gtkproto.h, x11/x11proto.h: Rebuilt, prototypes for some changed for
    signed to unsigned characters.
gtk/gx11.c, gtk/png.c, pixmaps/stipple.111, x11/png.c, x11/x11.c, x11/xutil.c,
    pixmaps/stipple.111 pixmaps/stipple.112:
    Mostly changes to fix compile warnings and make sure we are passing the
    right types to the various image creation functions (8 bit data).
sound-src/Makefile.in: Add soundsdef.h to list of things to build.
x11/x11.h: Remove extra semicolon.
MSW 2001-12-28

common/config.h, gnome/gnome-cfclient.soundlist, sound-src/sounds,
    sound-src/soundsdef.h: Remove from CVS as it gets automatically generated
   as part of configure/build process.
common/player.c, gtk/keys.c: Send valid count values when sending a fire
   command.  Some spells use the count value (eg dimension door).
gtk/gx11.c: Minor change to the trim_info_window code - still causes
   periodic crashes in the gtk code however.  Modify style code so that
   if we don't get a valid style, we don't crash the client.
MSW 2001-11-25

gtk/gx11.c: Made the inventory lists respect the user's GTK font settings,
  and made the various window parts use the font size to decide what size
  to make the displays and the window.  TSB 2001-11-21

configure.in, configure: Modified so that if not compiling the
  gnome client, we don't create the gnome Makefile.  MSW 2001-11-05

gtk/gcfclient.man: Add -timemapredraw documentation to man page.
gtk/gx11.c: Update size of buffers to 100k, instead of 10k.  Add some
   debugging information to when info window is trimmed.  Add -timemapredraw
   command instead of it being a compile time option.
gtk/gx11.h: Add extern for time_map_redraw.
gtk/map.c,gtk/sdl.c: use time_map_redraw variable instead of define option.
MSW 2001-11-04

gtk/gcfclient.man: Update man page to include all options supported
   by gtk client.
gtk/gx11.c: remove some unused #defines.  add -trim_info_window option which
   takes place of compile time option.  Re-order command line switches to
   be in alphabetical order.  Add support for client to load/save most all
   new options to the gdefaults file.
gtk/map.c: Some refinements to fog of war so if a space is empty, don't
   mark it as a fog space to improve performance.  Modify gdk draw routine
   so that it also supports fog of war.  There is still some problem in
   that the client will really bog down in some circumstances when
   drawing the map.
x11/Makefile.in: Add cfclient.man to list of files.
MSW 2001-11-03

Complete client re-org.  Create common, gtk, gnome, sounds, and x11 subdirs.
Gtk client: only image support is png.  Also add resizing options for
the images (-mapscale/-iconscale), remove pngximage, update sdl
image and normal draw image to support arbitrary image sizes.
sound: Only support new sound system.
MSW 2001-11-01

gx11.c: Modified to know about new pickup mode (frontend - most all the
work is still done on the server).  Patch by Nils Lohner.
MSW 2001-08-28

Add reset_map_function into xutil.c that gets called after we lose a 
connection to the server.  This fixes a problem of some leftover images
from the previous session appearing in the map windows.  MSW 2001-08-12
client.c: add call to reset_map_data
proto.h: rebuilt
xutil.c: Add reset_map_function (mostly a copy of reset_map), make some
   other functions 'static' so they don't show up in proto.h

Fog of war code checkin. This is a fairly complex check in so
hopefully not too much breaks. This adds the feature where
tiles that have been seen but have since moved out of LOS 
are still shown on screen but with a 50% transparent black
tile over it show it is no longer in LOS.  Whatever was in that
tile is still shown until a new update comes in from the server at
which point the tile is cleared of all old info.
The old way was to just paint an opaque black tile.  To do this
the client now keeps state of as many tiles as it can and remembers
which tiles have been marked as cleared.  This is a fair amount
of memory so when -fog is not specified, the code reverts back to
a much smaller in memory map. To allow this, the map structure
is now dynamically allocated.  I also had to add a new protocol
command "newmap" so the client knows when to reinit its map state.
NOTE: This feature only works when the client is using SDL. No
      reason the other blitters can't take advantage of it, just
      hasn't been done yet.
client.c: fog_of_war global variable and newmap cmd added to CmdMapping
          Added "newmapcmd" to SetUp command.
client.h: FOG_MAP_SIZE macro and Player_Position struct
commands.c: handled "newmapcmd" sent from server, added NewmapCmd
              which just calls display_map_newmap();
gnome.c: stub function for display_map_newmap();
gx11.c: Modified all commands that take x,y coordinates to convert
          to the virtual coordinate system if fog_of_war is active.
        Added code to sdl_add_png_face to paint a fog_of_war cell
          over cleared but still in view tiles.
        Added handling of Control-shift-i to simulate a newmap cmd.
        Added -fog cmd line option.
        Added display_map_newmap() function that resets the virtual map state.
        Correctly deal with dynamically allocate map structure.
proto.h: Added new prototypes by hand.
x11.c: Added code to dynamically allocate map structure.
       Added stub function for display_map_newmap();
xutil.c: Modified functions to convert to virtual coordinate system 
         when fog_of_war is active. 
         Modified display_map_clearcell to not clear cell when fog_of_war
           is active, now just marks the tile as cleared.
         New function "allocate_map" to dynamically allocate a new
           map structure and setup the 2 dimensional array pointers
           correctly.
         New function, reset_map that clears out the map structure and
           resets to coordinate system if fog_of_war is active.
         Changed map_scroll to only update the virtual coordinates
           on scroll instead of moving memory around if fog_of_war is
           active. Also checks if the view is close to the edge of the
           virtual map and recenters it if so.
SMACFIGGEN 2001-07-21

Speed optimization to the SDL rendering code. sdl_add_png_face
now exits when all 5 dark[] array values are set to full bright.
gx11.c: Added a line in the per_pixel lighting section that exits
        right away if all darkness values are set to 255.
SMACFIGGEN 2001-06-23

Quick fix to the get_metaserver function. It was originally calling
gtk_main_interation() in a while loop. This is really really really
slooooow. I replaced it with a call to gtk_main(). gtk_main_quit
for this invocation of gtk_main is called in enter_callback() when
the user types in the metaserver he wants to play on. This is WAY
faster then the old method.

gx11.c: Changed get_main_interation to gtk_main in get_metaserver.
        Added call to gtk_main_quit() in enter_callback() when
        state changes from Metaserver_Select to Playing.
SMACFIGGEN 2001-06-19

Fix for the sdl/pngximage clients where the client would draw
stale data on blank squares after a mapscroll. Basically if you
had say an image of a wall on the bottom of your screen and
you walked down one tile. If the new tile on the bottom of
the screen is now blank, the client would have drawn the wall
again and you get a funky recursive effect. The fix is in
the display_mapscroll function in xutil.c.

xutil.c: Modifed display_mapscroll so that new cells just coming onto
the screen would be marked as the_map.cells[ax][ay].need_update= 1.
For cells that are already on screen and just moving, we still leave
need_update= 0.
SMACFIGGEN 2001-06-19

This checkin puts Scott MacFiggen's SDL support into the gtk client.
I've made some enhancements to the code - it can now co-exist with 
the other image formats (so if all the libraries are available, you can
choose from -xpm, vanilla -png, -png -pngximage or -sdl (which also
forces -png).
aclocal.m4, configure, configure.in: Add checks for SDL.
client.man: Update with -sdl option.
config.h, config.h.in: Add HAVE_SDL define
gx11.c, xutil.c: Support for SDL drawing.  A lot of the code in
    xutil.c is command with that of pngximage.  gx11.c adds some additional
    options beyond just the drawing - per tile darkness and gridline options
    available under the client config window.
MSW 2001-06-17

client.c,client.h: Add want_darkness global variable, include when in setup
   command we send server.
client.man,gx11.c,x11.c: Update to include -darkness/-nodarkness command
    line options
commands.c: Change handling of negative results from server on setup
   command.
MSW 2001-06-16

The main thing this fixes is a major memory corruption problem when using
-pngximage with the client.  Better darkness display is also when
using -pngximage, but it depends on a server change (the change basically
lets the client do blending from completely dark spaces.
++
cconfig.h: add METASERVER define option which determines if client should
   try to contact metaserver or not (useful to turn off if behind a firewall
   so you don't have to wait for the timeout)
client.c: add metaserver_on, map1cmd to global variables
commands.c: divide by mapy value instead of 11 when using old map
   command - needed if playing with smaller maps.  set map1cmd
   value on/off depending on type of map command we receive from server.
gx11.c: Add BPP define for internal testing to see if using 4 bytes/pixel
   gives any speed of 3 (answer is performance is the same or slightly
   worse with 4bpp).  when run with mapsize with x>15, create windows
   with bigmap outlook (message & stats above map, and not above/below).
   Fix bug in -mapsize processing which would set invalid sizes.
   Various cleanups to use image_size instead of 32.  Changes in
   drawing to also use BPP define value instead of 3 is various
   areas.  Optimizations for darkness rendering.  Use map1cmd global
   variable to know the packing form instead of looking at map size.
   Improved darkness handling to know if adjoining spaces have valid 
   darkness information instead of looking at number of tiles.
metaserver.c: if metaserver_on isn't set, don't try to get metaserver
   information.
png.c: remove end_ptr processing - wasn't getting used, so not allocating/
   freeing it should improve performance a little.  Also, move
   png_set_filler call to before calling png_read_update_info - this
   fixes a memory corruption problem.
x11.c: use map1cmd for determine packing information in map,
   fix bug in -mapsize command processing which could result in invalid
   values being used.
xutil.c: add have_darkness value to mapcell structure.  Set
   value when we have valid darkness information for this space.  This
   allows the client to use darkness for blocked spaces if the server
   provides it.  update to use BPP instead of 3 for copies of image
   data.
MSW 2001-06-12

This is actually a fairly big checkin:
1) add large map support into the client (use -mapsize option)
2) using GdkRgb structure for drawing the map.  This prevents some more
   advanced map handling functions (like true alpha) as well as much
   better darkness support (use -pngximage option)

cconfig.h: add TIME_MAP_REDRAW define.  I originally used this to benchmark
   my improvements with the gdkrgb code, but throught it may be useful to
   others
client.c: add map sizing global variables.  Add map1 protocol pointer.
   request different mapsize of server.
client.h: add map sizing variables to extern declarations.
client.man: add description of -mapsize and -pngximage
commands.c: Make it more forgiving about extra spaces in setu command.
   and support for mapsize option of setup command.  Add option
   to map_doneupdate which controls if we want a full redraw or not.
   Add Map1Cmd command which handles map1 protocol command.
gx11.c: Add support for big maps as well as gdkrgb backing images. 
   Add support for -mapsize and -pngximage command line options.  Lots
   of new image drawing code for pngximage.  Add resize_map_window
   function which is called when new map size is negotiated with server -
   depending on new and old values, re-arrange some windows.
png.c: add png_to_data function which takes the png image and and returns
   rgba data.  used by pngximage code.
x11.c Add big map support (-mapsize option).  It otherewise lacks many
   of the other features I added to gx11.c
xutil.c: add png_data to image structure, and have data put here when
   using pngximage mode.  Move some of the basic map handling functions
   here - not the stuff that draws the map, but what sets up the
   server idea of wha the map looks like in terms of spaces.
MSW 2001-06-04

The three main things this checkin does:
    Ability to save relative sizes of gtk subwindows, and have those restored
      when re-running the client.
    Use of the setup protocol command to set configuration values.
    Receipt of skill experience information, and display of that in the 
      gtk client.
++
Makefile.in: Remove Protocol entry
Protocol: Removed - now located in server/doc directory.
client.c: Add value to determine if we want this option, initialize global
    array that maps the number to skill names.  Add support for 'setup'
    protocol command.  Send sound selection using new setup command.
client.h: add MAX_SKILL to no max number of skills.  And skill experience
    and level total to Stats structure, put extern for skill_names
    array and want_skill_exp value.
commands.c: Add SetupCmd function which handles processing of
    'setup' protocol command.  If sound setting fails with setup command,
    fall back to old method.  In StatsCmd, add code to get skill
    experience and level totals.
gx11.c: Add ability to save window size and relative pane positions
    in non split mode, as well as loading and setting of those
    values (required moving pane information widgets from create_windows
    to global values) - while at it, renamed this to be more descriptive.
    Have client now display skill experience totals in stats window.
metaserver.c: Make meta_sort a static function so that it does not
    get put into proto files.  Its only used within the metaserver.c
    file in any case.
newclient.h: Add CS_STAT_SKILL* values (to keep in sync with server
    version of this file)
proto.h: automatic rebuild needed for SetupCmd function.
MSW 2001-05-28

gx11.c: remove some unused code.  Add color for cursed/magic items in
   the unlocked inventory pane (makes it easier to sort items picked up)
   Add support for trimming the info window buffers - now gtk just has
   to be fixed.  Have the second information window do the seem freeze
   logic as the first.  Fix problem of trying to access to many resistance
   labels (may fix some reliability problems).  Remove -scrolllines command
   line option since the client does not use it.
xutil.c: Don't load/save scrolllines line in config file when included
   with gx11.c - gtk client has no use for it.  Add newline to error
   message about lines in default file we did not process.
MSW 2001-05-25

client.c: update call to metaserver_show
client.h: make meta_server, meta_port vars available to other files.
gx11.c: clear echo hiding after user completes entry in text
    window.
metaserver.c: Add parameter to metaserver_show which determines if
    we display instructions for selecting metaserver.  Re-get
    metaserver information if user hits enter on metaserver selection.
player.c: Add metaserver command that gets updated metaserver information.
proto.h: rebuilt.
MSW 2001-04-29

gx11.c: Add disconnect menu item and callback function to disconnect
   from server.
player.c: Fix/improve firing logic.  Was problem with gtk client in
   that it would stop firing after a little while when holding shift
   direction.  This was because the outgoing command queue got filled
   up and never emptied because it still sent fire_stop commands.
   Add 'disconnect command to disconnect from server.
MSW 2001-04-28

Makefile.in: Add gx11.c to depend directive, so it recompiles properly
   on changes to png.c, xutil.c
command.c: clear no_echo instead of letting the graphic handler do this.
   also add call to x_set_echo - this fixes cases in nopopups mode of
   it not switching to echo things properly.
gx11.c: Add nopopups/splitinfo options to configure menu.  Add x_set_echo
   function, and remove detection of this from do_timeout.
proto.h: automatic rebuild.
x11.c: Add setup x_set_echo function.
xutil.c: Add saving/loading of splitinfo and nopopups value to/from
   ~/.crossfire/gdefaults file.
MSW 2001-04-27

Note: by default, the command history forward/back keys are not bound
   to anything.  At least on Sparc/Solaris systems, the up key in
   the cluster of 4 arrow keys is the same keysym as the the 
   key on the keypad, so by automatically binding these, you basically
   make it so the player can not move north/south, so I figure its better
   to let players bind them safely.
gx11.c: Make the command completion key as well as history move backwards/
   forwards custom settable by the player.  Also, resize the width of the
   name/weight window for the look window the same way we do for the inv
   window.
xutil.c: Add support for binding command completion and history scroll
   keys.  Also, add support of loading/saving these bindings (As well
   as those for fire keys, run keys, command keys.
MSW 2001-04-20

gx11.c: Have it hide password entered when using -nopopups mode.
  Add command completion with tab.
  remove some dead code.
  Add command history.  Accessible through the up/down arrow keys
   (the 4 keys between the standard keys and the keypad, not the
   arrow keys on the keypad.)  This feature is barely tested.
  Most of the editing functionality used here is what gtk provides.
MSW 2001-04-20

client.c: add image_file declaration.  Also, properly handle cases where
  the option given by -server (or config file) is not a valid server -
  go back to metaserver selection instead of looping infinitely.
client.h: add image_file declaration.
gx11.c: Lots of changes.  remove duplicate code between this file
  and xutil.c. Add show_unlocked inventory tab selection.
  Add -nopopups command line option which prevents pop up windows.  Also
    results in the count value getting cleared when used.
  Add -splitinfo command line option that results in two info (Text)
    windows - one for colored text, one for normal text.
  When resizing pane that has inventory listing, now updates inventory
    headings so weight keeps constant width so that the space for the
    name increases.
  Implement command_show options so that 'show' command will rotate
    through tabs (or goes directly to tab if right name is given)
    of inventory display options.
  Add handling for -pngfile option.
player.c: add complete_command function that returns complete
  server command when partial string is passed to it
  (currently only used by x11.c)
x11.c: Add unlocked inventory show option.
  Add command completion via tab key when entering an extended
    command.
  Add -pngfile support processing.
xutil.c: Modified with #ifdef GDK_XUTIL so the gx11.c file
  can include this file to reduce duplicate code.
  Have cache code look in gfx directory first for images to load.  Also
    have cache code then look at images loaded by -pngfile for match
    before looking in images previously download, then request image
    from server if we still don't have an image.
MSW 2001-04-19

===

    
    


More information about the crossfire mailing list