[Balder-cvs] balder2d/src/menu sampleprobewidget.cpp,NONE,1.1 menu.cpp,1.17,1.18
Status: Beta
Brought to you by:
holomorph
From: Bjorn H. <hol...@us...> - 2006-03-22 21:17:59
|
Update of /cvsroot/balder/balder2d/src/menu In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17465/src/menu Modified Files: menu.cpp Added Files: sampleprobewidget.cpp Log Message: moved AI selector box to top of player setup screen and created SampleProbeWidget to draw the sample probe Index: menu.cpp =================================================================== RCS file: /cvsroot/balder/balder2d/src/menu/menu.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** menu.cpp 22 Mar 2006 06:26:11 -0000 1.17 --- menu.cpp 22 Mar 2006 21:16:40 -0000 1.18 *************** *** 19,31 **** ***************************************************************************/ - #include <SDL/SDL.h> - #include <SDL/SDL_image.h> #include <SDL/SDL_mixer.h> #include "../../include/menu/menu.h" #include "../../include/menu/maplistmodel.h" #include "../../include/menu/ailistmodel.h" #include "../../include/configmanager.h" #include "../../include/input.h" - #include <SDL/SDL_gfxPrimitives.h> #include <iostream> #include <sstream> --- 19,29 ---- ***************************************************************************/ #include <SDL/SDL_mixer.h> #include "../../include/menu/menu.h" + #include "../../include/menu/sampleprobewidget.h" #include "../../include/menu/maplistmodel.h" #include "../../include/menu/ailistmodel.h" #include "../../include/configmanager.h" #include "../../include/input.h" #include <iostream> #include <sstream> *************** *** 35,40 **** Menu::Menu(): startgame(false), bindNextKey(false) { - startMSec = SDL_GetTicks(); - //screen = SDL_GetVideoSurface(); --- 33,36 ---- *************** *** 80,89 **** topContainer->add(headerIcon, 250, 40); - // Loads sprite for sample probe. - sprite = IMG_Load("probe.png"); - if (sprite == 0){ - throw "could not load Probe sprite!"; - } - // now initialize other menus InitMainMenu(); --- 76,79 ---- *************** *** 117,121 **** delete playersMenu; delete topContainer; - SDL_FreeSurface(sprite); } --- 107,110 ---- *************** *** 134,139 **** gui->draw(); // update the screen - if (playersMenu->isVisible()) DrawSampleProbe(screen, Sint16(colorLeft + playersMenu->getX() + (redIcon->getWidth() / 2) - (PROBEWIDTH / 2) - 1), Sint16(colorTop + playersMenu->getY())); - SDL_UpdateRect(screen,0,0,0,0); } --- 123,126 ---- *************** *** 250,262 **** } else if (action == "changeAIScript") { ! ConfigManager::SetControlType(currentPlayer, ailistModel->getElementAt(aiListBox->getSelected()).c_str()); } else if (action == "colorChange") { ! Uint32 rgbColor = Uint8(redSlider->getValue()); ! rgbColor = rgbColor << 8; ! rgbColor += Uint8(greenSlider->getValue()); ! rgbColor = rgbColor << 8; ! rgbColor += Uint8(blueSlider->getValue()); ! ConfigManager::SetPlayerColor(currentPlayer, rgbColor); } --- 237,249 ---- } else if (action == "changeAIScript") { ! ConfigManager::SetControlType(currentPlayer, ailistModel->getElementAt(aiListBox->getSelected()).c_str()); } else if (action == "colorChange") { ! Uint32 rgbColor = Uint8(redSlider->getValue()); ! rgbColor = rgbColor << 8; ! rgbColor += Uint8(greenSlider->getValue()); ! rgbColor = rgbColor << 8; ! rgbColor += Uint8(blueSlider->getValue()); ! sampleProbe->setProbeColor((rgbColor << 8) + 0xFF); ConfigManager::SetPlayerColor(currentPlayer, rgbColor); } *************** *** 352,369 **** fireLabel->setCaption(ConfigManager::GetPlayerControl(currentPlayer, "fire")); ! // Refreshes the color sliders. ! probe_color playerColor = ConfigManager::GetPlayerColor(currentPlayer, 255); ! playerColor = playerColor >> 8; ! Uint8 cBlue = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cGreen = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cRed = Uint8(playerColor); redSlider->setValue(double(cRed)); greenSlider->setValue(double(cGreen)); blueSlider->setValue(double(cBlue)); ! // Refreshes the AI script selector for the players menu ! aiDropDown->setSelected(ailistModel->FindScriptIndex(ConfigManager::GetControlType(currentPlayer))); } --- 339,357 ---- fireLabel->setCaption(ConfigManager::GetPlayerControl(currentPlayer, "fire")); ! // Refreshes the color sliders. ! probe_color playerColor = ConfigManager::GetPlayerColor(currentPlayer, 255); ! sampleProbe->setProbeColor(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cBlue = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cGreen = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cRed = Uint8(playerColor); redSlider->setValue(double(cRed)); greenSlider->setValue(double(cGreen)); blueSlider->setValue(double(cBlue)); ! // Refreshes the AI script selector for the players menu ! aiDropDown->setSelected(ailistModel->FindScriptIndex(ConfigManager::GetControlType(currentPlayer))); } *************** *** 609,627 **** setFireButton->addActionListener(this); fireLabel = new gcn::Label(ConfigManager::GetPlayerControl(currentPlayer, "fire")); ! ! // Loads colors from config file to init color sliders. ! probe_color playerColor = ConfigManager::GetPlayerColor(currentPlayer, 255); ! playerColor = playerColor >> 8; ! Uint8 cBlue = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cGreen = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cRed = Uint8(playerColor); redImage= new gcn::Image("menu/redspectrum.png"); redIcon = new gcn::Icon(redImage); redSlider = new gcn::Slider(0, 255); ! redSlider->setWidth(redIcon->getWidth()); ! redSlider->setHeight(15); redSlider->setValue(double(cRed)); redSlider->setEventId("colorChange"); --- 597,617 ---- setFireButton->addActionListener(this); fireLabel = new gcn::Label(ConfigManager::GetPlayerControl(currentPlayer, "fire")); ! ! // Loads colors from config file to init color sliders. ! probe_color playerColor = ConfigManager::GetPlayerColor(currentPlayer, 255); ! sampleProbe = new SampleProbeWidget(); ! sampleProbe->setProbeColor(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cBlue = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cGreen = Uint8(playerColor); ! playerColor = playerColor >> 8; ! Uint8 cRed = Uint8(playerColor); redImage= new gcn::Image("menu/redspectrum.png"); redIcon = new gcn::Icon(redImage); redSlider = new gcn::Slider(0, 255); ! redSlider->setWidth(redIcon->getWidth()); ! redSlider->setHeight(15); redSlider->setValue(double(cRed)); redSlider->setEventId("colorChange"); *************** *** 631,636 **** greenIcon = new gcn::Icon(greenImage); greenSlider = new gcn::Slider(0, 255); ! greenSlider->setWidth(redIcon->getWidth()); ! greenSlider->setHeight(15); greenSlider->setValue(double(cGreen)); greenSlider->setEventId("colorChange"); --- 621,626 ---- greenIcon = new gcn::Icon(greenImage); greenSlider = new gcn::Slider(0, 255); ! greenSlider->setWidth(redIcon->getWidth()); ! greenSlider->setHeight(15); greenSlider->setValue(double(cGreen)); greenSlider->setEventId("colorChange"); *************** *** 640,645 **** blueIcon = new gcn::Icon(blueImage); blueSlider = new gcn::Slider(0, 255); ! blueSlider->setWidth(redIcon->getWidth()); ! blueSlider->setHeight(15); blueSlider->setValue(double(cBlue)); blueSlider->setEventId("colorChange"); --- 630,635 ---- blueIcon = new gcn::Icon(blueImage); blueSlider = new gcn::Slider(0, 255); ! blueSlider->setWidth(redIcon->getWidth()); ! blueSlider->setHeight(15); blueSlider->setValue(double(cBlue)); blueSlider->setEventId("colorChange"); *************** *** 671,703 **** playersMenu->add(fireLabel, setFireButton->getWidth(), 240); ! // Color selection controls for the selected player. ! colorTop = 60; // This sets the top most position for the color selection interface. ! colorLeft = 400; // This sets the left most position for the color selection interface. ! playersMenu->add(redIcon, colorLeft, colorTop + PROBEHEIGHT + 10); ! playersMenu->add(redSlider, colorLeft, colorTop + PROBEHEIGHT + 10 + redIcon->getHeight()); ! playersMenu->add(greenIcon, colorLeft, colorTop + PROBEHEIGHT + 10 + redIcon->getHeight() + redSlider->getHeight() + 10); ! playersMenu->add(greenSlider, colorLeft, colorTop + PROBEHEIGHT + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight()); ! playersMenu->add(blueIcon, colorLeft, colorTop + PROBEHEIGHT + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight() + greenSlider->getHeight() + 10); ! playersMenu->add(blueSlider, colorLeft, colorTop + PROBEHEIGHT + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight() + greenSlider->getHeight() + 10 + blueIcon->getHeight()); ! // AI Script Listbox ! playersMenu->add(aiDropDown, colorLeft, setFireButton->getY()); playersMenu->add(aiLabel, aiDropDown->getX() - aiLabel->getWidth(), aiDropDown->getY()); } - - void Menu::DrawSampleProbe(SDL_Surface* destination, Sint16 xLeft, Sint16 yTop) - { - filledCircleColor(destination, xLeft + (PROBEWIDTH / 2), yTop + (PROBEHEIGHT / 2), (PROBEWIDTH / 2) - 1, ConfigManager::GetPlayerColor(currentPlayer, 255)); - - SDL_Rect source = {(PROBEWIDTH * probeFrame), 0, PROBEWIDTH, PROBEHEIGHT}; - SDL_Rect target = {xLeft, yTop, PROBEWIDTH, PROBEHEIGHT}; - SDL_BlitSurface( sprite, &source, destination, &target); - - currentMSec = SDL_GetTicks(); - if (currentMSec >= startMSec + FRAME_INTERVAL) { - if (probeFrame < MAXFRAME) probeFrame++; - else probeFrame = 0; - startMSec = currentMSec; - } - } --- 661,678 ---- playersMenu->add(fireLabel, setFireButton->getWidth(), 240); ! // Color selection controls for the selected player. ! colorTop = 60; // This sets the top most position for the color selection interface. ! colorLeft = 400; // This sets the left most position for the color selection interface. ! playersMenu->add(sampleProbe, colorLeft +(redIcon->getWidth() - sampleProbe->getWidth())/2, colorTop); ! playersMenu->add(redIcon, colorLeft, colorTop + sampleProbe->getHeight() + 10); ! playersMenu->add(redSlider, colorLeft, colorTop + sampleProbe->getHeight() + 10 + redIcon->getHeight()); ! playersMenu->add(greenIcon, colorLeft, colorTop + sampleProbe->getHeight() + 10 + redIcon->getHeight() + redSlider->getHeight() + 10); ! playersMenu->add(greenSlider, colorLeft, colorTop + sampleProbe->getHeight() + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight()); ! playersMenu->add(blueIcon, colorLeft, colorTop + sampleProbe->getHeight() + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight() + greenSlider->getHeight() + 10); ! playersMenu->add(blueSlider, colorLeft, colorTop + sampleProbe->getHeight() + 10 + redIcon->getHeight() + redSlider->getHeight() + 10 + greenIcon->getHeight() + greenSlider->getHeight() + 10 + blueIcon->getHeight()); ! // AI Script Listbox ! playersMenu->add(aiDropDown, colorLeft, nextPlayerButton->getY()); playersMenu->add(aiLabel, aiDropDown->getX() - aiLabel->getWidth(), aiDropDown->getY()); } --- NEW FILE: sampleprobewidget.cpp --- /*************************************************************************** * Copyright (C) 2006 by Bjorn Hansen * * hol...@us... * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <guichan/rectangle.hpp> #include <guichan/widgets/icon.hpp> #include <guichan/sdl/sdlgraphics.hpp> #include <SDL/SDL.h> #include <SDL/SDL_gfxPrimitives.h> #include "../../include/menu/sampleprobewidget.h" #include "../../include/probe.h" #include "../../include/log.h" using namespace Balder; SampleProbeWidget::SampleProbeWidget(): probeFrame(0), probeColor(0) { // Loads sprite for sample probe. probeSpriteImage = new gcn::Image("probe.png"); if (probeSpriteImage == 0){ throw "could not load Probe sprite!"; } setHeight(PROBEWIDTH); setWidth(PROBEHEIGHT); frameTimer = SDL_GetTicks(); } void SampleProbeWidget::draw(gcn::Graphics* graphics) { // looks like we still have to draw directly to the screen here... // no doubt this will choke if the obect is not an SDLGraphics object SDL_Surface *screen = dynamic_cast<gcn::SDLGraphics*>(graphics)->getTarget(); int x,y; gcn::Widget::getAbsolutePosition(x,y); filledCircleColor(screen, x+PROBEWIDTH/2, y+PROBEHEIGHT/2, (PROBEWIDTH/2)-1, probeColor); if (SDL_GetTicks() - frameTimer > SAMPLEPROBE_FRAME_INTERVAL) { frameTimer = SDL_GetTicks(); ++probeFrame; if (probeFrame > MAXFRAME) probeFrame = 0; } graphics->drawImage(probeSpriteImage, probeFrame*PROBEWIDTH, 0, 0, 0, PROBEWIDTH, PROBEHEIGHT); } void SampleProbeWidget::drawBorder(gcn::Graphics* graphics) { gcn::Color faceColor = getBaseColor(); gcn::Color highlightColor, shadowColor; int alpha = getBaseColor().a; int width = getWidth() + getBorderSize() * 2 - 1; int height = getHeight() + getBorderSize() * 2 - 1; highlightColor = faceColor + 0x303030; highlightColor.a = alpha; shadowColor = faceColor - 0x303030; shadowColor.a = alpha; unsigned int i; for (i = 0; i < getBorderSize(); ++i) { graphics->setColor(shadowColor); graphics->drawLine(i,i, width - i, i); graphics->drawLine(i,i + 1, i, height - i - 1); graphics->setColor(highlightColor); graphics->drawLine(width - i,i + 1, width - i, height - i); graphics->drawLine(i,height - i, width - i - 1, height - i); } } // void DrawSampleProbe(SDL_Surface* destination, Sint16 xLeft, Sint16 yTop) // { // filledCircleColor(destination, xLeft + (PROBEWIDTH / 2), yTop + (PROBEHEIGHT / 2), (PROBEWIDTH / 2) - 1, ConfigManager::GetPlayerColor(currentPlayer, 255)); // } |