public virtual void Actualizar(SuvirvalCraft contexto, float elapsedTime) { if (hayInteraccion) { if (barraEstado != null) { barraEstado.ActualizarEstado(Resistencia); } } else { if (barraEstado != null) { barraEstado.Liberar(); barraEstado = null; } } //Preguntamos por el tiempo del ultimo golpe porque queremos que la barra de estado se muestre durante 5 segudos despues de cada golpe, //independientemente de que no haya interaccion if (SuperoTiempoGolpe(contexto.tiempo)) { //Esto maneja la sincronización, ya que siempre se ejecuta primero las colisiones e interacciones y luego las actualizaciones. hayInteraccion = false; } }
public override void Actualizar(SuvirvalCraft contexto, float elapsedTime) { if (EstaCocinando()) { tiempoCoccion += elapsedTime; if (tiempoCoccion > TiempoCoccionElementos()) { if (elementoCoccion != null) { EliminarElemento(elementoCoccion); tiempoCoccion = 0; progresoCoccion.Liberar(); progresoCoccion = null; var contenido = elementoCoccion.DestruirSolo(); foreach (var cont in contenido) { cont.posicion(elementoCoccion.posicion()); } //this.AgregarElementos(contenido); contexto.elementos.Remove(elementoCoccion); elementoCoccion = null; contexto.elementos.AddRange(contenido); contexto.optimizador.ForzarActualizacionElementosColision(); } } else { progresoCoccion.ActualizarEstado(tiempoCoccion); } } }
public override void Actualizar(SuvirvalCraft contexto, float elapsedTime) { base.Actualizar(contexto, elapsedTime); if (estaCreando) { tiempoCreacion += elapsedTime; if (tiempoCreacion > TiempoTotalCreacion()) { progresoCreacion.Liberar(); progresoCreacion = null; tiempoCreacion = 0; estaCreando = false; tieneQueCrear = false; Mesh = Mesh1; } else { progresoCreacion.ActualizarEstado(tiempoCreacion); } } else { if (tieneQueCrear && elementosQueContiene().Count > 0) { progresoCreacion = new BarraEstado(new Vector3(BoundingBox().PMin.X, BoundingBox().PMax.Y, BoundingBox().PMax.Z), BoundingBox().PMax, TiempoTotalCreacion()); estaCreando = true; tieneQueCrear = false; } } }
public virtual void procesarInteraccion(string accion, SuvirvalCraft contexto, float elapsedTime) { if (barraEstado == null) { barraEstado = new BarraEstado(Mesh.BoundingBox.PMin, new Vector3(BoundingBox().PMin.X, BoundingBox().PMax.Y, BoundingBox().PMin.Z), resistenciaTotal); } hayInteraccion = true; }
public Elemento(TgcMesh mesh, float resistencia) { Mesh = mesh; Resistencia = resistencia; resistenciaTotal = resistencia; barraEstado = null; hayInteraccion = false; momentoUltimoGolpe = 0; Flexibilidad = 0; vibracion = 0; momentoUltimaVibracion = 0; ColorBase = Color.White; }
public override void ProcesarColisionConElemento(Elemento elemento) { if (elemento.GetTipo().Equals(Alimento)) { if (!elementosQueContiene().Contains(elemento)) { //Le coloca la misma posicion que tiene la olla pero sobre su altura elemento.posicion(posicion() + new Vector3(0, 25, 0)); agregarElemento(elemento); elementoCoccion = elemento; tiempoCoccion = 0; progresoCoccion = new BarraEstado(new Vector3(BoundingBox().PMin.X, BoundingBox().PMax.Y, BoundingBox().PMax.Z), BoundingBox().PMax, TiempoCoccionElementos()); } } }
public override void Actualizar(SuvirvalCraft contexto, float elapsedTime) { base.Actualizar(contexto, elapsedTime); if (SeEstaAbriendo()) { tiempoApertura += elapsedTime; if (tiempoApertura > TiempoTotalApertura()) { progresoApertura.Liberar(); progresoApertura = null; tiempoApertura = 0; estaAbierto = true; } else { progresoApertura.ActualizarEstado(tiempoApertura); } } }
public override void procesarInteraccion(string accion, SuvirvalCraft contexto, float elapsedTime) { mensajeInformativo = " Juntar Todo (Y), Dejar Todo (U)"; base.procesarInteraccion(accion, contexto, elapsedTime); //TODO. Podria agregarse para que se cambie el mesh del cajon y se muestre cerrado o abierto. if (!estaAbierto) { if (accion.Equals("Abrir")) { if (!SeEstaAbriendo()) { progresoApertura = new BarraEstado( new Vector3(BoundingBox().PMin.X, BoundingBox().PMax.Y, BoundingBox().PMax.Z), BoundingBox().PMax, TiempoTotalApertura()); } } } else { //TODO. Por el momento podemos mantener todo en un renglon ya que no imprimimos ninguna imagen de los elementos en cuestion contexto.cajonReglon1.Text = ""; contexto.mostrarMenuCajon = true; contexto.mostrarMenuMochila = true; //Porque la mochila y el cajon se muestran juntos //TODO. Agregar despues validacion para que el cajon no admita mas de 9 posiciones var i = 0; foreach (var cont in elementosQueContiene()) { contexto.cajonReglon1.Text = contexto.cajonReglon1.Text + (i + 1) + " " + cont.GetDescripcion() + Environment.NewLine; i++; } if (accion.Equals("Juntar Todo")) { var auxiliar = new List <Elemento>(); foreach (var elem in elementosQueContiene()) { if (!contexto.personaje.ContieneElementoEnMochila(elem)) { try { contexto.personaje.juntar(elem); auxiliar.Add(elem); } catch (Exception ex) { mensajeInformativo = ex.Message; } } } EliminarElementos(auxiliar); } if (accion.Equals("Dejar Todo")) { var auxiliar = new List <Elemento>(); foreach (var elem in contexto.personaje.elementosEnMochila()) { if (!elementosQueContiene().Contains(elem)) { agregarElemento(elem); auxiliar.Add(elem); } } contexto.personaje.DejarElementos(auxiliar); } } }