implemented new 'team_name' tag to show alliances to replace 'enemy' tag
This commit is contained in:
parent
2d9f035095
commit
1ae8fc77f7
27 changed files with 118 additions and 123 deletions
|
@ -1,5 +1,5 @@
|
|||
[multiplayer]
|
||||
name="Accross The River"
|
||||
name="Across The River"
|
||||
map_data="ffffffffffffffgggggggggggggggggggggggg
|
||||
ffffffffffffffffgggggggggggggggCgggtgg
|
||||
ffffffffffffffffggggggggggggggC1Cggggg
|
||||
|
|
|
@ -29,7 +29,6 @@ Defeat
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -55,7 +54,7 @@ Defeat
|
|||
gold=140
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=evil
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -83,10 +82,10 @@ Defeat
|
|||
gold=500
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
aggression=1.0
|
||||
village_value=0.0
|
||||
leader_value=50.0
|
||||
team_name=evil
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -44,7 +44,6 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Elvish Scout,Elvish Fighter,Elvish Archer,Horseman,Mage,Elvish Shaman
|
||||
controller=human
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -54,6 +53,7 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Vampire Bat,Naga
|
||||
recruitment_pattern=scout,swimmer
|
||||
team_name=orcs
|
||||
#ifdef EASY
|
||||
gold=60
|
||||
#endif
|
||||
|
@ -66,7 +66,6 @@ Defeat:
|
|||
gold=170
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
|
||||
[unit]
|
||||
type=Orcish Archer
|
||||
|
@ -110,7 +109,7 @@ Defeat:
|
|||
#ifdef HARD
|
||||
gold=250
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -45,7 +45,7 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
recruit=Elvish Scout,Elvish Fighter,Elvish Archer,Horseman,Mage,Elvish Shaman
|
||||
enemy=3
|
||||
team_name=elves
|
||||
controller=human
|
||||
[/side]
|
||||
|
||||
|
@ -56,9 +56,9 @@ Defeat:
|
|||
experience=0
|
||||
side=2
|
||||
canrecruit=1
|
||||
team_name=elves
|
||||
recruit=Mage,Red Mage,White Mage
|
||||
recruitment_pattern=mixed fighter,mixed fighter,healer
|
||||
enemy=3
|
||||
#ifdef EASY
|
||||
gold=250
|
||||
#else
|
||||
|
@ -88,6 +88,7 @@ Defeat:
|
|||
experience=0
|
||||
side=3
|
||||
canrecruit=1
|
||||
team_name=orcs
|
||||
recruit=Orcish Grunt,Wolf Rider,Orcish Archer,Troll Whelp
|
||||
#ifdef HARD
|
||||
gold=400
|
||||
|
@ -98,7 +99,6 @@ Defeat:
|
|||
#ifdef EASY
|
||||
gold=140
|
||||
#endif
|
||||
enemy=1,2
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -38,7 +38,6 @@ Defeat
|
|||
controller=human
|
||||
hitpoints=80
|
||||
gold=100
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -50,7 +49,7 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Orcish Grunt,Wolf Rider,Orcish Archer,Troll Whelp
|
||||
{GOLD 200 320 400}
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -62,7 +61,7 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Orcish Grunt,Wolf Rider,Orcish Archer,Troll Whelp
|
||||
{GOLD 200 320 400}
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
#signs at the crossroads for decoration
|
||||
|
|
|
@ -70,7 +70,6 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3,4
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -92,7 +91,7 @@ Defeat:
|
|||
income=15
|
||||
recruit=Orcish Warrior,Goblin Pillager,Orcish Crossbow,Orcish Assassin,Troll Warrior
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -115,7 +114,7 @@ Defeat:
|
|||
gold=250
|
||||
income=20
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -136,7 +135,7 @@ Defeat:
|
|||
income=20
|
||||
gold=250
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -45,8 +45,8 @@ Defeat:
|
|||
canrecruit=1
|
||||
controller=human
|
||||
recruit=Elvish Scout,Elvish Fighter,Elvish Archer,Elvish Shaman
|
||||
enemy=2,3,4
|
||||
gold=100
|
||||
team_name=elves
|
||||
[unit]
|
||||
description=Delfador
|
||||
type=Elder Mage
|
||||
|
@ -84,7 +84,7 @@ Defeat:
|
|||
#ifdef HARD
|
||||
{HIGH_PRIORITY_TARGETS}
|
||||
#endif
|
||||
enemy=1,5,6
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -93,6 +93,7 @@ Defeat:
|
|||
side=3
|
||||
canrecruit=1
|
||||
recruit=Orcish Warrior,Wolf Rider,Orcish Crossbow,Orcish Assassin,Troll
|
||||
team_name=orcs
|
||||
#ifdef EASY
|
||||
gold=200
|
||||
#endif
|
||||
|
@ -106,7 +107,6 @@ Defeat:
|
|||
{HIGH_PRIORITY_TARGETS}
|
||||
#endif
|
||||
|
||||
enemy=1,5,6
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -116,6 +116,7 @@ Defeat:
|
|||
side=4
|
||||
canrecruit=1
|
||||
recruit=Orcish Warrior,Wolf Rider,Orcish Crossbow,Troll Warrior,Orcish Slayer
|
||||
team_name=orcs
|
||||
#ifdef EASY
|
||||
gold=200
|
||||
#endif
|
||||
|
@ -129,7 +130,6 @@ Defeat:
|
|||
{HIGH_PRIORITY_TARGETS}
|
||||
#endif
|
||||
|
||||
enemy=1,5,6
|
||||
[/side]
|
||||
|
||||
#allies of Konrad
|
||||
|
@ -141,7 +141,7 @@ Defeat:
|
|||
recruit=Elvish Fighter,Elvish Archer,Elvish Ranger
|
||||
recruitment_pattern=fighter,archer
|
||||
gold=200
|
||||
enemy=2,3,4
|
||||
team_name=elves
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -152,7 +152,7 @@ Defeat:
|
|||
recruit=Elvish Shaman,Elvish Archer,Elvish Fighter
|
||||
recruitment_pattern=archer,fighter
|
||||
gold=200
|
||||
enemy=2,3,4
|
||||
team_name=elves
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -67,7 +67,6 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -77,7 +76,6 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Cavalry, Swordsman, Mage, Ogre, Duelist
|
||||
gold=500
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -87,7 +85,6 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Gryphon
|
||||
gold=0
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -34,8 +34,8 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=3
|
||||
shroud=yes
|
||||
team_name=good
|
||||
[/side]
|
||||
[side]
|
||||
type=Princess
|
||||
|
@ -47,7 +47,7 @@ Defeat:
|
|||
recruitment_pattern=fighter
|
||||
recruit=Swordsman,Heavy Infantry,Pikeman,Red Mage
|
||||
gold=200
|
||||
enemy=3
|
||||
team_name=good
|
||||
[/side]
|
||||
[side]
|
||||
type=Troll Warrior
|
||||
|
@ -58,7 +58,6 @@ Defeat:
|
|||
recruit=Troll,Troll Warrior,Blood Bat,Ogre,Wolf Rider
|
||||
gold=150
|
||||
income=15
|
||||
enemy=1,2
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -41,7 +41,6 @@ Defeat:
|
|||
type=Commander
|
||||
side=1
|
||||
canrecruit=1
|
||||
enemy=2,3
|
||||
controller=human
|
||||
[unit]
|
||||
description=Kalba
|
||||
|
@ -63,7 +62,7 @@ Defeat:
|
|||
type=Lich
|
||||
side=2
|
||||
canrecruit=1
|
||||
enemy=1
|
||||
team_name=undead
|
||||
recruit=Skeleton,Vampire Bat,Ghost,Dark Adept,Chocobone
|
||||
recruitment_pattern=scout,scout,fighter
|
||||
{GOLD 80 140 200}
|
||||
|
@ -73,7 +72,7 @@ Defeat:
|
|||
type=Lich
|
||||
side=3
|
||||
canrecruit=1
|
||||
enemy=1
|
||||
team_name=undead
|
||||
recruit=Skeleton,Skeleton Archer,Walking Corpse,Vampire Bat,Ghost,Dark Adept
|
||||
{GOLD 80 140 200}
|
||||
[/side]
|
||||
|
|
|
@ -32,7 +32,6 @@ Defeat:
|
|||
canrecruit=1
|
||||
controller=human
|
||||
recruit= Dark Adept,Ghost,Walking Corpse,Vampire Bat,Skeleton,Skeleton Archer
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
|
||||
|
@ -66,7 +65,7 @@ Defeat:
|
|||
gold=90
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=elves
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -98,7 +97,7 @@ Defeat:
|
|||
gold=120
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=elves
|
||||
[/side]
|
||||
[event]
|
||||
name=start
|
||||
|
|
|
@ -36,7 +36,6 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3
|
||||
fog=yes
|
||||
[/side]
|
||||
|
||||
|
@ -60,7 +59,7 @@ Defeat:
|
|||
|
||||
{GOLD 150 200 280}
|
||||
|
||||
enemy=1
|
||||
team_name=mages
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -79,10 +78,10 @@ Defeat:
|
|||
villages_per_scout=0
|
||||
{GOLD 150 250 350}
|
||||
{INCOME 15 30 50}
|
||||
enemy=1
|
||||
village_value=0
|
||||
leader_value=10
|
||||
aggression=1.0
|
||||
team_name=mages
|
||||
[/side]
|
||||
[event]
|
||||
name=start
|
||||
|
|
|
@ -39,7 +39,6 @@ Defeat:
|
|||
experience=0
|
||||
side=1
|
||||
canrecruit=1
|
||||
enemy=2,3
|
||||
controller=human
|
||||
[/side]
|
||||
|
||||
|
@ -66,7 +65,7 @@ Defeat:
|
|||
gold=80
|
||||
income=8
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -78,7 +77,7 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Orcish Grunt,Wolf Rider,Orcish Archer,Troll
|
||||
recruitment_pattern=scout,scout,fighter,fighter,archer
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
#ifdef HARD
|
||||
gold=200
|
||||
income=20
|
||||
|
@ -93,7 +92,7 @@ Defeat:
|
|||
gold=80
|
||||
income=10
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -33,8 +33,8 @@ Defeat
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2
|
||||
shroud=yes
|
||||
team_name=good
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -43,7 +43,6 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Orcish Warrior
|
||||
gold=0
|
||||
enemy=1
|
||||
aggression=1.0
|
||||
[unit]
|
||||
type=Blood Bat
|
||||
|
@ -89,7 +88,7 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Dwarvish Fighter
|
||||
gold=0
|
||||
enemy=4 #dummy non-existent side
|
||||
team_name=good
|
||||
|
||||
[unit]
|
||||
type=Dwarvish Fighter
|
||||
|
|
|
@ -10,42 +10,4 @@
|
|||
{DUSK}
|
||||
{FIRST_WATCH}
|
||||
{SECOND_WATCH}
|
||||
|
||||
[side]
|
||||
side=1
|
||||
enemy=2,3,4,5,6
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
[side]
|
||||
side=2
|
||||
enemy=1,3,4,5,6
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
side=3
|
||||
enemy=1,2,4,5,6
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
[side]
|
||||
side=4
|
||||
enemy=1,2,3,5,6
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
[side]
|
||||
side=5
|
||||
enemy=1,2,3,4,6
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
[side]
|
||||
side=6
|
||||
enemy=1,2,3,4,5
|
||||
canrecruit=1
|
||||
controller=human
|
||||
[/side]
|
||||
[/multiplayer]
|
||||
|
|
|
@ -34,7 +34,6 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3,4,5,6
|
||||
shroud=yes
|
||||
[/side]
|
||||
[side]
|
||||
|
@ -45,7 +44,7 @@ Defeat:
|
|||
controller=ai
|
||||
leader_value=10
|
||||
recruit=Goblin Knight,Wolf Rider,Troll,Orcish Warrior,Orcish Crossbow
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
|
||||
{GOLD 150 300 400}
|
||||
{INCOME 5 10 20}
|
||||
|
@ -58,7 +57,7 @@ Defeat:
|
|||
leader_value=10
|
||||
recruitment_pattern=fighter
|
||||
recruit=Troll,Troll Warrior,Ogre
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
{GOLD 150 300 400}
|
||||
{INCOME 5 10 20}
|
||||
[/side]
|
||||
|
@ -71,7 +70,7 @@ Defeat:
|
|||
leader_value=10
|
||||
recruitment_pattern=fighter,fighter,scout
|
||||
recruit=Troll,Troll Warrior,Ogre,Goblin Knight,Wolf Rider,Troll Whelp
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
|
||||
{GOLD 150 230 350}
|
||||
{INCOME 5 10 20}
|
||||
|
@ -85,7 +84,7 @@ Defeat:
|
|||
leader_value=10
|
||||
recruitment_pattern=fighter,fighter,scout
|
||||
recruit=Troll,Troll Warrior,Ogre,Goblin Knight,Wolf Rider,Troll Whelp
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
{GOLD 150 230 350}
|
||||
{INCOME 5 10 20}
|
||||
[/side]
|
||||
|
@ -97,7 +96,7 @@ Defeat:
|
|||
canrecruit=1
|
||||
controller=ai
|
||||
recruit=Troll
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
gold=0
|
||||
[/side]
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ Defeat:
|
|||
canrecruit=1
|
||||
controller=human
|
||||
recruit=Elvish Scout,Elvish Fighter,Elvish Archer,Horseman,Mage,Elvish Shaman,Merman
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -64,7 +63,7 @@ Defeat:
|
|||
gold=160
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -94,7 +93,7 @@ Defeat:
|
|||
income=20
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=orcs
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -30,7 +30,6 @@ Defeat
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -51,7 +50,6 @@ Defeat
|
|||
gold=300
|
||||
recruit=Troll Warrior,Wolf Rider,Orcish Crossbow
|
||||
#endif
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -31,7 +31,6 @@ Defeat
|
|||
canrecruit=1
|
||||
controller=human
|
||||
hitpoints=80
|
||||
enemy=2,3,4,5,6
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -46,7 +45,7 @@ Defeat
|
|||
#else
|
||||
gold=150
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=undead
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -61,7 +60,7 @@ Defeat
|
|||
#else
|
||||
gold=60
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=undead
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -76,7 +75,7 @@ Defeat
|
|||
#else
|
||||
gold=60
|
||||
#endif
|
||||
enemy=1
|
||||
team_name=undead
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -87,7 +86,7 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Skeleton,Walking Corpse,Ghoul
|
||||
gold=50
|
||||
enemy=1
|
||||
team_name=undead
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -98,7 +97,7 @@ Defeat
|
|||
canrecruit=1
|
||||
recruit=Skeleton Archer,Walking Corpse,Ghost
|
||||
gold=50
|
||||
enemy=1
|
||||
team_name=undead
|
||||
[/side]
|
||||
|
||||
[event]
|
||||
|
|
|
@ -34,8 +34,8 @@ Defeat:
|
|||
canrecruit=1
|
||||
controller=human
|
||||
recruit=Dwarvish Fighter,Dwarvish Thunderer
|
||||
enemy=3,4
|
||||
shroud=yes
|
||||
team_name=good
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -45,7 +45,7 @@ Defeat:
|
|||
canrecruit=1
|
||||
recruit=Dwarvish Fighter
|
||||
gold=150
|
||||
enemy=3,4
|
||||
team_name=good
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -59,7 +59,7 @@ Defeat:
|
|||
#else
|
||||
gold=200
|
||||
#endif
|
||||
enemy=1,2,4
|
||||
team_name=evil
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -73,7 +73,7 @@ Defeat:
|
|||
#else
|
||||
gold=300
|
||||
#endif
|
||||
enemy=1,2,3
|
||||
team_name=evil
|
||||
[/side]
|
||||
|
||||
[item]
|
||||
|
|
|
@ -37,7 +37,6 @@ Defeat:
|
|||
side=1
|
||||
canrecruit=1
|
||||
controller=human
|
||||
enemy=2,3,4
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -64,11 +63,10 @@ Defeat:
|
|||
gold=500
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=undead
|
||||
aggression=1.0
|
||||
village_value=0.0
|
||||
leader_value=50.0
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -93,11 +91,10 @@ Defeat:
|
|||
gold=500
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=undead
|
||||
aggression=1.0
|
||||
village_value=0.0
|
||||
leader_value=50.0
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
[side]
|
||||
|
@ -124,11 +121,10 @@ Defeat:
|
|||
gold=500
|
||||
#endif
|
||||
|
||||
enemy=1
|
||||
team_name=undead
|
||||
aggression=1.0
|
||||
village_value=0.0
|
||||
leader_value=50.0
|
||||
enemy=1
|
||||
[/side]
|
||||
|
||||
#define HOLY_WATER X Y ID
|
||||
|
|
14
src/map.cpp
14
src/map.cpp
|
@ -246,6 +246,15 @@ const gamemap::location& gamemap::starting_position(int n) const
|
|||
return startingPositions_[n];
|
||||
}
|
||||
|
||||
int gamemap::num_valid_starting_positions() const
|
||||
{
|
||||
const int res = is_starting_position(gamemap::location());
|
||||
if(res == -1)
|
||||
return num_starting_positions();
|
||||
else
|
||||
return res;
|
||||
}
|
||||
|
||||
int gamemap::num_starting_positions() const
|
||||
{
|
||||
return sizeof(startingPositions_)/sizeof(*startingPositions_);
|
||||
|
@ -253,10 +262,11 @@ int gamemap::num_starting_positions() const
|
|||
|
||||
int gamemap::is_starting_position(const gamemap::location& loc) const
|
||||
{
|
||||
const gamemap::location* const beg = startingPositions_+1;
|
||||
const gamemap::location* const end = startingPositions_+num_starting_positions();
|
||||
const gamemap::location* const pos = std::find(startingPositions_,end,loc);
|
||||
const gamemap::location* const pos = std::find(beg,end,loc);
|
||||
|
||||
return pos == end ? -1 : pos - startingPositions_;
|
||||
return pos == end ? -1 : pos - beg;
|
||||
}
|
||||
|
||||
void gamemap::set_starting_position(int side, const gamemap::location& loc)
|
||||
|
|
|
@ -96,8 +96,8 @@ public:
|
|||
|
||||
//functions to manipulate starting positions of the different sides.
|
||||
const location& starting_position(int side) const;
|
||||
int num_starting_positions() const;
|
||||
int is_starting_position(const location& loc) const;
|
||||
int num_valid_starting_positions() const;
|
||||
|
||||
void set_starting_position(int side, const location& loc);
|
||||
|
||||
|
@ -128,6 +128,8 @@ public:
|
|||
//clobbers over the terrain at location 'loc', with the given terrain
|
||||
void set_terrain(const location& loc, TERRAIN ter);
|
||||
private:
|
||||
int num_starting_positions() const;
|
||||
|
||||
std::vector<TERRAIN> terrainPrecedence_;
|
||||
std::map<TERRAIN,terrain_type> letterToTerrain_;
|
||||
std::map<std::string,terrain_type> terrain_;
|
||||
|
|
|
@ -504,6 +504,22 @@ int play_multiplayer(display& disp, game_data& units_data, config cfg,
|
|||
|
||||
gamemap map(cfg,map_data);
|
||||
|
||||
//if there are less sides in the configuration than there are starting
|
||||
//positions, then generate the additional sides
|
||||
const int map_positions = map.num_valid_starting_positions();
|
||||
std::cerr << "map_positions: " << map_positions << "\n";
|
||||
for(int pos = level_ptr->get_children("side").size(); pos < map_positions; ++pos) {
|
||||
std::cerr << "adding side...\n";
|
||||
config& side = level_ptr->add_child("side");
|
||||
side["enemy"] = "1";
|
||||
char buf[50];
|
||||
sprintf(buf,"%d",(pos+1));
|
||||
side["side"] = buf;
|
||||
side["team_name"] = buf;
|
||||
side["canrecruit"] = "1";
|
||||
side["controller"] = "human";
|
||||
}
|
||||
|
||||
const scoped_sdl_surface mini(image::getMinimap(145,145,map));
|
||||
|
||||
if(mini != NULL) {
|
||||
|
@ -522,14 +538,10 @@ int play_multiplayer(display& disp, game_data& units_data, config cfg,
|
|||
rect.h = 25;
|
||||
SDL_BlitSurface(playernum_bg, NULL, disp.video().getSurface(), &rect);
|
||||
config& level = *level_ptr;
|
||||
const config::child_itors sides = level.child_range("side");
|
||||
int sides_num;
|
||||
config::child_iterator sd;
|
||||
for(sd = sides.first; sd != sides.second; ++sd) {
|
||||
sides_num = sd - sides.first;
|
||||
}
|
||||
const int nsides = level.get_children("side").size();
|
||||
|
||||
std::stringstream players;
|
||||
players << "Players: " << sides_num + 1;
|
||||
players << "Players: " << nsides;
|
||||
font::draw_text(&disp,disp.screen_area(),12,font::GOOD_COLOUR,
|
||||
players.str(),rect.x+45,rect.y);
|
||||
update_rect(rect);
|
||||
|
|
|
@ -133,6 +133,8 @@ LEVEL_RESULT play_level(game_data& gameinfo, config& game_config,
|
|||
}
|
||||
}
|
||||
|
||||
const teams_manager team_manager(teams);
|
||||
|
||||
const config* const theme_cfg = game_config.find_child("theme","name",preferences::theme());
|
||||
const config dummy_cfg;
|
||||
display gui(units,video,map,status,teams,theme_cfg != NULL ? *theme_cfg : dummy_cfg);
|
||||
|
|
27
src/team.cpp
27
src/team.cpp
|
@ -20,6 +20,20 @@
|
|||
#include <cstdlib>
|
||||
#include <sstream>
|
||||
|
||||
namespace {
|
||||
const std::vector<team>* teams = NULL;
|
||||
}
|
||||
|
||||
teams_manager::teams_manager(const std::vector<team>& teams_list)
|
||||
{
|
||||
teams = &teams_list;
|
||||
}
|
||||
|
||||
teams_manager::~teams_manager()
|
||||
{
|
||||
teams = NULL;
|
||||
}
|
||||
|
||||
team::target::target(const config& cfg)
|
||||
: criteria(cfg), value(atof(cfg["value"].c_str()))
|
||||
{
|
||||
|
@ -35,6 +49,9 @@ team::team_info::team_info(const config& cfg)
|
|||
gold = cfg["gold"];
|
||||
income = cfg["income"];
|
||||
name = cfg["name"];
|
||||
team_name = cfg["team_name"];
|
||||
if(team_name.empty())
|
||||
team_name = cfg["side"];
|
||||
|
||||
const std::string& village_income = cfg["village_gold"];
|
||||
if(village_income.empty())
|
||||
|
@ -117,6 +134,7 @@ void team::team_info::write(config& cfg) const
|
|||
cfg["gold"] = gold;
|
||||
cfg["income"] = income;
|
||||
cfg["name"] = name;
|
||||
cfg["team_name"] = team_name;
|
||||
|
||||
char buf[50];
|
||||
sprintf(buf,"%d",income_per_village);
|
||||
|
@ -298,12 +316,17 @@ const std::string& team::name() const
|
|||
|
||||
bool team::is_enemy(int n) const
|
||||
{
|
||||
//if we have a team name, we are friends with anyone who has the same team name
|
||||
if(info_.team_name.empty() == false) {
|
||||
return teams != NULL && size_t(n-1) < teams->size() &&
|
||||
(*teams)[n-1].info_.team_name != info_.team_name;
|
||||
}
|
||||
|
||||
//if enemies aren't listed, then everyone is an enemy
|
||||
if(info_.enemies.empty())
|
||||
return true;
|
||||
|
||||
return std::find(info_.enemies.begin(),info_.enemies.end(),n) !=
|
||||
info_.enemies.end();
|
||||
return std::find(info_.enemies.begin(),info_.enemies.end(),n) != info_.enemies.end();
|
||||
}
|
||||
|
||||
double team::aggression() const
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
std::vector<std::string> recruitment_pattern;
|
||||
double aggression;
|
||||
std::vector<int> enemies;
|
||||
std::string team_name;
|
||||
|
||||
enum CONTROLLER { HUMAN, AI, NETWORK };
|
||||
CONTROLLER controller;
|
||||
|
@ -113,4 +114,9 @@ private:
|
|||
team_info info_;
|
||||
};
|
||||
|
||||
struct teams_manager {
|
||||
teams_manager(const std::vector<team>& teams);
|
||||
~teams_manager();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue