static bool SelectSpellTargetCursorRender() { if( !SPECIAL_DRAGINTER_RENDER && LOOKING_FOR_SPELL_TARGET ) { ArxDuration elapsed = arxtime.now() - LOOKING_FOR_SPELL_TARGET_TIME; if(elapsed > ArxDurationMs(7000)) { ARX_SOUND_PlaySFX(SND_MAGIC_FIZZLE, &player.pos); ARX_SPELLS_CancelSpellTarget(); } TextureContainer * surf; if(FlyingOverIO && (((LOOKING_FOR_SPELL_TARGET & 1) && (FlyingOverIO->ioflags & IO_NPC)) || ((LOOKING_FOR_SPELL_TARGET & 2) && (FlyingOverIO->ioflags & IO_ITEM))) ){ surf = cursorTargetOn; if(eeMouseUp1()) { ARX_SPELLS_LaunchSpellTarget(FlyingOverIO); } } else { surf = cursorTargetOff; if(GInput->actionPressed(CONTROLS_CUST_MAGICMODE)) { ARX_SOUND_PlaySFX(SND_MAGIC_FIZZLE, &player.pos); ARX_SPELLS_CancelSpellTarget(); } } Vec2f pos = Vec2f(DANAEMouse); if(TRUE_PLAYER_MOUSELOOK_ON) { pos = MemoMouse; } Vec2f texSize = Vec2f(surf->size()); pos += -texSize * 0.5f; EERIEDrawBitmap(Rectf(pos, texSize.x, texSize.y), 0.f, surf, Color::white); return true; } return false; }
void QuickSaveIconGui::draw() { if(m_remainingTime == 0) { return; } UseRenderState state(render2D().blend(BlendSrcColor, BlendOne).alphaCutout()); // Flash the icon twice, starting at about 0.7 opacity float step = 1.f - (m_remainingTime / m_duration); float alpha = std::min(1.f, 0.6f * (std::sin(step * (7.f / 2.f * glm::pi<float>())) + 1.f)); TextureContainer * tex = TextureContainer::LoadUI("graph/interface/icons/menu_main_save"); arx_assert(tex); Vec2f size = Vec2f(tex->size()); EERIEDrawBitmap(Rectf(Vec2f(0, 0), size.x, size.y), 0.f, tex, Color::gray(alpha)); }
void SecondaryInventoryHud::draw() { const INVENTORY_DATA * inventory = TSecondaryInventory; if(!inventory) return; bool _bSteal = (player.Interface & INTER_STEAL) != 0; arx_assert(m_defaultBackground); ingame_inventory = m_defaultBackground; if(inventory->io && !inventory->io->inventory_skin.empty()) { res::path file = "graph/interface/inventory" / inventory->io->inventory_skin; TextureContainer * tc = TextureContainer::LoadUI(file); if(tc) ingame_inventory = tc; } Rectf rect = Rectf(Vec2f(m_fadePosition * m_scale, 0.f), m_size.x * m_scale, m_size.y * m_scale); EERIEDrawBitmap(rect, 0.001f, ingame_inventory, Color::white); for(long y = 0; y < inventory->m_size.y; y++) { for(long x = 0; x < inventory->m_size.x; x++) { Entity *io = inventory->slot[x][y].io; if(!io) continue; bool bItemSteal = false; TextureContainer *tc = io->m_icon; TextureContainer *tc2 = NULL; if(NeedHalo(io)) tc2 = io->m_icon->getHalo(); if(_bSteal) { if(!ARX_PLAYER_CanStealItem(io)) { bItemSteal = true; tc = m_canNotSteal; tc2 = NULL; } } if(tc && (inventory->slot[x][y].show || bItemSteal)) { UpdateGoldObject(io); Vec2f p = Vec2f( (m_fadePosition * m_scale) + (float)x*(32 * m_scale) + (2 * m_scale), (float)y*(32 * m_scale) + (13 * m_scale) ); Vec2f size = Vec2f(tc->size()); Color color = (io->poisonous && io->poisonous_count!=0) ? Color::green : Color::white; Rectf rect(p, size.x * m_scale, size.y * m_scale); // TODO use alpha blending so this will be anti-aliased even w/o alpha to coverage EERIEDrawBitmap(rect, 0.001f, tc, color); Color overlayColor = Color::black; if(!bItemSteal && (io==FlyingOverIO)) overlayColor = Color::white; else if(!bItemSteal && (io->ioflags & IO_CAN_COMBINE)) { overlayColor = Color3f::gray(glm::abs(glm::cos(glm::radians(fDecPulse)))).to<u8>(); } if(overlayColor != Color::black) { GRenderer->SetBlendFunc(BlendSrcAlpha, BlendOne); GRenderer->SetRenderState(Renderer::AlphaBlending, true); EERIEDrawBitmap(rect, 0.001f, tc, overlayColor); GRenderer->SetRenderState(Renderer::AlphaBlending, false); } if(tc2) { ARX_INTERFACE_HALO_Draw(io, tc, tc2, p, Vec2f(m_scale)); } if((io->ioflags & IO_ITEM) && io->_itemdata->count != 1) ARX_INTERFACE_DrawNumber(p, io->_itemdata->count, 3, Color::white, m_scale); } } } if(!(player.Interface & INTER_COMBATMODE) && (player.Interface & INTER_MINIBACK)) { if(TSecondaryInventory) { Entity *temp = TSecondaryInventory->io; if(temp && !(temp->ioflags & IO_SHOP) && !(temp == ioSteal)) { m_pickAllButton.draw(); } m_closeButton.draw(); } } }