/*
* This file is part of Deliantra, the Roguelike Realtime MMORPG.
*
* Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
*
* Deliantra is free software: you can redistribute it and/or modify it under
* the terms of the Affero GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the Affero GNU General Public License
* and the GNU General Public License along with this program. If not, see
* .
*
* The authors can be reached via e-mail to
*/
#include
#include
#include "face.h"
#include "crc.h"
faceidx blank_face, empty_face, magicmouth_face;
facehash_t facehash;
std::vector faces;
faceidx
face_find (const char *name, faceidx defidx)
{
if (!name)
return defidx;
facehash_t::iterator i = facehash.find (name);
return i == facehash.end ()
? defidx : i->second;
}
faceinfo *
face_info (faceidx idx)
{
assert (0 < (faceidx)-1); // faceidx must be unsigned
if (idx >= faces.size ())
return 0;
return &faces [idx];
}
facedata *
faceinfo::data (int faceset) const
{
if (!face [faceset].data.size ())
faceset = 0;
return (facedata *)(face + faceset);
}
facedata *
face_data (faceidx idx, int faceset)
{
if (faceinfo *f = face_info (idx))
return f->data (faceset);
return 0;
}