Django Wars [Parte 17]: Inventário do usuário

O Django Wars foi idealizado e desenvolvido no Django 1.4. Algumas funcionalidades aqui descritas podem não funcionar ou funcionar de forma diferente em outras versões do Django

Quando o jogador compra uma arma ou armadura, ele, geralmente, gostaria de ter uma opção para equipá-los.
Se o jogador possui mais de um item, ele gostaria de saber quais itens ele possui afim de escolher um.
Assim, precisamos criar o inventário do usuário, onde listaremos os itens que ele possui, além de dar opções de equipar itens.

Como estamos trabalhando por partes, vamos dividir o trabalho do inventário.
Neste momento, queremos fazer apenas uma listagem dos itens que o usuário possui.
Primeiro, precisamos criar a url que irá responder pelas requisições do inventário no urls.py.

url(r'^inventario/$', djangowars.views.inventario),

Como podemos perceber pelo padrão que foi criado, a view que irá responder a esta requisição se chamará inventario.
Logo, precisamos criá-la no arquivo views.py.

def inventario(request):
    if not request.user.is_authenticated():
        return redirect(logar)

    return render_to_response("inventario.html", {"player": request.user.get_profile()})

Agora você deve estar espantado: “ué, tão pouco código????”
Se ler o código bem direitinho, o que não é difícil, dá para perceber que a única coisa que estamos fazendo é recuperando o usuário da sessão e passando-o para o template.
Se você está lembrado, já definimos como associar as armas e armaduras ao usuário.
Assim, só precisamos recuperar o usuário para saber quais armas e armaduras ele possui, além de sabermos quais que estão ativas.
Fica mais fácil entender vendo.
Para isso, crio o template inventario.html

<div class="container">
   Armadura Ativa: <br />
   {{ player.armadura_ativa.nome }}
   <img src="{{ player.armadura_ativa.imagem.url }}" />
   <br />
   <hr />
   
   Arma Ativa: <br />
   {{ player.arma_ativa.nome }}
   <img src="{{ player.arma_ativa.imagem.url }}" />
   <br />
   <hr />
   
   
   <p>Armaduras:</p>
   {% for armadura in player.armaduras.all %}
       <img src="{{ armadura.imagem.url }}" />
       {{ armadura.nome }}
       <a href="equipar/armadura/{{ armadura.pk }}">Equipar</a>
       <br />
   {% endfor %}
   
   <hr />
   
   <p>Armas:</p>
   {% for arma in player.armas.all %}
       <img src="{{ arma.imagem.url }}" />
       {{ arma.nome }}
       <a href="equipar/arma/{{ arma.pk }}">Equipar</a>
       <br />
   {% endfor %}
   
</div>

Como sempre, já deixamos pronto os links para equipar a arma e a armadura desejada.
A ação de equipá-los iremos definir no próximo post.

O código fonte do projeto encontra-se em:
https://github.com/frenetic/django-wars

One thought on “Django Wars [Parte 17]: Inventário do usuário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *