void ColourPickerActivity::OnMouseUp(int x, int y, unsigned button) { if(mouseDown || valueMouseDown) { int cr, cg, cb; HSV_to_RGB(currentHue, currentSaturation, currentValue, &cr, &cg, &cb); UpdateTextboxes(cr, cg, cb, currentAlpha); } if(mouseDown) { mouseDown = false; x -= Position.X+5; y -= Position.Y+5; currentHue = (float(x)/float(255))*359.0f; currentSaturation = 255-(y*2); if(currentSaturation > 255) currentSaturation = 255; if(currentSaturation < 0) currentSaturation = 0; if(currentHue > 359) currentHue = 359; if(currentHue < 0) currentHue = 0; } if(valueMouseDown) { valueMouseDown = false; x -= Position.X+5; y -= Position.Y+5; currentValue = x; if(currentValue > 255) currentValue = 255; if(currentValue < 0) currentValue = 0; } }
/* * Stage 1 */ void BattleScene::UpdateIntro() { while (!Engine::GetCryPlayer().TrackEnded()); UpdateTextboxes(); }
ColourPickerActivity::ColourPickerActivity(ui::Colour initialColour, ColourPickedCallback * callback) : WindowActivity(ui::Point(-1, -1), ui::Point(266, 175)), currentHue(0), currentSaturation(0), currentValue(0), mouseDown(false), valueMouseDown(false), callback(callback) { class ColourChange : public ui::TextboxAction { ColourPickerActivity * a; public: ColourChange(ColourPickerActivity * a) : a(a) {} void TextChangedCallback(ui::Textbox * sender) { int r, g, b, alpha; r = format::StringToNumber<int>(a->rValue->GetText()); g = format::StringToNumber<int>(a->gValue->GetText()); b = format::StringToNumber<int>(a->bValue->GetText()); alpha = format::StringToNumber<int>(a->aValue->GetText()); if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; if (alpha > 255) alpha = 255; RGB_to_HSV(r, g, b, &a->currentHue, &a->currentSaturation, &a->currentValue); a->currentAlpha = alpha; a->UpdateTextboxes(r, g, b, alpha); } }; rValue = new ui::Textbox(ui::Point(5, Size.Y-23), ui::Point(30, 17), "255"); rValue->SetActionCallback(new ColourChange(this)); rValue->SetLimit(3); rValue->SetInputType(ui::Textbox::Number); AddComponent(rValue); gValue = new ui::Textbox(ui::Point(40, Size.Y-23), ui::Point(30, 17), "255"); gValue->SetActionCallback(new ColourChange(this)); gValue->SetLimit(3); gValue->SetInputType(ui::Textbox::Number); AddComponent(gValue); bValue = new ui::Textbox(ui::Point(75, Size.Y-23), ui::Point(30, 17), "255"); bValue->SetActionCallback(new ColourChange(this)); bValue->SetLimit(3); bValue->SetInputType(ui::Textbox::Number); AddComponent(bValue); aValue = new ui::Textbox(ui::Point(110, Size.Y-23), ui::Point(30, 17), "255"); aValue->SetActionCallback(new ColourChange(this)); aValue->SetLimit(3); aValue->SetInputType(ui::Textbox::Number); AddComponent(aValue); hexValue = new::ui::Label(ui::Point(150, Size.Y-23), ui::Point(53, 17), "0xFFFFFFFF"); AddComponent(hexValue); class OkayAction: public ui::ButtonAction { ColourPickerActivity * a; public: OkayAction(ColourPickerActivity * a) : a(a) { } void ActionCallback(ui::Button * sender) { int Red, Green, Blue; Red = format::StringToNumber<int>(a->rValue->GetText()); Green = format::StringToNumber<int>(a->gValue->GetText()); Blue = format::StringToNumber<int>(a->bValue->GetText()); ui::Colour col(Red, Green, Blue, a->currentAlpha); if(a->callback) a->callback->ColourPicked(col); a->Exit(); } }; ui::Button * doneButton = new ui::Button(ui::Point(Size.X-45, Size.Y-23), ui::Point(40, 17), "Done"); doneButton->SetActionCallback(new OkayAction(this)); AddComponent(doneButton); SetOkayButton(doneButton); RGB_to_HSV(initialColour.Red, initialColour.Green, initialColour.Blue, ¤tHue, ¤tSaturation, ¤tValue); currentAlpha = initialColour.Alpha; UpdateTextboxes(initialColour.Red, initialColour.Green, initialColour.Blue, initialColour.Alpha); }