本文整理汇总了C++中ViewObject类的典型用法代码示例。如果您正苦于以下问题:C++ ViewObject类的具体用法?C++ ViewObject怎么用?C++ ViewObject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ViewObject类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSpriteTile
Tile getSpriteTile(const ViewObject& obj) {
if (obj.id() == ViewId::SPECIAL_BEAST)
return getSpecialCreatureSprite(obj, false);
if (obj.id() == ViewId::SPECIAL_HUMANOID)
return getSpecialCreatureSprite(obj, true);
return getSprite(obj.id());
}
示例2: Vec2
Vec2 MapGui::getMovementOffset(const ViewObject& object, Vec2 size, double time, int curTimeReal) {
if (!object.hasAnyMovementInfo())
return Vec2(0, 0);
double state;
Vec2 dir;
if (screenMovement &&
curTimeReal >= screenMovement->startTimeReal &&
curTimeReal <= screenMovement->endTimeReal) {
state = (double(curTimeReal) - screenMovement->startTimeReal) /
(screenMovement->endTimeReal - screenMovement->startTimeReal);
dir = object.getMovementInfo(screenMovement->startTimeGame, screenMovement->endTimeGame,
screenMovement->creatureId);
} else if (object.hasAnyMovementInfo() && !screenMovement) {
ViewObject::MovementInfo info = object.getLastMovementInfo();
dir = info.direction;
if (info.direction.length8() == 0 || time >= info.tEnd || time <= info.tBegin)
return Vec2(0, 0);
state = (time - info.tBegin) / (info.tEnd - info.tBegin);
double minStopTime = 0.2;
state = min(1.0, max(0.0, (state - minStopTime) / (1.0 - 2 * minStopTime)));
} else
return Vec2(0, 0);
if (object.getLastMovementInfo().type == ViewObject::MovementInfo::ATTACK)
if (dir.length8() == 1)
return Vec2(0.8 * (state < 0.5 ? state : 1 - state) * dir.x * size.x,
(0.8 * (state < 0.5 ? state : 1 - state)* dir.y - getJumpOffset(object, state)) * size.y);
return Vec2((state - 1) * dir.x * size.x, ((state - 1)* dir.y - getJumpOffset(object, state)) * size.y);
}
示例3: insert
void ViewIndex::insert(ViewObject obj) {
PROFILE;
int ind = objIndex[int(obj.layer())];
if (ind < 100)
objects[ind] = std::move(obj);
else {
objIndex[int(obj.layer())] = objects.size();
objects.push_back(std::move(obj));
}
}
示例4: animation_thread
static int32 animation_thread(void *cookie)
{
ViewObject *view = (ViewObject *) cookie;
while (1)
{
view->Render();
view->GLCheckError();
snooze(1);
}
return B_OK; // keep compiler happy
}
示例5: drawMorale
void MapGui::drawCreatureHighlights(Renderer& renderer, const ViewObject& object, Rectangle tile) {
if (object.hasModifier(ViewObject::Modifier::PLAYER)) {
renderer.drawFilledRectangle(tile, Color::Transparent, colors[ColorId::LIGHT_GRAY]);
}
if (object.hasModifier(ViewObject::Modifier::DRAW_MORALE) && showMorale)
drawMorale(renderer, tile, object.getAttribute(ViewObject::Attribute::MORALE));
if (object.hasModifier(ViewObject::Modifier::TEAM_LEADER_HIGHLIGHT)) {
renderer.drawFilledRectangle(tile, Color::Transparent, colors[ColorId::YELLOW]);
} else
if (object.hasModifier(ViewObject::Modifier::TEAM_HIGHLIGHT)) {
renderer.drawFilledRectangle(tile, Color::Transparent, transparency(colors[ColorId::YELLOW], 120));
}
}
示例6: getSpecialCreature
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())));
}
示例7: getColor
Color Tile::getColor(const ViewObject& object) {
if (object.hasModifier(ViewObject::Modifier::INVISIBLE))
return colors[ColorId::DARK_GRAY];
if (object.hasModifier(ViewObject::Modifier::HIDDEN))
return colors[ColorId::LIGHT_GRAY];
double bleeding = object.getAttribute(ViewObject::Attribute::BLEEDING);
if (bleeding > 0)
bleeding = 0.5 + bleeding / 2;
bleeding = min(1., bleeding);
Color color = getAsciiTile(object).color;
return Color(
(1 - bleeding) * color.r + bleeding * 255,
(1 - bleeding) * color.g,
(1 - bleeding) * color.b);
}
示例8: getColor
Color Tile::getColor(const ViewObject& object) {
if (object.hasModifier(ViewObject::INVISIBLE))
return darkGray;
if (object.hasModifier(ViewObject::HIDDEN))
return lightGray;
double bleeding = object.getBleeding();
if (bleeding > 0)
bleeding = 0.5 + bleeding / 2;
bleeding = min(1., bleeding);
Color color = getAsciiTile(object).color;
return Color(
(1 - bleeding) * color.r + bleeding * 255,
(1 - bleeding) * color.g,
(1 - bleeding) * color.b);
}
示例9: getSpecialCreature
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.getRandom(let.size())];
Color col(r.getRandom(80, 250), r.getRandom(80, 250), 0);
return Tile(c, col);
}
示例10: getSpecialCreatureSprite
Tile getSpecialCreatureSprite(const ViewObject& obj, bool humanoid) {
RandomGen r;
r.init(hash<string>()(obj.getBareDescription()));
if (humanoid)
return Tile::byCoord(r.get(7), 10);
else
return Tile::byCoord(r.get(7, 10), 10);
}
示例11: getJumpOffset
static double getJumpOffset(const ViewObject& object, double state) {
if (object.hasModifier(ViewObjectModifier::NO_UP_MOVEMENT))
return 0;
if (state > 0.5)
state -= 0.5;
state *= 2;
const double maxH = 0.09;
return maxH * (1.0 - (2.0 * state - 1) * (2.0 * state - 1));
}
示例12: getAsciiTile
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));
}
示例13: updateObjects
void MapGui::updateObjects(const MapMemory* mem) {
lastMemory = mem;
floorIds.clear();
shadowed.clear();
for (Vec2 wpos : layout->getAllTiles(getBounds(), objects.getBounds()))
if (auto& index = objects[wpos]) {
if (index->hasObject(ViewLayer::FLOOR)) {
ViewObject object = index->getObject(ViewLayer::FLOOR);
if (object.hasModifier(ViewObject::Modifier::CASTS_SHADOW)) {
shadowed.erase(wpos);
shadowed.insert(wpos + Vec2(0, 1));
}
if (auto id = getConnectionId(object))
floorIds.insert(make_pair(wpos, *id));
} else if (index->hasObject(ViewLayer::FLOOR_BACKGROUND)) {
if (auto id = getConnectionId(index->getObject(ViewLayer::FLOOR_BACKGROUND)))
floorIds.insert(make_pair(wpos, *id));
} else if (auto viewId = index->getHiddenId())
if (auto id = getConnectionId(*viewId))
floorIds.insert(make_pair(wpos, *id));
}
}
示例14: drawCreatureHighlight
void MapGui::drawCreatureHighlights(Renderer& renderer, const ViewObject& object, Vec2 pos, Vec2 sz, int curTime) {
if (object.hasModifier(ViewObject::Modifier::PLAYER))
drawCreatureHighlight(renderer, pos, sz, colors[ColorId::ALMOST_WHITE]);
if (object.hasModifier(ViewObject::Modifier::DRAW_MORALE) && showMorale)
drawCreatureHighlight(renderer, pos, sz, getMoraleColor(object.getAttribute(ViewObject::Attribute::MORALE)));
if (object.hasModifier(ViewObject::Modifier::TEAM_LEADER_HIGHLIGHT) && (curTime / 1000) % 2) {
drawCreatureHighlight(renderer, pos, sz, colors[ColorId::YELLOW]);
} else
if (object.hasModifier(ViewObject::Modifier::TEAM_HIGHLIGHT))
drawCreatureHighlight(renderer, pos, sz, colors[ColorId::YELLOW]);
if (object.getCreatureId()) {
Color c = getCreatureHighlight(*object.getCreatureId(), curTime);
if (c.a > 0)
drawCreatureHighlight(renderer, pos, sz, c);
}
}
示例15: drawViewObject
void Renderer::drawViewObject(Vec2 pos, const ViewObject& object, bool useSprite, double scale) {
drawViewObject(pos, object.id(), useSprite, scale, getBleedingColor(object));
}