Unicode WIP:

- building name changes
- locale optimization
- fixing some error messages
This commit is contained in:
Enno Rehling 2007-08-13 07:29:39 +00:00
parent 77bb331bc5
commit 67184b0c96
12 changed files with 40 additions and 76 deletions

View File

@ -1543,6 +1543,7 @@ creport_init(void)
tsf_register("direction", &cr_int); tsf_register("direction", &cr_int);
tsf_register("alliance", &cr_alliance); tsf_register("alliance", &cr_alliance);
tsf_register("resources", &cr_resources); tsf_register("resources", &cr_resources);
tsf_register("items", &cr_resources);
tsf_register("regions", &cr_regions); tsf_register("regions", &cr_regions);
register_reporttype("cr", &report_computer, 1<<O_COMPUTER); register_reporttype("cr", &report_computer, 1<<O_COMPUTER);

View File

@ -1343,16 +1343,8 @@ display_cmd(unit * u, struct order * ord)
cmistake(u, ord, 5, MSG_PRODUCE); cmistake(u, ord, 5, MSG_PRODUCE);
break; break;
} }
if (b->type == bt_find("generic")) { if (!fval(b->type, BTF_NAMECHANGE) && b->display && b->display[0] != 0) {
cmistake(u, ord, 279, MSG_PRODUCE); cmistake(u, ord, 278, MSG_EVENT);
break;
}
if (b->type == bt_find("monument") && b->display && b->display[0] != 0) {
cmistake(u, ord, 29, MSG_PRODUCE);
break;
}
if (b->type == bt_find("artsculpture") && b->display && b->display[0] != 0) {
cmistake(u, ord, 29, MSG_PRODUCE);
break; break;
} }
s = &b->display; s = &b->display;
@ -1485,7 +1477,6 @@ name_cmd(unit * u, struct order * ord)
} }
s = &b->name; s = &b->name;
} else { } else {
// TODO: building types static speichern um lookups zu sparen
if (!b) { if (!b) {
cmistake(u, ord, 145, MSG_PRODUCE); cmistake(u, ord, 145, MSG_PRODUCE);
break; break;
@ -1494,20 +1485,10 @@ name_cmd(unit * u, struct order * ord)
cmistake(u, ord, 148, MSG_PRODUCE); cmistake(u, ord, 148, MSG_PRODUCE);
break; break;
} }
if (b->type == bt_find("genericbuilding")) { if (!fval(b->type, BTF_NAMECHANGE)) {
cmistake(u, ord, 278, MSG_EVENT); cmistake(u, ord, 278, MSG_EVENT);
break; break;
} }
if (b->type == bt_find("monument")) {
if (renamed_building(b)) {
cmistake(u, ord, 29, MSG_EVENT);
break;
}
}
if (b->type == bt_find("artsculpture")) {
cmistake(u, ord, 29, MSG_EVENT);
break;
}
s = &b->name; s = &b->name;
} }
break; break;

View File

@ -131,7 +131,6 @@ bt_find(const char* name)
} }
while (btl && strcmp(btl->type->_name, name)) btl = btl->next; while (btl && strcmp(btl->type->_name, name)) btl = btl->next;
if (btl==NULL) { if (btl==NULL) {
log_error(("could not locate building type '%s'.\n", name));
return NULL; return NULL;
} }
return btl->type; return btl->type;

View File

@ -40,6 +40,7 @@ typedef struct maintenance {
#define BTF_PROTECTION 0x20 /* protection in combat */ #define BTF_PROTECTION 0x20 /* protection in combat */
#define BTF_MAGIC 0x40 /* magical effect */ #define BTF_MAGIC 0x40 /* magical effect */
#define BTF_ONEPERTURN 0x80 /* one one sizepoint can be added per turn */ #define BTF_ONEPERTURN 0x80 /* one one sizepoint can be added per turn */
#define BTF_NAMECHANGE 0x100 /* name and description can be changed more than once */
typedef struct building_type { typedef struct building_type {
const char * _name; const char * _name;

View File

@ -1542,9 +1542,6 @@ ship_ready(const region * r, unit * u)
return false; return false;
} }
if (!cansail(r, u->ship)) { if (!cansail(r, u->ship)) {
if( is_cursed(u->ship->attribs, C_SHIP_FLYING, 0) )
cmistake(u, u->thisorder, 17, MSG_MOVE);
else
cmistake(u, u->thisorder, 18, MSG_MOVE); cmistake(u, u->thisorder, 18, MSG_MOVE);
return false; return false;
} }

View File

@ -262,6 +262,7 @@ parse_buildings(xmlDocPtr doc)
if (xml_bvalue(node, "nodestroy", false)) btype->flags |= BTF_INDESTRUCTIBLE; if (xml_bvalue(node, "nodestroy", false)) btype->flags |= BTF_INDESTRUCTIBLE;
if (xml_bvalue(node, "oneperturn", false)) btype->flags |= BTF_ONEPERTURN; if (xml_bvalue(node, "oneperturn", false)) btype->flags |= BTF_ONEPERTURN;
if (xml_bvalue(node, "nobuild", false)) btype->flags |= BTF_NOBUILD; if (xml_bvalue(node, "nobuild", false)) btype->flags |= BTF_NOBUILD;
if (xml_bvalue(node, "namechange", true)) btype->flags |= BTF_NAMECHANGE;
if (xml_bvalue(node, "unique", false)) btype->flags |= BTF_UNIQUE; if (xml_bvalue(node, "unique", false)) btype->flags |= BTF_UNIQUE;
if (xml_bvalue(node, "decay", false)) btype->flags |= BTF_DECAY; if (xml_bvalue(node, "decay", false)) btype->flags |= BTF_DECAY;
if (xml_bvalue(node, "magic", false)) btype->flags |= BTF_MAGIC; if (xml_bvalue(node, "magic", false)) btype->flags |= BTF_MAGIC;

View File

@ -40,7 +40,7 @@ killunit_handle(trigger * t, void * data)
if (u!=NULL) { if (u!=NULL) {
destroy_unit(u); destroy_unit(u);
} else { } else {
log_error(("could not perform killunit::handle()\n")); log_warning(("could not perform killunit::handle()\n"));
} }
unused(data); unused(data);
return 0; return 0;

View File

@ -52,17 +52,17 @@ make_locale(const char * name)
{ {
unsigned int hkey = hashstring(name); unsigned int hkey = hashstring(name);
locale * l = (locale *)calloc(sizeof(locale), 1); locale * l = (locale *)calloc(sizeof(locale), 1);
#ifndef NDEBUG locale ** lp = &locales;
locale * lp = locales;
while (lp && lp->hashkey!=hkey) lp=lp->next; while (*lp && (*lp)->hashkey!=hkey) lp=&(*lp)->next;
assert(lp == NULL); assert(*lp == NULL);
#endif
l->hashkey = hkey; l->hashkey = hkey;
l->name = strdup(name); l->name = strdup(name);
l->next = locales; l->next = NULL;
l->index = nextlocaleindex++; l->index = nextlocaleindex++;
assert(nextlocaleindex<=MAXLOCALES); assert(nextlocaleindex<=MAXLOCALES);
locales = l; *lp = l;
if (default_locale==NULL) default_locale = l; if (default_locale==NULL) default_locale = l;
return l; return l;
} }
@ -70,6 +70,7 @@ make_locale(const char * name)
/** creates a list of locales /** creates a list of locales
* This function takes a comma-delimited list of locale-names and creates * This function takes a comma-delimited list of locale-names and creates
* the locales using the make_locale function (useful for ini-files). * the locales using the make_locale function (useful for ini-files).
* For maximum performance, locales should be created in order of popularity.
*/ */
void void
make_locales(const char * str) make_locales(const char * str)

View File

@ -169,7 +169,7 @@ typedef struct _stat stat_type;
# define strdup _strdup # define strdup _strdup
# define HAVE_STRDUP # define HAVE_STRDUP
# define sleep(sec) _sleep(sec*1000000) # define sleep(sec) _sleep(sec)
# define HAVE_SLEEP # define HAVE_SLEEP
# define stricmp(a, b) _stricmp(a, b) # define stricmp(a, b) _stricmp(a, b)

View File

@ -804,7 +804,9 @@ check_mages(void)
int maxmages = max_skill(f, SK_MAGIC); int maxmages = max_skill(f, SK_MAGIC);
for (u = f->units;u!=NULL;u=u->nextF) { for (u = f->units;u!=NULL;u=u->nextF) {
if (is_mage(u) && !is_familiar(u)) ++mages; if (is_mage(u) && !is_familiar(u)) {
++mages;
}
} }
if (mages>maxmages) { if (mages>maxmages) {
log_error(("faction %s has %d of max %d magicians.\n", log_error(("faction %s has %d of max %d magicians.\n",

View File

@ -3,9 +3,9 @@
<building name="illusioncastle" capacity="0" maxcapacity="0" maxsize="0" nobuild="yes"/> <building name="illusioncastle" capacity="0" maxcapacity="0" maxsize="0" nobuild="yes"/>
<building name="xmas_exit" maxsize="10" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes"/> <building name="xmas_exit" maxsize="10" maxcapacity="2" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="caldera" capacity="1" nodestroy="yes" nobuild="yes"/> <building name="caldera" capacity="1" nodestroy="yes" nobuild="yes"/>
<building name="genericbuilding" maxsize="1" nobuild="yes"/> <building name="genericbuilding" namechange="no" maxsize="1" nobuild="yes"/>
<building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/> <building name="artacademy" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="artsculpture" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/> <building name="artsculpture" namechange="no" maxsize="100" nobuild="yes" nodestroy="yes" unique="yes"/>
<building name="blessedstonecircle" maxcapacity="3" maxsize="100" nobuild="yes" magic="yes" magres="60" magresbonus="30" auraregen="1.50"> <building name="blessedstonecircle" maxcapacity="3" maxsize="100" nobuild="yes" magic="yes" magres="60" magresbonus="30" auraregen="1.50">
<construction skill="building" minskill="2" reqsize="100" maxsize="100"> <construction skill="building" minskill="2" reqsize="100" maxsize="100">
@ -64,7 +64,7 @@
</construction> </construction>
</building> </building>
<building name="monument" capacity="1"> <building name="monument" namechange="no" capacity="1">
<construction skill="building" minskill="4" reqsize="1"> <construction skill="building" minskill="4" reqsize="1">
<requirement type="log" quantity="1"/> <requirement type="log" quantity="1"/>
<requirement type="stone" quantity="1"/> <requirement type="stone" quantity="1"/>

View File

@ -2345,7 +2345,7 @@
<arg name="race" type="race"/> <arg name="race" type="race"/>
</type> </type>
<text locale="de">"$unit($mage) ruft einen Vertrauten. $race($race, 0) können $skills lernen."</text> <text locale="de">"$unit($mage) ruft einen Vertrauten. $race($race, 0) können $skills lernen."</text>
<text locale="en">"$unit($mage) summons a familiar. $race($race, 0) can learn $skills."</text> <text locale="en">"$unit($mage) summons a familiar. $race($race, 0) can learn ${skills}."</text>
</message> </message>
<message name="babbler_resist" section="magic"> <message name="babbler_resist" section="magic">
@ -3475,8 +3475,8 @@
<arg name="target" type="unit"/> <arg name="target" type="unit"/>
<arg name="skills" type="string"/> <arg name="skills" type="string"/>
</type> </type>
<text locale="de">"$unit($target) beherrscht $skills."</text> <text locale="de">"$unit($target) beherrscht ${skills}."</text>
<text locale="en">"$unit($target) has the skills $skills"</text> <text locale="en">"$unit($target) has the skills ${skills}."</text>
</message> </message>
<message name="spyreport_items" section="events"> <message name="spyreport_items" section="events">
<type> <type>
@ -4048,21 +4048,14 @@
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Dazu muss erst die Spezialeigenschaft erworben werden."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Dazu muss erst die Spezialeigenschaft erworben werden."</text>
</message> </message>
<message name="error279" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
<arg name="command" type="order"/>
</type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Beschreibung des Gebäudes kann nicht geändert werden."</text>
</message>
<message name="error278" section="errors"> <message name="error278" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Name des Gebäudes kann nicht geändert werden."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Name und Beschreibung des Gebäudes können nicht geändert werden."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - You cannot change the name and description of this building."</text>
</message> </message>
<message name="error277" section="errors"> <message name="error277" section="errors">
<type> <type>
@ -6579,19 +6572,8 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Botschaft enthält keinen Text."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Botschaft enthält keinen Text."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The message does not contain text."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The message does not contain text."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The message does not contain text."</text>
</message> </message>
<message name="error29" section="errors">
<type>
<arg name="unit" type="unit"/>
<arg name="region" type="region"/>
<arg name="command" type="order"/>
</type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Beschreibung von Monumenten kann man nicht verändern."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The description of a monument can not be changed anymore."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The description of a monument can not be changed anymore."</text>
</message>
<message name="error28" section="errors"> <message name="error28" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
@ -6607,7 +6589,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Anzahl zu verkaufender Produkte fehlt."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Anzahl zu verkaufender Produkte fehlt."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The amount of items for sale is missing."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The amount of items for sale is missing."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The amount of items for sale is missing."</text>
</message> </message>
<message name="error26" section="errors"> <message name="error26" section="errors">
@ -6617,7 +6598,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Anzahl zu kaufender Produkte fehlt."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Die Anzahl zu kaufender Produkte fehlt."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The amount of items to buy is missing."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The amount of items to buy is missing."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The amount of items to buy is missing."</text>
</message> </message>
<message name="error25" section="errors"> <message name="error25" section="errors">
@ -6627,7 +6607,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Fluch verhindert das."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Fluch verhindert das."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The escape prevented that from happening."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The escape prevented that from happening."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The escape prevented that from happening."</text>
</message> </message>
<message name="error24" section="errors"> <message name="error24" section="errors">
@ -6637,7 +6616,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht Spionage unmöglich."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht Spionage unmöglich."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - Espionage was not possible due to siege."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - Espionage was not possible due to siege."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - Espionage was not possible due to siege."</text>
</message> </message>
<message name="error23" section="errors"> <message name="error23" section="errors">
@ -6647,7 +6625,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht die Kontaktaufnahme unmöglich."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Belagerungszustand macht die Kontaktaufnahme unmöglich."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - Contact was not possible due to siege."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - Contact was not possible due to siege."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - Contact was not possible due to siege."</text>
</message> </message>
<message name="error22" section="errors"> <message name="error22" section="errors">
@ -6657,7 +6634,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Befehl wurde nicht erkannt."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Der Befehl wurde nicht erkannt."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - Unknown command."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - Unknown command."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - Unknown command."</text>
</message> </message>
<message name="error21" section="errors"> <message name="error21" section="errors">
@ -6667,7 +6643,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Dazu gibt es keine Informationen."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Dazu gibt es keine Informationen."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - There is no information available for the request."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - There is no information available for the request."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - There is no information available for the request."</text>
</message> </message>
<message name="error20" section="errors"> <message name="error20" section="errors">
@ -6677,7 +6652,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff wurde nicht gefunden."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff wurde nicht gefunden."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - The ship could not be found."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The ship could not be found."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The ship could not be found."</text>
</message> </message>
<message name="error19" section="errors"> <message name="error19" section="errors">
@ -6687,7 +6661,6 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff muß erst verlassen werden."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff muß erst verlassen werden."</text>
<text locale="fr">"$unit($unit) in $region($region): '$order($command)' - First you have to leave the ship."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - First you have to leave the ship."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - First you have to leave the ship."</text>
</message> </message>
<message name="error18" section="errors"> <message name="error18" section="errors">
@ -6697,17 +6670,17 @@
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff ist zu schwer beladen, um in See zu stechen."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff ist zu schwer beladen, um in See zu stechen."</text>
<text locale="fr">"$unit($unit) en $region($region): '$order($command)' - L'unité est trop chargée pour se déplacer."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - The ship is too heavily loaded to sail."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - The ship is too heavily loaded to sail."</text>
</message> </message>
<message name="error17" section="errors"> <message name="error_flying_ship_too_big" section="errors">
<type> <type>
<arg name="unit" type="unit"/> <arg name="unit" type="unit"/>
<arg name="region" type="region"/> <arg name="region" type="region"/>
<arg name="ship" type="ship"/>
<arg name="command" type="order"/> <arg name="command" type="order"/>
</type> </type>
<text locale="de">"$unit($unit) in $region($region): '$order($command)' - Das Schiff ist zu schwer beladen, um fliegen zu können."</text> <text locale="de">"$unit($unit) in $region($region): '$order($command)' - $ship($ship) ist zu groß, um fliegen zu können."</text>
<text locale="en">"$unit($unit) in $region($region): '$order($command)' - There is too much cargo on board this ship to fly."</text> <text locale="en">"$unit($unit) in $region($region): '$order($command)' - $ship($ship) is too bulky to fly."</text>
</message> </message>
<message name="error16" section="errors"> <message name="error16" section="errors">
<type> <type>
@ -7952,6 +7925,14 @@
<text locale="en">"The $ship($ship) is blessed with favourable winds$if($lt($duration,3),", but the spell is starting to wear thin",""). ($int36($id))"</text> <text locale="en">"The $ship($ship) is blessed with favourable winds$if($lt($duration,3),", but the spell is starting to wear thin",""). ($int36($id))"</text>
</message> </message>
<message name="curseinfo::flyingship" section="magic">
<type>
<arg name="id" type="int"/>
</type>
<text locale="de">"Kräftige Stürme haben dieses Schiff in die Luft gehoben. ($int36($id))"</text>
<text locale="en">"Powerful storms have lifted this ship high into the air. ($int36($id))"</text>
</message>
<message name="curseinfo::astralblock" section="magic"> <message name="curseinfo::astralblock" section="magic">
<type> <type>
<arg name="id" type="int"/> <arg name="id" type="int"/>