Complete.Org: Mailing Lists: Archives: freeciv-dev: August 2001:
[Freeciv-Dev] Re: [Patch] Watchtower v3
Home

[Freeciv-Dev] Re: [Patch] Watchtower v3

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: rf13@xxxxxxxxxxxxxxxxxxxxxx
Cc: Sebastian Bauer <sebauer@xxxxxxxxxxx>, freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: [Patch] Watchtower v3
From: Daniel L Speyer <dspeyer@xxxxxxxxxxx>
Date: Fri, 31 Aug 2001 12:13:13 -0400 (EDT)

On Fri, 31 Aug 2001, Raimar Falke wrote:

> On Fri, Aug 31, 2001 at 11:46:31AM -0400, Daniel L Speyer wrote:
> > 
> > On Fri, 31 Aug 2001, Raimar Falke wrote:
> > 
> > > On Fri, Aug 31, 2001 at 10:40:26AM -0400, Daniel L Speyer wrote:
> > > > On Fri, 31 Aug 2001, Raimar Falke wrote:
> > > > 
> > > > [snip lots of stuff]
> > > > 
> > > > > My opinion on the other discussion: In the long term I would also like
> > > > > to see rulesets just as a preset server variables. Each ruleset
> > > > > variable/server variable/property is protected by a certain cmdlevel.
> > > > > 
> > > > > To get structure I would propose a java properties like syntax:
> > > > > 
> > > > > units.unit_worm_riders.name="Worm Riders"
> > > > > units.unit_worm_riders.obsolete_by="unit_armorname"
> > > > > units.unit_worm_riders.attack=6
> > > > > units.unit_worm_riders.defend=2
> > > > > units.unit_worm_riders.move=3
> > > > > 
> > > > > Note: the string "unit_worm_riders" doesn't matter. It can also be
> > > > > "unit56".
> > > > > 
> > > > > It is easy to understand and parse. It allows arbitrary complex nested
> > > > > structures.
> > > > > 
> > > > 
> > > > This is awfully bulky, especially to be typed in at command line
> > > > (especially to be typed in at the command line, especially for players
> > > > without readline).  What about a varient using the javascript (maybe 
> > > > java
> > > > too) syntax like this?
> > > > 
> > > > with units.worm_riders{
> > > >         name="Worm Riders"
> > > >         obsolete_by=armor
> > > >         attack=6
> > > >         defend=2
> > > >         move=3
> > > > }
> > > 
> > > Can this really be typed easier? The java property syntax is perfect
> > > for just changing some settings. An in addition to this we can add a
> > > -r command line option to the client.
> > 
> > I'd still allow changing a few settings with java syntax, but if you just
> > want to introduce a new unit, retyping it's name for all its properties
> > would become a major nuscience, enough to discourage most players (enough
> > to discourage *me*, at least).  Remember that an actual unit has 23
> > fields.  I think a full definition of worm_riders would use 17 non-default
> > settings (using my guesses about defaults and the unit's
> > properties.)  That's an awful lot to type.
> 
> What about a "copy units.settlers units.super_settlers"?
> 

This is fine for super_settlers, but for a really new unit it doesn't help
that much.  For example, a full version of worm_riders using the copy/java
syntax would be:

copy units.armor units.worm_riders #it's the closest match I can find
units.worm_riders.name="Worm Riders"
units.worm_riders.tech_req=techs.worm_riding
units.worm_riders.obsolete_by=units.armor
units.worm_riders.graphic="u.work_riders"
units.worm_riders.build_cost=50
units.worm_riders.attack=6
units.worm_riders.defense=2
units.worm_riders.hitpoints=20
units.worm_riders.uk_happy=0

That's an awful lot, and it could easily be worse.


> > As I've been working on implementation, I've noticed that the .s and the
> > 'with' token are extraneous.  We could have a syntax like
> > 
> > units worm_riders {attack=6 defense=2}
> > units mech_inf defense=7
> > units{del transport del battleship}
> > del {techs computers}
> > 
> > allowing arbitrary whitespace, of course.
> 
> IMHO whitespace is a bad delimiter. IMHO a lot of the people will
> understand it with "." or "/".

Hmm.  I would think non-coders would find whitespace more friendly, but
maybe not.  Why not include both? (Is this approach how PERL got the way
it is?)

> 
> > I'm not sure how robust it can be, but it is unambigous.  Unfotunately,
> > the braces around "techs computers" do appear to be nessesary.
> > 
> > > 
> > > > If the user wants, still allow specifying the whole thing each time, but
> > > > it isn't required.  There should also be a delete command:
> > > > 
> > > > with units{
> > > >         delete transport
> > > >         delete cruiser
> > > >         delete aegis_cruiser
> > > >         delete battleship
> > > > }
> > > 
> > > del units.worm_riders
> > 
> > del is fine.  Actually, there's no reason not to define both.
> > 
> > > 
> > > > and a flush command:
> > > > 
> > > > flush techs
> > > > 
> > > > for creating a new set from scratch.
> > > 
> > > Do you mean flush or clear here?
> > > 
> > 
> > I mean get rid of everything there.  clear would probably be a better
> > word, since flush connotates a buffer, though iptables uses flush, so I'm
> > not completely alone :)
> > 
> > > > Wishlist features would include wildcards
> > > > 
> > > > units.*.fp=1
> > > > 
> > > > and arithmetic
> > > > 
> > > > units.destroyer.move+=1
> > > > 
> > > > but these are a little way off ;).
> > > 
> > > Nice.
> > 
> > Actually, the more I think about it, the more trouble I have with wildcard
> > syntax.  'Change properties of all units beginning with "d"' wouldn't be
> > very useful.  Can anyone think how this should be done?
> 
> If you are really trying to do this you could put wildcards at the end
> of your todo list.
> 
>       Raimar
> 
> -- 
>  email: rf13@xxxxxxxxxxxxxxxxx
>  "> WHY?! Isn't it better to put $(shell cat cscope.files) on the list of
>   I only have a yellow belt in makefile kungfu.  These fancy gnu make things
>   are relatively new to some of us..."
>     -- Mark Frazer to Vassilii Khachaturov in linux-kernel
> 



[Prev in Thread] Current Thread [Next in Thread]