void PaletteWindow::HandleEvents(sf::RenderWindow& window) { // Handle all events. sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { // Ignore -- we only close if the main map editor closes. } else if (event.type == sf::Event::MouseButtonPressed) { // Selecting something, figure out which. bool swappedTerrain = false; for (int i = 0; i < (int)TerrainType::COUNT; i++) { if (terrainRectangles[(TerrainType)i].getGlobalBounds().contains(sf::Vector2f((float)event.mouseButton.x, (float)event.mouseButton.y))) { std::cout << "Switching to terrain type " << GetTerrainName((TerrainType)i) << std::endl; terrainRectangles[selectedTerrain].setOutlineThickness(0); terrainRectangles[(TerrainType)i].setOutlineThickness(1.0f); selectedTerrain = (TerrainType)i; swappedTerrain = true; break; } } if (!swappedTerrain) { // Determine if we instead swapped tools. for (int i = 0; i < (int)Tool::COUNT_TOOL; i++) { if (toolRectangles[(Tool)i].getGlobalBounds().contains(sf::Vector2f((float)event.mouseButton.x, (float)event.mouseButton.y))) { std::cout << "Switching to tool " << GetToolName((Tool)i) << std::endl; toolRectangles[selectedTool].setOutlineThickness(0); toolRectangles[(Tool)i].setOutlineThickness(1.0f); selectedTool = (Tool)i; break; } } } } else if (event.type == sf::Event::KeyPressed) { HandleKeyEvent(event); } } }
//----------------------------------------------------------------------------- // Switches to a named tool //----------------------------------------------------------------------------- IToolSystem *CToolFrameworkInternal::SwitchToTool( const char* pToolName ) { int nCount = GetToolCount(); for ( int i = 0; i < nCount; ++i ) { if ( !Q_stricmp( pToolName, GetToolName(i) ) ) { SwitchToTool( i ); return m_ToolSystems[i]; } } return NULL; }
void PaletteWindow::LoadGraphics() { if (!typeFont.loadFromFile("../fonts/DejaVuSans.ttf")) { std::cout << "Font loading unsuccessful!" << std::endl; } for (int i = 0; i < (int)TerrainType::COUNT; i++) { terrainRectangles[(TerrainType)i] = sf::RectangleShape(sf::Vector2f(terrainSize, terrainSize)); terrainRectangles[(TerrainType)i].setFillColor(GetTerrainColor((TerrainType)i)); terrainRectangles[(TerrainType)i].setPosition(sf::Vector2f(terrainXOffset, terrainOffset + i * (terrainSize + terrainOffset))); terrainRectangles[(TerrainType)i].setOutlineColor(sf::Color::Cyan); terrainText[(TerrainType)i] = sf::Text(GetTerrainName((TerrainType)i), typeFont, 18); terrainText[(TerrainType)i].setColor(GetTerrainColor((TerrainType)i)); terrainText[(TerrainType)i].setPosition(sf::Vector2f(terrainXOffset + terrainSize + terrainOffset, terrainOffset + i * (terrainSize + terrainOffset))); } terrainRectangles[selectedTerrain].setOutlineThickness(1.0f); for (int i = 0; i < (int)Tool::COUNT_TOOL; i++) { toolRectangles[(Tool)i] = sf::RectangleShape(sf::Vector2f(toolSize, toolSize)); toolRectangles[(Tool)i].setFillColor(sf::Color::Yellow); toolRectangles[(Tool)i].setPosition(sf::Vector2f(toolXOffset, toolOffset + i * (toolOffset + toolSize) + (int)TerrainType::COUNT * (terrainSize + terrainOffset))); toolRectangles[(Tool)i].setOutlineColor(sf::Color::Cyan); toolText[(Tool)i] = sf::Text(GetToolName((Tool)i), typeFont, 15); toolText[(Tool)i].setColor(sf::Color::Green); toolText[(Tool)i].setPosition(toolRectangles[(Tool)i].getPosition() + sf::Vector2f(toolSize + toolOffset, 0.0f)); } toolRectangles[selectedTool].setOutlineThickness(1.0f); toolSizeText = sf::Text(GetToolSizeText(), typeFont, 16); toolSizeText.setColor(sf::Color::White); toolSizeText.setPosition(toolRectangles[(Tool)(Tool::COUNT_TOOL - 1)].getPosition() + sf::Vector2f(0.0f, toolSize + toolOffset)); }