/// <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); }
/// <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]); }
/// <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); }
/// <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); }
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); }