示例#1
0
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;
}
示例#3
0
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));
}