forked from 0ad/0ad
Load default player data from XML
This was SVN commit r3658.
This commit is contained in:
parent
afae448b11
commit
c2f13c689e
16
binaries/data/mods/official/temp/players.xml
Normal file
16
binaries/data/mods/official/temp/players.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- List of default players for single-player maps -->
|
||||||
|
<players>
|
||||||
|
|
||||||
|
<player name="Gaia" rgb="255 255 255"/> <!-- white -->
|
||||||
|
<player name="Player 1" rgb="112 112 208"/> <!-- blue -->
|
||||||
|
<player name="Acumen" rgb="208 112 112"/> <!-- red -->
|
||||||
|
<player name="Boco the Insignificant" rgb="112 208 112"/> <!-- green -->
|
||||||
|
<player name="NoMonkey the Magnificent" rgb="208 208 112"/> <!-- yellow -->
|
||||||
|
<player name="Wijit" rgb="112 208 208"/> <!-- turquoise -->
|
||||||
|
<player name="Ykkrosh" rgb="208 112 208"/> <!-- purple -->
|
||||||
|
<player name="Code Monkey" rgb="208 160 112"/> <!-- orange -->
|
||||||
|
<player name="Clausewitz" rgb="160 160 160"/> <!-- grey -->
|
||||||
|
|
||||||
|
</players>
|
@ -50,7 +50,10 @@ bool CUnit::SetRandomAnimation(const CStr& name, bool once, float speed)
|
|||||||
CSkeletonAnim* anim = GetRandomAnimation(name);
|
CSkeletonAnim* anim = GetRandomAnimation(name);
|
||||||
if (anim)
|
if (anim)
|
||||||
{
|
{
|
||||||
m_Model->SetAnimation(anim, once, speed ? speed*anim->m_AnimDef->GetDuration() : 1000.f);
|
float actualSpeed = 1000.f;
|
||||||
|
if (speed && anim->m_AnimDef)
|
||||||
|
actualSpeed = speed * anim->m_AnimDef->GetDuration();
|
||||||
|
m_Model->SetAnimation(anim, once, actualSpeed);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -81,7 +81,7 @@ public:
|
|||||||
// Otherwise, complain.
|
// Otherwise, complain.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG(WARNING, "gui", "add_color effect has some components >127 and some <127 - colours will be clamped");
|
LOG(WARNING, "gui", "add_color effect has some components above 127 and some below -127 - colours will be clamped");
|
||||||
m_Color = CColor(c.r+0.5f, c.g+0.5f, c.b+0.5f, c.a+0.5f);
|
m_Color = CColor(c.r+0.5f, c.g+0.5f, c.b+0.5f, c.a+0.5f);
|
||||||
m_Method = ADD_SIGNED;
|
m_Method = ADD_SIGNED;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "ConfigDB.h"
|
#include "ConfigDB.h"
|
||||||
#include "Network/ServerSession.h"
|
#include "Network/ServerSession.h"
|
||||||
#include "CLogger.h"
|
#include "CLogger.h"
|
||||||
|
#include "ps/XML/Xeromyces.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -197,36 +198,40 @@ CGameAttributes::CGameAttributes():
|
|||||||
AddSynchedProperty(L"numSlots", &m_NumSlots, &CGameAttributes::OnNumSlotsUpdate);
|
AddSynchedProperty(L"numSlots", &m_NumSlots, &CGameAttributes::OnNumSlotsUpdate);
|
||||||
AddSynchedProperty(L"losSetting", &m_LOSSetting);
|
AddSynchedProperty(L"losSetting", &m_LOSSetting);
|
||||||
|
|
||||||
m_Players.resize(9);
|
CXeromyces XeroFile;
|
||||||
for (int i=0;i<9;i++)
|
if (XeroFile.Load("temp/players.xml") != PSRETURN_OK)
|
||||||
m_Players[i]=new CPlayer(i);
|
{
|
||||||
|
LOG(ERROR, "", "Failed to load players list (temp/players.xml)");
|
||||||
m_Players[0]->SetName(L"Gaia");
|
|
||||||
m_Players[0]->SetColour(SPlayerColour(1.0f, 1.0f, 1.0f)); //White
|
// Basic default players
|
||||||
|
|
||||||
m_Players[1]->SetName(L"Player 1");
|
m_Players.push_back(new CPlayer(0));
|
||||||
m_Players[1]->SetColour(SPlayerColour(0.4375f, 0.4375f, 0.8125f)); // Blue
|
m_Players.back()->SetName(L"Gaia");
|
||||||
|
m_Players.back()->SetColour(SPlayerColour(1.0f, 1.0f, 1.0f));
|
||||||
m_Players[2]->SetName(L"Acumen");
|
|
||||||
m_Players[2]->SetColour(SPlayerColour(0.8125f, 0.4375f, 0.4375f)); //Red
|
m_Players.push_back(new CPlayer(1));
|
||||||
|
m_Players.back()->SetName(L"Player 1");
|
||||||
m_Players[3]->SetName(L"Boco the Insignificant");
|
m_Players.back()->SetColour(SPlayerColour(0.4375f, 0.4375f, 0.8125f));
|
||||||
m_Players[3]->SetColour(SPlayerColour(0.4375f, 0.8125f, 0.4375f)); //Green
|
}
|
||||||
|
else
|
||||||
m_Players[4]->SetName(L"NoMonkey the Magnificent");
|
{
|
||||||
m_Players[4]->SetColour(SPlayerColour(0.8125f, 0.8125f, 0.4375f)); //Yellow
|
int at_name = XeroFile.getAttributeID("name");
|
||||||
|
int at_rgb = XeroFile.getAttributeID("rgb");
|
||||||
m_Players[5]->SetName(L"Wijit");
|
|
||||||
m_Players[5]->SetColour(SPlayerColour(0.4375f, 0.8125f, 0.8125f)); //Turquoise
|
XMBElement root = XeroFile.getRoot();
|
||||||
|
XERO_ITER_EL(root, player)
|
||||||
m_Players[6]->SetName(L"Ykkrosh");
|
{
|
||||||
m_Players[6]->SetColour(SPlayerColour(0.8125f, 0.4375f, 0.8125f)); //Purple
|
XMBAttributeList attr = player.getAttributes();
|
||||||
|
m_Players.push_back(new CPlayer((int)m_Players.size()));
|
||||||
m_Players[7]->SetName(L"Code Monkey");
|
m_Players.back()->SetName(attr.getNamedItem(at_name));
|
||||||
m_Players[7]->SetColour(SPlayerColour(0.8125f, 0.625f, 0.4375f)); //Orange
|
|
||||||
|
std::stringstream str;
|
||||||
m_Players[8]->SetName(L"Clausewitz");
|
str << (CStr)attr.getNamedItem(at_rgb);
|
||||||
m_Players[8]->SetColour(SPlayerColour(0.625f, 0.625f, 0.625f)); //Gray
|
int r, g, b;
|
||||||
|
if (str >> r >> g >> b)
|
||||||
|
m_Players.back()->SetColour(SPlayerColour(r/255.0f, g/255.0f, b/255.0f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<CPlayer *>::iterator it=m_Players.begin();
|
std::vector<CPlayer *>::iterator it=m_Players.begin();
|
||||||
++it; // Skip Gaia - gaia doesn't account for a slot
|
++it; // Skip Gaia - gaia doesn't account for a slot
|
||||||
|
Loading…
Reference in New Issue
Block a user