示例#1
0
        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;
            }
        }
示例#2
0
 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);
         }
     }
 }
示例#3
0
 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;
         }
     }
 }
示例#4
0
 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;
 }
示例#5
0
 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;
 }
示例#6
0
 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());
         }
     }
 }
示例#7
0
 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);
         }
     }
 }
示例#8
0
        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);
                }
            }
        }