void drain(void) { int sp_drain = random(5) + 1; if(shining) { if(ENV(TO) != user) { tell_object(ENV(TO),"The stone stops shining.\n"); darken(); return; } if(sp_drain > user->query_spell_points()) { tell_object(user,"The stone grows dark as you have no more "+ "power to channel into it.\n"); darken(); return; } tell_object(user,"You channel some power into the stone to keep "+ "it shining.\n"); user->reduce_spell_points(sp_drain); set_alarm(300.0 + itof(random(120)),0.0,"drain"); } }
int drop(int silently) { if(shining) { W("The stone darkens as your bond to it is broken.\n"); darken(); } return 0; }
void FEBlend::platformApplySoftware() { FilterEffect* in = inputEffect(0); FilterEffect* in2 = inputEffect(1); ASSERT(m_mode > FEBLEND_MODE_UNKNOWN); ASSERT(m_mode <= FEBLEND_MODE_LIGHTEN); Uint8ClampedArray* dstPixelArray = createPremultipliedImageResult(); if (!dstPixelArray) return; IntRect effectADrawingRect = requestedRegionOfInputImageData(in->absolutePaintRect()); RefPtr<Uint8ClampedArray> srcPixelArrayA = in->asPremultipliedImage(effectADrawingRect); IntRect effectBDrawingRect = requestedRegionOfInputImageData(in2->absolutePaintRect()); RefPtr<Uint8ClampedArray> srcPixelArrayB = in2->asPremultipliedImage(effectBDrawingRect); unsigned pixelArrayLength = srcPixelArrayA->length(); ASSERT(pixelArrayLength == srcPixelArrayB->length()); for (unsigned pixelOffset = 0; pixelOffset < pixelArrayLength; pixelOffset += 4) { unsigned char alphaA = srcPixelArrayA->item(pixelOffset + 3); unsigned char alphaB = srcPixelArrayB->item(pixelOffset + 3); for (unsigned channel = 0; channel < 3; ++channel) { unsigned char colorA = srcPixelArrayA->item(pixelOffset + channel); unsigned char colorB = srcPixelArrayB->item(pixelOffset + channel); unsigned char result; switch (m_mode) { case FEBLEND_MODE_NORMAL: result = normal(colorA, colorB, alphaA, alphaB); break; case FEBLEND_MODE_MULTIPLY: result = multiply(colorA, colorB, alphaA, alphaB); break; case FEBLEND_MODE_SCREEN: result = screen(colorA, colorB, alphaA, alphaB); break; case FEBLEND_MODE_DARKEN: result = darken(colorA, colorB, alphaA, alphaB); break; case FEBLEND_MODE_LIGHTEN: result = lighten(colorA, colorB, alphaA, alphaB); break; case FEBLEND_MODE_UNKNOWN: default: result = 0; break; } dstPixelArray->set(pixelOffset + channel, result); } unsigned char alphaR = 255 - ((255 - alphaA) * (255 - alphaB)) / 255; dstPixelArray->set(pixelOffset + 3, alphaR); } }
void CloseScreen::draw() { // Used to provide a darkening layer between the last layer // and the layers before it sf::RectangleShape darken(sf::Vector2f((float)GraphicsManager::getInstance()->window.getSize().x, (float)GraphicsManager::getInstance()->window.getSize().y)); darken.setFillColor(sf::Color(0, 0, 0, fade.value/1.25f)); GraphicsManager::getInstance()->window.draw(darken); Screen::draw(); }
value weak_sub(value arr, value idx) { value v = Field(arr, VAL_TO_LONG(idx)); if (isdead(v)) { failwith("Dangling weak pointer"); } else { if (gc_phase == Phase_mark) { darken(v); } } return v; }
int do_darken(string str) { if(str == "stone" && TP->QS("attune") > 20 && ENV(TO) == TP) { if(!shining) { W("The stone is already dark!\n"); return 1; } W("You close off the flow of power into the stone and break the "+ "bond.\n"); darken(); W("The stone stops shining.\nYou feel a strange longing...\n"); S("The stone in " + TP->QN + "s hand stops shining.\n"); return 1; } }
void modify (value *fp, value val) { value old = *(fp); *(fp) = val; if (Is_in_heap (fp)) { if (gc_phase == Phase_mark) { darken(old); } if (IS_BLOCK(val) && Is_young (val) && ! (IS_BLOCK(old) && Is_young (old))) { *ref_table_ptr++ = (fp); if (ref_table_ptr >= ref_table_limit) { assert (ref_table_ptr == ref_table_limit); realloc_ref_table(); } } } }