Pular para o conteúdo principal

Destaque

Dia 98 - Sistema de inventario #4

Certa Vez alguém disse que tentar algo sem o estar pronto causa frustação e desistência, mas como saber se está pronto ? sem se testar de vez em quando ?


Hora de refazer umas coisas, esse inventario esta me dando dor de cabeça, então vou tentar refazer ele todo :(

OBS: fiz um backup no Google drive antes... vai que cago tudo ainda mais



Replanejar aqui:

Classes

  • InventarioVisualizer
    • responsável pela exibição e atualização da exibição do inventário 
  • Inventario
    • vai guardar uma lista com todos itens do inventario
  • Slot
    • fica no slot, objeto pai do obj com o itemholder
    • vai armazenar algumas restrições. e vai avisar o inventário de mudanças de item no slot. 
  • ItemHolder
    • armazena o obj item
    • monobehavior
    • é um button
  • Item
    • Guarda as info do item
    • é um ScriptableObject
- - - - - - - -

Quando o item for pego, vai continuar como está. quando ele for dropado. a troca vai envolver apenas a classe Slot, para verificar se a troca é possível.

e essa Classe Slot vai reportar ao Inventário. no caso da parte de equipamentos vai funcionar diferente. um outro script vai procurar as mudanças sempre que o inventario for fechado.

A troca tem que envolver uma classe, "unica" pq ela precisa armazenar as variáveis de origem e destino da troca. então vai continuar como estava, e vai ser o InventarioVisualizer. mas ele não vai se comunicar com o Inventario durante a troca, apenas com o Slot que vai fazer verificacoes e vai se comunicar com o visualizer e o inventario

- - - - - - - -

Ao fazer uma troca a primeira etapa vai ser excluir os dois itens de seus lugares no inventario, os métodos de exclusão retornaram uma bool informando se a exclusão foi um sucesso.
se foi, a troca é feita, senão não é feita.

- - - - - - - -

Se o item for nulo, não tem problema. a troca ocorre do mesmo jeito, e itens nulos passam direto na verificação de restrições do slot.

- - - - - - - -
Quando clicar e segurar no itemholder:

itemholder.Drag(ele mesmo) > inventarioVisualizer.Drag(itemholder.gameobject)


o inventarioVisualizer.Drag vai cuidar de armazenar o obj em uma var global privada e vai mover ele pela tela.

Quando soltar o item encima de outro

itemholder.drop(ele mesmo) >  inventarioVisualizer.Drop(itemholder.gameobject)

OBS: esse itemholder não é o que está sendo arrastado, sim o que você esta soltando o outro encima.

esse  inventarioVisualizer.Drop vai cuidar de guiar as devidas verificações e realizar as trocas.

ele vai fazer isso usando o Slot.

os métodos de verificações e troca contido no slot e inventario sempre vão retornar uma bollean, para informar se está ok prosseguir com a troca.

- - - - - - - -

Slot - Classe

  • Verifica se o objeto pode entrar no slot ou não, conferindo se ele obedece as restrições do slot.
    • como um slot de só armas e escudos
    • ou só calçados e por ai vai
  • comunica o inventario da troca 
    • remove o objeto antigo
    • e adiciona o novo
    • e age caso os métodos de add e remove retornarem false.

- - - - - - - -

CONCLUINDO: Refiz, tá funcionando mas não esta salvando direito, na troca apenas um item está sendo salvo corretamente .-. o que simplesmente não faz sentido...

Eu até descobri onde fica o bug, mas não entendo por que ? na hora que chamo os slots para adicionar os itens, apenas um deles realmente adiciona o item na List Se eu altero a ordem, eu altero o que adiciona na List :( enfim...

Eu realmente queria terminar isso hoje, mas minha cabeça não aguenta mais, então ficará para amanhã.

PS: eu resolvi o probleminha do vídeo na hora de equipar os itens nas mãos...
PS²: acho que dessa vez, dando uma pequena planejada antes, sinto que a coisa fluiu melhor

Comentários