コード例 #1
0
ファイル: tile.cpp プロジェクト: hhirsch/keeperrl
Tile getAsciiTile(const ViewObject& obj) {
  ViewId id = obj.id();
  if (id == ViewId::SPECIAL_BEAST)
    return getSpecialCreature(obj, false);
  if (id == ViewId::SPECIAL_HUMANOID)
    return getSpecialCreature(obj, true);
  if (symbols.count(id))
    return symbols.at(id);
  else
    FAIL << "unhandled view id " << EnumInfo<ViewId>::getString(id);
  return Tile::unicode(' ', ColorId(0));
}
コード例 #2
0
ファイル: tile.cpp プロジェクト: Ancurio/keeperrl
Tile getSpecialCreature(const ViewObject& obj, bool humanoid) {
  RandomGen r;
  r.init(hash<string>()(obj.getBareDescription()));
  string let = humanoid ? "WETUIPLKJHFAXBM" : "qwetyupkfaxbnm";
  char c;
  if (contains(let, obj.getBareDescription()[0]))
    c = obj.getBareDescription()[0];
  else
  if (contains(let, tolower(obj.getBareDescription()[0])))
    c = tolower(obj.getBareDescription()[0]);
  else
    c = let[r.get(let.size())];
  return Tile::unicode(c, ColorId(Random.get(EnumInfo<ColorId>::getSize())));
}