static void Main(string[] args) { var espada = new Espada("Excalibur", 10, 10, 100); var pocao = new Pocao("Poção de Vida", 20, 20, 50); var joia = new Joia("Diamante", 30, 30, 100); var itens = new List <Item>(); itens.Add(espada); itens.Add(pocao); itens.Add(joia); foreach (var item in itens) { if (item is IColecionavel) { (item as IColecionavel).Colecionar(); } if (item is IConsumivel) { (item as IConsumivel).Consumir(); } if (item is Espada) { Console.WriteLine((item as Espada).Dano); } } }
public void BotaoPocaoMana() { Pocao pocao = new Pocao("Poção de Mana", 70f, Tipo.consumivel); pocao.Descricao = "Essa poçõa irá regenerar 20 pontos de mana por uso."; Jogador.Singleton.itemAtual = pocao; uiScript.AtualizarPainel(); }
public UIScript uiScript; //UIScript que referencia o UIScript //As funções a seguir criam a função de cada botão do jogo criando seus respectivos Itens e os armazenda no itemAtual de Jogador, logo em seguida atualiza o painel de informações public void BotaoPocaoVida() { Pocao pocao = new Pocao("Poção de Vida", 50f, Tipo.consumivel); pocao.Descricao = "Essa poção irá regenerar 25 pontos de vida por uso."; Jogador.Singleton.itemAtual = pocao; uiScript.AtualizarPainel(); }
private void usarPocao(GameObject pocao, int i, int j) { Pocao pocaoUsada = pocao.GetComponent("Pocao") as Pocao; pocaoUsada.portador = this.player; pocaoUsada.recuperarPlayer(); Debug.Log(pocaoUsada.getQuantidade()); pocaoUsada.setQuantidade(pocaoUsada.getQuantidade() - 1); if (pocaoUsada.getQuantidade() == 0) //caso acabem as poções elas são removidas do inventário { this.removerItem(i, j); } }
static void Main(string[] args) { var espada = new Espada("Excalibur", 10, 10, 100); espada.Colecionar(); var pocao = new Pocao("Poção de Vida", 20, 20, 50); pocao.Consumir(); var joia = new Joia("Diamante", 30, 30, 100); joia.Colecionar(); joia.Consumir(); }
//Verifica se o item é repetido(com o mesmo nome e status) e caso seja adiciona ao inventario //como um incremento na quantidade atual de itens private bool addItemRepetido(GameObject itemAtual, GameObject itemAdicionado) { bool resultado = false; if (itemAtual.name == itemAdicionado.name) { if (itemAtual.tag == "arma") { Arma armaAtual = itemAtual.GetComponent("Arma") as Arma; Arma armaAserAdd = itemAdicionado.GetComponent("Arma") as Arma; if (armaAtual.status.ehIgual(armaAserAdd.status)) { armaAtual.setQuantidade(armaAtual.getQuantidade() + 1); resultado = true; } } else if (itemAtual.tag == "escudo") { Escudo escudoAtual = itemAtual.GetComponent("Escudo") as Escudo; Escudo escudoAserAdd = itemAdicionado.GetComponent("Escudo") as Escudo; if (escudoAtual.status.ehIgual(escudoAserAdd.status)) { escudoAtual.setQuantidade(escudoAserAdd.getQuantidade() + 1); resultado = true; } } else if (itemAtual.tag == "pocao") { Pocao pocaoAtual = itemAtual.GetComponent("Pocao") as Pocao; Pocao pocaoAserAdd = itemAdicionado.GetComponent("Pocao") as Pocao; if (pocaoAtual.status.ehIgual(pocaoAserAdd.status)) { pocaoAtual.setQuantidade(pocaoAtual.getQuantidade() + 1); resultado = true; } } } return(resultado); }
private void comportamento() { if (player != null) { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador switch (estadoAtual) { case Estado_Do_Inimigo.idle: { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador if (distanciaDoPlayer < 100 && distanciaDoPlayer > 0) { if (distanciaDoPlayer < distanciaMinimaDoPlayer) { setEstado(Estado_Do_Inimigo.attack); } else { seguirPlayer(true); } } else { seguirPlayer(false); } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } } break; case Estado_Do_Inimigo.attack: { if (distanciaDoPlayer >= distanciaMinimaDoPlayer || player.getStatus().hpAtual == 0) {//caso o player se afaste d+ durante um ataque o mob vai voltar a segui-lo enemyAnimator.SetBool("attack", false); setEstado(Estado_Do_Inimigo.idle); } else if (numDeGolpes >= numDeAtaquesMax) {//para os ataques quando numero de golpes deferidos for igual ao número máximo de golpes enemyAnimator.SetBool("attack", false); atrasarAtaque = true; } else { enemyAnimator.SetBool("attack", true);//inicia a animação de ataque } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } if(this.player.getEstado() == "morto" && this.contMorte==0) { this.receberXp(this.player.getXp()); Debug.Log(this.player.getXp()); this.contMorte = 1; } } break; case Estado_Do_Inimigo.morrer: { if (this.estaMorto == false) { Debug.Log("aki"); enemyAnimator.SetBool("morrer", true); this.player.receberXp(this.getXp());//passa o xp para o player //teste de drop this.drop.numItensDropados = 2; Pocao pocao1 = new Pocao(); pocao1.setNome("pocaoDeVida"); pocao1.setTipo("pocoes"); this.drop.getListaItens().Add(pocao1); this.drop.getProbabilidades().Add(1f); Debug.Log(pocao1.getQuantidade()); /*Arma espadaBasica = new Arma(); espadaBasica.setNome("Abbadon"); espadaBasica.setTipo("Armas"); this.drop.getListaItens().Add(espadaBasica); this.drop.getProbabilidades().Add(0.3f);*/ this.drop.droparItem(transform.position); } this.estaMorto = true; Destroy(gameObject,1);//faz o inimigo desaparecer ao morrer. 1 indica que deve possui um delay de 1 segundo. } break; } } else { this.voltarPosicaoInicial();//caso não esteja vendo o player volte a posição inicial; } }
void GUIinventario(int windowID) //funçao que cria a GUI do inventario { GUI.BeginGroup(new Rect(0, 20, 200, 200)); GUI.Box(new Rect(0, 0, 200, 200), ""); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (inventario[i, j] != null) { //captura a imagem do item SpriteRenderer render = inventario[i, j].GetComponent("SpriteRenderer") as SpriteRenderer; //captura o render do prefab Texture2D imagemItem = render.sprite.texture; //a partir do render ele obtem a imagem do prefab(Sprite) if (GUI.Button(new Rect(40 * j, 40 * i, 40, 40), imagemItem)) { //aqui fica o código resposanvel por equipar os itens //ao personagem if (Time.time - lastClick < 0.3) //só usa o item ao se dar um "double click" { if (this.inventario[i, j].tag == "arma") { this.equiparArma(inventario[i, j]); } else if (this.inventario[i, j].tag == "escudo") { this.equiparEscudo(this.inventario[i, j]); } else if (this.inventario[i, j].tag == "pocao") { this.usarPocao(inventario[i, j], i, j); } } else //um click exibe o status do item { if (this.inventario[i, j].tag == "arma") { Arma armaSelecionada = inventario[i, j].GetComponent("Arma") as Arma; Arma arma = armaSelecionada.GetComponent("Arma") as Arma; arma.setPortador(objEstatus); statusText = "Dano:" + armaSelecionada.getDanoBase() + "\n" + "Quantidade:" + armaSelecionada.getQuantidade(); } else if (this.inventario[i, j].tag == "pocao") { Pocao pocaoUsada = inventario[i, j].GetComponent("Pocao") as Pocao; statusText = "Recupera:" + pocaoUsada.recuperacao + "\n" + "Quantidade:" + pocaoUsada.getQuantidade(); } } lastClick = Time.time; } } else { if (GUI.Button(new Rect(40 * j, 40 * i, 40, 40), "" + i + "" + j)) { //caso nao tenha itens o slot ficara default } } } } GUI.EndGroup(); GUI.Box(new Rect(200, 20, 200, 200), statusText); //box de informaçao dos itens }
private void comportamento() { if (player != null) { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position);//pega a distancia do inimigo para o jogador switch (estadoAtual) { case Estado_Do_Inimigo.idle: { distanciaDoPlayer = Vector3.Distance(transform.position, player.transform.position); //pega a distancia do inimigo para o jogador if (distanciaDoPlayer < 100 && distanciaDoPlayer > 0) { if (distanciaDoPlayer < distanciaMinimaDoPlayer) { setEstado(Estado_Do_Inimigo.attack); } else { seguirPlayer(true); } } else { seguirPlayer(false); } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } } break; case Estado_Do_Inimigo.attack: { if (distanciaDoPlayer >= distanciaMinimaDoPlayer || player.getStatus().hpAtual == 0) //caso o player se afaste d+ durante um ataque o mob vai voltar a segui-lo { enemyAnimator.SetBool("attack", false); setEstado(Estado_Do_Inimigo.idle); } else if (numDeGolpes >= numDeAtaquesMax) //para os ataques quando numero de golpes deferidos for igual ao número máximo de golpes { enemyAnimator.SetBool("attack", false); atrasarAtaque = true; } else { enemyAnimator.SetBool("attack", true); //inicia a animação de ataque } if (status.hpAtual <= 0) { setEstado(Estado_Do_Inimigo.morrer); } if (this.player.getEstado() == "morto" && this.contMorte == 0) { this.receberXp(this.player.getXp()); Debug.Log(this.player.getXp()); this.contMorte = 1; } } break; case Estado_Do_Inimigo.morrer: { if (this.estaMorto == false) { Debug.Log("aki"); enemyAnimator.SetBool("morrer", true); this.player.receberXp(this.getXp()); //passa o xp para o player //teste de drop this.drop.numItensDropados = 2; Pocao pocao1 = new Pocao(); pocao1.setNome("pocaoDeVida"); pocao1.setTipo("pocoes"); this.drop.getListaItens().Add(pocao1); this.drop.getProbabilidades().Add(1f); Debug.Log(pocao1.getQuantidade()); /*Arma espadaBasica = new Arma(); * espadaBasica.setNome("Abbadon"); * espadaBasica.setTipo("Armas"); * this.drop.getListaItens().Add(espadaBasica); * this.drop.getProbabilidades().Add(0.3f);*/ this.drop.droparItem(transform.position); } this.estaMorto = true; Destroy(gameObject, 1); //faz o inimigo desaparecer ao morrer. 1 indica que deve possui um delay de 1 segundo. } break; } } else { this.voltarPosicaoInicial();//caso não esteja vendo o player volte a posição inicial; } }