/** * Draws the medikit view. */ void MedikitView::draw() { SurfaceSet *set = _game->getMod()->getSurfaceSet("MEDIBITS.DAT"); int fatal_wound = _unit->getFatalWound(_selectedPart); std::wostringstream ss, ss1; int green = 0; int red = 3; if (_game->getMod()->getInterface("medikit") && _game->getMod()->getInterface("medikit")->getElement("body")) { green = _game->getMod()->getInterface("medikit")->getElement("body")->color; red = _game->getMod()->getInterface("medikit")->getElement("body")->color2; } this->lock(); for (unsigned int i = 0; i < set->getTotalFrames(); i++) { int wound = _unit->getFatalWound(i); Surface * surface = set->getFrame (i); int baseColor = wound ? red : green; surface->blitNShade(this, Surface::getX(), Surface::getY(), 0, false, baseColor); } this->unlock(); _redraw = false; if (_selectedPart == -1) { return; } ss << _game->getLanguage()->getString(PARTS_STRING[_selectedPart]); ss1 << fatal_wound; _partTxt->setText(ss.str()); _woundTxt->setText(ss1.str()); }
/** * Handles clicks on the medikit view. * @param action Pointer to an action. * @param state State that the action handlers belong to. */ void MedikitView::mouseClick (Action *action, State *) { SurfaceSet *set = _game->getMod()->getSurfaceSet("MEDIBITS.DAT"); int x = action->getRelativeXMouse() / action->getXScale(); int y = action->getRelativeYMouse() / action->getYScale(); for (unsigned int i = 0; i < set->getTotalFrames(); i++) { Surface * surface = set->getFrame (i); if (surface->getPixel(x, y)) { _selectedPart = i; _redraw = true; break; } } }