Example #1
0
        /// <summary>
        /// <para>Fija el valor</para>
        /// </summary>
        /// <param name="tipo"></param>
        /// <param name="value"></param>
        /// <param name="permitirExcepcion"></param>
        public void SetValue(TipoStats tipo, int value, bool permitirExcepcion)        // Fija el valor
        {
            int valorAntiguo = this[tipo];

            // Comprobar los valores
            if (valorAntiguo == value)
            {
                return;
            }

            if (permitirExcepcion)
            {
                // Permitir excepciones a la regla aquí
                CambioValorExcepcion exc = new CambioValorExcepcion(valorAntiguo, value);

                // La notificacion es unica por tipo de stats
                this.EnviarNotificacion(CuandoCambieNotificacion(tipo), exc);


                // ¿Algo modifico el valor?
                value = Mathf.FloorToInt(exc.GetValorModificador());

                // ¿Algo anulo el cambio?
                if (exc.Toggle == false || value == valorAntiguo)
                {
                    return;
                }
            }

            data[(int)tipo] = value;
            this.EnviarNotificacion(CuandoCambioNotificacion(tipo), valorAntiguo);
        }
 /// <summary>
 /// <para>Inicializacion de <see cref="CondicionComparacionStats"/></para>
 /// </summary>
 /// <param name="tipo"></param>
 /// <param name="valor"></param>
 /// <param name="condicion"></param>
 public void Init(TipoStats tipo, int valor, Func <bool> condicion)       // Inicializacion de CondicionComparacionStats
 {
     this.Tipo      = tipo;
     this.Valor     = valor;
     this.Condicion = condicion;
     this.AddObservador(OnStatCambia, Stats.CuandoCambioNotificacion(tipo), stats);
 }
Example #3
0
 /// <summary>
 /// <para>Cuando Cambio</para>
 /// </summary>
 /// <param name="tipo"></param>
 /// <returns></returns>
 public static string CuandoCambioNotificacion(TipoStats tipo)        // Cuando Cambio
 {
     if (!cuandoCambioNotificacion.ContainsKey(tipo))
     {
         cuandoCambioNotificacion.Add(tipo, string.Format("Stats.{0}Cambio", tipo.ToString()));
     }
     return(cuandoCambioNotificacion[tipo]);
 }
Example #4
0
        /// <summary>
        /// <para>Carga los stats iniciales</para>
        /// </summary>
        public void CargarStatsIniciales()        // Carga los stats iniciales
        {
            for (int n = 0; n < statOrden.Length; n++)
            {
                TipoStats tipo = statOrden[n];
                stats.SetValue(tipo, baseStats[n], false);
            }

            stats.SetValue(TipoStats.HP, stats[TipoStats.MHP], false);
            stats.SetValue(TipoStats.MP, stats[TipoStats.MMP], false);
        }
Example #5
0
        /// <summary>
        /// <para>Sube de nivel el oficio</para>
        /// </summary>
        private void LevelUp()        // Sube de nivel el oficio
        {
            for (int n = 0; n < statOrden.Length; n++)
            {
                TipoStats tipo     = statOrden[n];
                int       entero   = Mathf.FloorToInt(crecimientoStats[n]);
                float     fraccion = crecimientoStats[n] - entero;

                int value = stats[tipo];
                value += entero;

                if (Random.value > (1f - fraccion))
                {
                    value++;
                }

                stats.SetValue(tipo, value, false);
            }

            stats.SetValue(TipoStats.HP, stats[TipoStats.MHP], false);
            stats.SetValue(TipoStats.MP, stats[TipoStats.MMP], false);
        }
Example #6
0
        public int[] data = new int[(int)TipoStats.Count];                         // Data de las estadisticas
        #endregion

        #region Propiedades
        /// <summary>
        /// <para>Tipos de estadisticas</para>
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public int this[TipoStats s]
        {
            get { return(data[(int)s]); }
            set { SetValue(s, value, true); }
        }
        /// <summary>
        /// <para>Obtiene una caracteristica</para>
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="tipo"></param>
        /// <returns></returns>
        private static CaracteristicaModificadorStat GetCaracteristica(GameObject obj, TipoStats tipo)        // Obtiene una caracteristica
        {
            CaracteristicaModificadorStat[] caraMod = obj.GetComponents <CaracteristicaModificadorStat>();
            for (int n = 0; n < caraMod.Length; n++)
            {
                if (caraMod[n].tipo == tipo)
                {
                    return(caraMod[n]);
                }
            }

            CaracteristicaModificadorStat caracteristica = obj.AddComponent <CaracteristicaModificadorStat>();

            caracteristica.tipo = tipo;
            return(caracteristica);
        }