7 #include "gfx/cockpit_generic.h"
8 #include "cmd/unit_generic.h"
14 using namespace FactionUtil;
20 assert(
factions[Myfaction]->
faction[TheirFaction].stats.index == TheirFaction );
21 return factions[Myfaction]->faction[TheirFaction].conversation.get();
26 if ( i >= 0 && i < (
int)
factions.size() )
31 static int GetFactionLookup(
const char *factionname )
34 #define strcasecmp stricmp
36 for (
unsigned int i = 0; i <
factions.size(); i++)
37 if (strcasecmp( factionname,
factions[i]->factionname ) == 0)
54 int *tmp = factioncache.
Get( name );
57 int i = GetFactionLookup( name.c_str() );
60 factioncache.
Put( name, tmp );
75 static std::string nullstr;
79 static bool isPlayerFaction(
const int MyFaction )
82 for (
unsigned int i = 0; i < numplayers; ++i) {
85 if (un->faction == MyFaction)
92 assert(
factions[Myfaction]->
faction[TheirFaction].stats.index == TheirFaction );
93 if (strcmp(
factions[Myfaction]->factionname,
"neutral" ) != 0) {
94 if (strcmp(
factions[Myfaction]->factionname,
"upgrades" ) != 0) {
95 if (strcmp(
factions[TheirFaction]->factionname,
"neutral" ) != 0) {
96 if (strcmp(
factions[TheirFaction]->factionname,
"upgrades" ) != 0) {
98 if (game_options.
AllowCivilWar || Myfaction != TheirFaction) {
99 factions[Myfaction]->faction[TheirFaction].relationship += factor*rank;
101 factions[Myfaction]->faction[TheirFaction].relationship = 1;
105 factions[TheirFaction]->faction[Myfaction].relationship =
106 factions[Myfaction]->faction[TheirFaction].relationship;
116 return factions[myfaction]->playlist;
120 return factions[myfaction]->sparkcolor;
128 for (
unsigned int i = 0; i <
factions.size(); i++) {
129 for (
unsigned int j = 0;
j <
factions[i]->faction.size();
j++)
138 for (
unsigned int i = 0; i <
factions.size(); i++) {
139 for (
unsigned int j = 0;
j <
factions[i]->faction.size();
j++) {
141 ret += string( temp );
143 sprintf( temp,
"\n" );
144 ret += string( temp );
151 for (
int i = 0; str[i]; i++)
152 count += (str[i] >=
'0' && str[i] <=
'9') ? 1 : 0;
157 for (
unsigned int i = 0; i <
factions.size(); i++) {
158 char *tmp =
new char[24*
factions[i]->faction.size()];
159 static char *bogus_return;
160 bogus_return = fgets( tmp, 24*factions[i]->
faction.size()-1, fp );
166 for (
unsigned int j = 0;
j < factions[i]->faction.size();
j++) {
167 if ( 1 != sscanf( tmp2,
"%f ", &factions[i]->
faction[
j].relationship ) )
170 bool founddig =
false;
172 if ( isdigit( tmp2[k] ) )
174 if ( founddig && (!isdigit( tmp2[k] ) && tmp2[k] !=
'.') )
179 if (*tmp2 ==
'\r' || *tmp2 ==
'\n')
187 for (; *inp; inp++) {
188 if (inp[0] ==
'\n' || inp[0] ==
'\r')
190 if (inp[0] !=
' ' && inp[0] !=
'\t')
209 for (
unsigned int i = 0; i <
factions.size(); i++) {
212 for (
unsigned int j = 0;
j <
factions[i]->faction.size();
j++) {
215 bool founddig =
false;
217 if ( isdigit( buf[k] ) )
219 if ( founddig && (!isdigit( buf[k] ) && buf[k] !=
'.') )