Capítulo 2. Criar um visual do KsirK

O visual do KsirK pode ser modificado por completo. Para as pessoas que tenham habilidades gráficas, a criação de um novo visual é tão simples como copiar um existente, editar ou alterar as imagens e atualizar os dados num arquivo de configuração .desktop, o que é feito pelo Editor de Skin KsirK. Um último passo será editar o arquivo que descreve os itens a instalar.

Todos os exemplos (texto e imagens) são retirados do visual padrão do KsirK.

Estrutura de pastas e arquivos

  • Data/ : Os dados usados pelo programa para lidar com as imagens do visual.

    • CMakeLists.txt : Descreve o que deseja instalar.

    • onu.desktop : O arquivo principal de descrição do visual. Veja a sua descrição abaixo.

  • Images/ : As imagens do visual (mapa, bonecos, etc.)

    • CMakeLists.txt : Descreve o que deseja instalar.

    • pool.svg : o mapa e todas as imagens usadas neste visual.

    • map-mask.png : a imagem que permite ao programa descobrir em que país se encontra o mouse durante o jogo (ver abaixo).

    • *.png : as outras imagens aqui colocadas são as imagens dos botões.

  • CMakeLists.txt : Descreve o que deseja instalar.

  • Sounds/ : arquivos de sons para o visual.

A pasta 'Data'

Esta pasta contém apenas um arquivo, o world.desktop. Este arquivo é uma descrição do conteúdo do visual. É usado para descrever a organização do mundo e como apresentá-lo. Você não tem que preenchê-lo manualmente, uma vez que será tratado pelo Editor de Skin KsirK. Contudo, por razões de abrangência, será agora descrita a sua estrutura.

Um grupo onu contém um conjunto de itens 'countries', o conjunto de itens 'nationality' e, por fim, um conjunto de itens 'continent'. Depois, os vários grupos contêm a descrição das diferentes imagens, países, continentes, nacionalidades e objetivos.

As seguintes seções descrevem o conteúdo de cada grupo.

O grupo onu

Tabela 2.1. As entradas do grupo onu

Nome do itemSignificado
larguraA largura do mapa do visual.
heightA altura do mapa do visual.
skinpathA localização do visual, em relação à localização dos dados da aplicação (por exemplo, skins/default).
nb-countriesO número de países (42 no visual padrão). Deverá existir o mesmo número de marcas 'country' abaixo.
nb-nationalitiesO número de nacionalidades (6 no visual padrão). Deverá existir o mesmo número de marcas 'nationality' abaixo.
nb-continentsO número de continentes (6 no visual padrão). Deverá existir o mesmo número de marcas 'continent' abaixo.
poolA localização e nome do arquivo do mar, em relação à localização do visual (por exemplo, Images/pool.svg).
map-maskA localização e nome do arquivo de máscara do mapa, em relação à localização do visual (por exemplo, Images/map-mask.png).
format-versionA versão do formato do arquivo do visual (2.0).
nomeO nome visível do visual.
descA descrição extensa do visual.
fighters-flag-y-diffA diferença de altura entre as imagens das bandeiras e dos canhões.
width-between-flag-and-fighterO número de pixels entre o pixel do canto superior esquerdo da bandeira e o pixel mais à direita do canhão simples (quando não tiver disparado nem explodido).

Os grupos de descrição das imagens

Cada tipo de imagem (bandeira, infantaria, cavalaria, canhão, canhão em disparo e canhão explodido) é definido por um grupo. Somente algumas imagens têm dados de largura. Estas são usadas para o posicionamento relativo durante as animações: os canhões, em disparo ou em explosão, não deverão se mover em torno da bandeira durante o combate.

Tabela 2.2. Itens do grupo de descrição da imagem

Nome do itemSignificado
larguraA largura de referência das imagens das bandeiras.
heightA altura de referência das imagens das bandeiras.
framesO número de imagens da bandeira.
versionsO número de versões das imagens das bandeiras.

Os grupos de descrição dos países

Em cada país que consta no grupo onu, o item 'countries' contém o seu próprio grupo, cujo nome é o do país. A tabela abaixo apresenta os itens destes grupos.

Tabela 2.3. Itens dos países

Nome do itemSignificado
idO número inteiro identificador do país, que deverá começar em zero (0).
nomeO nome visível do país.
<sprite>-pointCada tipo de boneco (bandeira, infantaria, etc.) no país aparece de acordo com uma certa posição definida neste elemento, que consiste em dois números inteiros separados por vírgulas.
neighboursA lista de identificadores dos vizinhos do país atual.

Os grupos de descrição das nacionalidades

Em cada nacionalidade que aparece no grupo onu, o item 'nationalities' tem o seu próprio grupo, cujo nome é o da nacionalidade. A tabela abaixo mostra os itens destes grupos.

Tabela 2.4. Itens de nacionalidades

Nome do itemSignificado
nomeO nome da nacionalidade (por exemplo, Japão).
leaderO nome que será proposto ao jogador que escolher esta nacionalidade.
flagO nome do arquivo do gráfico da bandeira do país, no arquivo SVG do onu.

Os grupos de descrição dos continentes

Em cada continente que aparece no grupo onu, o item 'continents' tem o seu próprio grupo, cujo nome é o do continente. A tabela abaixo mostra os itens destes grupos.

Tabela 2.5. Itens de continentes

Nome do itemSignificado
nomeO nome do continente (por exemplo, África).
idO número inteiro identificador do continente.
bônusO número de exércitos que são obtidos no fim de jogada, após o jogador possuir todos os países desse continente.
continent-countriesA lista de identificadores dos países dentro do continente atual.

Os grupos de descrição dos objetivos

Em cada objetivo que aparece no grupo onu, o item 'goals' tem o seu próprio grupo, cujo nome é o do objetivo. A tabela abaixo mostra os itens destes grupos.

Tabela 2.6. Itens do objetivo

Nome do itemSignificado
typeO tipo de objetivo. Poderá ser 'continents' (continentes), 'countries' (países) ou 'player' (jogador).
nbArmiesByCountryDefine o número mínimo de exércitos que o jogador terá que colocar em cada país.
nbCountriesDefine o número de países que o jogador deverá possuir.
nbCountriesFallbackPara um tipo de objetivo por jogador, se o jogador de destino for morto por outro, este define o número de países que o jogador terá que conquistar em alternativa.
descUma descrição em texto completo do objetivo, com alguns itens de substituição adequados (precisa de mais documentação aqui).
continentesA lista de IDs de continentes que o jogador terá que conquistar.

A pasta 'Images'

Esta pasta contém os botões específicos do KsirK e o arquivo SVG completo que contém o mapa e todas as imagens.

O arquivo pool.svg

Este arquivo SVG contém o mapa e todas as imagens do jogo. Cada elemento tem um determinado nome para o jogo selecionar e representar em separado.

No visual padrão, são as bandeiras, os soldados e os canhões. A infantaria representa um exército, a cavalaria cinco e os canhões dez. Os canhões são também usados para mostrar as guerras em curso. É por isso que existem três tipos de canhões: estáticos, em disparo ou em explosão.

Cada imagem do gráfico é a concatenação das diversas vistas do objeto e, para cada vista, as suas imagens. As vistas são organizadas na vertical e as subimagens na horizontal. O local de corte da imagem em subimagens individuais é determinado pela divisão da altura da imagem pelo número de vista e a largura pelo número de subimagens. Estes dados estão no arquivo onu.desktop.

Um exemplo de uma imagem de boneco: cannon.png

Para as imagens dos exércitos, existem três diferentes vistas, de cima para baixo:

  • olhando para a direita

  • olhando para a esquerda e

  • olhando para a frente

Para as bandeiras, só existe uma vista. Todos os fundos deverão ser transparentes.

Um exemplo de uma imagem de uma bandeira: italy.png

Tabela 2.7. Os elementos do fundo

Nome do elementoImagem de exemploSignificado
mapa
O mapa-mundo do visual. Os países poderão ter diversas formas, mas deverão estar agrupados em continentes perceptíveis, através da sua localização ou da sua cor.
italy
A bandeira da Itália. Existe um destes itens para cada nação.
infantry
Ícone que representa um exército.
cavalaria
Ícone que representa cinco exércitos.
canhão
Ícone que representa dez exércitos.
firing
Ícone que representa exércitos durante um combate.
exploding
Ícone que representa os exércitos perdendo uma batalha.
alasca
A forma do território do Alasca. Isto é usado para realçar o mesmo território. Existe uma destas formas para cada país ou região. A sua cor não é usada, podendo escolher a cor que desejar.
reddices
Os dados vermelhos usados para mostrar os resultados das batalhas.
bluedices
Os dados azuis usados para mostrar os resultados das batalhas.
mark1
Esta marca é adicionada às imagens de combate para mostrar o número de exércitos que representam, sendo neste caso 1. Existem também os elementos mark2 e mark3.

O arquivo map-mask.png

Este é um arquivo PNG que representa também o mapa-mundo do visual, só que com cores codificadas que permitem identificar de forma unívoca cada país. Os países deverão ter pelo menos a mesma forma que os países correspondentes no arquivo map.png, para que os usuários possam clicar em qualquer ponto de um país visível e selecionar o correto. Os países de pequenas ilhas, como a Indonésia, poderão ser maiores que os equivalentes no arquivo map.png, de modo a facilitar a seleção do país.

Uma máscara do mapa de exemplo

A componente azul (no modelo RGB) da cor de um país identifica o país: o índice 0 é o país 0 no arquivo onu.xml, o índice 1 é o país 1, etc. O branco (0xFFFFFF em RGB) identifica a ausência de país (mar ou, porque não, terra-de-ninguém).

As imagens dos botões

Os nomes dos arquivos estão fixos no código, assim eles não deverão ser modificados. A tabela abaixo mostra todos os botões que deverão constar.

Tabela 2.8. Os botões da GUI

ImagemNome do ArquivoSignificado
newNetGame.pngTenta conectar-se a um jogo em rede.
recycling.pngDepois de todos os jogadores terem colocado os seus exércitos, é possível modificar as distribuições (chamado 'redistribuição'). Este botão pergunta a confirmação de uma redistribuição.
recyclingFinished.pngOpta por não redistribuir. Todas as janelas clientes deverão clicar neste botão para terminar de fato a distribuição.
nextPlayer.pngTermina a jogada do jogador atual e muda para o seguinte, ou para a jogada seguinte, se o jogador for o último.
attackOne.pngOpta por iniciar um ataque com um exército.
attackTwo.pngOpta por iniciar um ataque com dois exércitos.
attackThree.pngOpta por iniciar um ataque com três exércitos.
defendOne.pngOpta por defender um país atacado com um exército.
defendTwo.pngOpta por defender um país atacado com dois exércitos.
moveArmies.pngOpta por iniciar o movimento de exércitos entre dois países (última ação da jogada).

A pasta 'Sounds'

Esta pasta contém três arquivos de sons:

  • o roll.wav, que é tocado quando os exércitos estão em movimento

  • o cannon.wav, que é tocado quando disparar e

  • o crash.wav, que é tocado quando um canhão explode