public void SetStatValue(int indexOf, float newValue) { Staz stat = stats[indexOf]; stat.value = newValue; stats[indexOf] = stat; }
public void InitializeStats(int count) { stats = new BlitableArray <Staz>(count, Allocator.Persistent); for (int j = 0; j < stats.Length; j++) { stats[j] = new Staz { }; } }
public int GetIconIndex(Staz stat) { int preIndex = 0; for (int i = 0; i < stats.Length; i++) { if (stat.id == stats[i].id) { return(i + preIndex); } } return(-1); }
protected override void OnUpdate() { Entities.WithAll <UpdateAttributeCommand>().ForEach((Entity e, ref UpdateAttributeCommand command) => { //if (characterSpawnSystem.characters.ContainsKey(command.characterID)) if (World.EntityManager.Exists(command.character)) { //Entity character = characterSpawnSystem.characters[command.characterID]; Stats stats = World.EntityManager.GetComponentData <Stats>(command.character); int statIndex = (int)(command.statIndex); if ((StatType)command.statType == StatType.Attribute) { if (statIndex >= 0 && statIndex < stats.attributes.Length) { AttributeStaz attribute = stats.attributes[statIndex]; attribute.value += command.amount; stats.attributes[statIndex] = attribute; stats.attributesApplied = 0; World.EntityManager.SetComponentData(command.character, stats); StatsUISpawnSystem.OnUpdatedStat(World.EntityManager, command.character, (StatType)command.statType, command.statIndex); } } else if ((StatType)command.statType == StatType.Base) { if (statIndex >= 0 && statIndex < stats.stats.Length) { Staz stat = stats.stats[statIndex]; stat.value += command.amount; stats.stats[statIndex] = stat; World.EntityManager.SetComponentData(command.character, stats); StatsUISpawnSystem.OnUpdatedStat(World.EntityManager, command.character, (StatType)command.statType, command.statIndex); } } // StatUISystem.OnUpdated(command.characterIndex, attribute); } World.EntityManager.DestroyEntity(e); //SetText(characterID, originalArrayIndex, (int)improveStat.value); }); }
// this should be in a StatUISystem -> with selection and other events handled..? public override void OnClickedButton(Entity player, Entity ui, int arrayIndex, ButtonType buttonType) { if (World.EntityManager.HasComponent <Inventory>(player) == false) { Debug.LogError("Character " + player.Index + " does not have stats component."); return; } int originalArrayIndex = arrayIndex; Stats stats = World.EntityManager.GetComponentData <Stats>(player); // stat points int statPointID = -510241704; // gotten from game settings? // statpoints is a base #region Indexing int statArrayIndex = -1; for (int i = 0; i < stats.stats.Length; i++) { if (stats.stats[i].id == statPointID) { statArrayIndex = i; break; } } if (statArrayIndex == -1) { return; } #endregion Staz statPoints = stats.stats[statArrayIndex]; if (statPoints.value == 0) { return; } // update a stat! if (arrayIndex >= 0 && arrayIndex < stats.stats.Length) { return; } arrayIndex -= stats.stats.Length; // update states! if (arrayIndex >= 0 && arrayIndex < stats.states.Length) { return; } arrayIndex -= stats.states.Length; // update regens! if (arrayIndex >= 0 && arrayIndex < stats.regens.Length) { return; } arrayIndex -= stats.regens.Length; // update attributes! if (arrayIndex >= 0 && arrayIndex < stats.attributes.Length) { StatUpdateSystem.UpdateStat(World.EntityManager, player, StatType.Attribute, arrayIndex, 1); } arrayIndex -= stats.attributes.Length; // update regens! if (arrayIndex >= 0 && arrayIndex < stats.levels.Length) { return; } // decrease stat points StatUpdateSystem.UpdateStat(World.EntityManager, player, StatType.Base, statArrayIndex, -1); }
public void UpdateStatUI(UpdateStatUICommand command) { ZoxID zoxID = World.EntityManager.GetComponentData <ZoxID>(command.character); if (!uis.ContainsKey(zoxID.id)) { return; // character died } Stats stats = World.EntityManager.GetComponentData <Stats>(command.character); Entity ui = uis[zoxID.id]; Childrens children = World.EntityManager.GetComponentData <Childrens>(ui); int uiArrayIndex = command.statIndex; if (command.statType == (byte)StatType.Base) { Staz stat = stats.stats[command.statIndex]; Entity icon = children.children[uiArrayIndex]; Childrens texts = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = texts.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(((int)stat.value).ToString()); World.EntityManager.SetComponentData(textEntity, renderText); } else { uiArrayIndex += stats.stats.Length; } if (command.statType == (byte)StatType.State) { StateStaz stat = stats.states[command.statIndex]; Entity icon = children.children[uiArrayIndex]; Childrens texts = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = texts.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(((int)stat.value).ToString()); World.EntityManager.SetComponentData(textEntity, renderText); /*Entity textEntity2 = texts.children[0]; * RenderText renderText2 = World.EntityManager.GetComponentData<RenderText>(textEntity2); * renderText2.SetText(((int)stat.maxValue).ToString()); * World.EntityManager.SetComponentData(textEntity2, renderText2);*/ } else { uiArrayIndex += stats.states.Length; } if (command.statType == (byte)StatType.Regen) { RegenStaz stat = stats.regens[command.statIndex]; Entity icon = children.children[uiArrayIndex]; Childrens texts = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = texts.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(((int)stat.value).ToString()); World.EntityManager.SetComponentData(textEntity, renderText); } else { uiArrayIndex += stats.regens.Length; } if (command.statType == (byte)StatType.Attribute) { AttributeStaz stat = stats.attributes[command.statIndex]; Entity icon = children.children[uiArrayIndex]; Childrens texts = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = texts.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(((int)stat.value).ToString()); World.EntityManager.SetComponentData(textEntity, renderText); } else { uiArrayIndex += stats.attributes.Length; } if (command.statType == (byte)StatType.Level) { Level stat = stats.levels[command.statIndex]; Entity icon = children.children[uiArrayIndex]; Childrens texts = World.EntityManager.GetComponentData <Childrens>(icon); Entity textEntity = texts.children[0]; RenderText renderText = World.EntityManager.GetComponentData <RenderText>(textEntity); renderText.SetText(((int)stat.value).ToString()); World.EntityManager.SetComponentData(textEntity, renderText); // experience required /*Entity textEntity2 = texts.children[1]; * RenderText renderText2 = World.EntityManager.GetComponentData<RenderText>(textEntity2); * renderText2.SetText(((int)stat.experienceGained).ToString()); * World.EntityManager.SetComponentData(textEntity2, renderText2); * // experience gained * Entity textEntity3 = texts.children[2]; * RenderText renderText3 = World.EntityManager.GetComponentData<RenderText>(textEntity3); * renderText3.SetText(((int)stat.experienceRequired).ToString()); * World.EntityManager.SetComponentData(textEntity3, renderText3);*/ } }
public int AddStat(StatDatam statDatam) { int indexOf = -1; if (statDatam.type == StatType.Base) { Staz[] priorStates = stats.ToArray(); stats = new BlitableArray <Staz>(stats.Length + 1, Allocator.Persistent); for (int i = 0; i < priorStates.Length; i++) { stats[i] = priorStates[i]; } Staz newState = new Staz(); newState.id = statDatam.Value.id; stats[priorStates.Length] = newState; indexOf = priorStates.Length; } else if (statDatam.type == StatType.State) { StateStaz[] priorStates = states.ToArray(); states = new BlitableArray <StateStaz>(states.Length + 1, Allocator.Persistent); for (int i = 0; i < priorStates.Length; i++) { states[i] = priorStates[i]; } StateStaz newState = new StateStaz(); newState.id = statDatam.Value.id; states[priorStates.Length] = newState; indexOf = priorStates.Length; } else if (statDatam.type == StatType.Regen) { RegenStaz[] priorStates = regens.ToArray(); regens = new BlitableArray <RegenStaz>(regens.Length + 1, Allocator.Persistent); for (int i = 0; i < priorStates.Length; i++) { regens[i] = priorStates[i]; } RegenStaz newState = new RegenStaz(); newState.id = statDatam.Value.id; newState.targetID = statDatam.targetStatID; regens[priorStates.Length] = newState; indexOf = priorStates.Length; } else if (statDatam.type == StatType.Attribute) { AttributeStaz[] priorStats = attributes.ToArray(); attributes = new BlitableArray <AttributeStaz>(attributes.Length + 1, Allocator.Persistent); for (int i = 0; i < priorStats.Length; i++) { attributes[i] = priorStats[i]; } AttributeStaz newStat = new AttributeStaz(); newStat.id = statDatam.Value.id; newStat.targetID = statDatam.targetStatID; attributes[priorStats.Length] = newStat; indexOf = priorStats.Length; } else if (statDatam.type == StatType.Level) { Level[] priorStats = levels.ToArray(); levels = new BlitableArray <Level>(levels.Length + 1, Allocator.Persistent); for (int i = 0; i < priorStats.Length; i++) { levels[i] = priorStats[i]; } Level newStat = new Level(); newStat.id = statDatam.Value.id; //newStat.targetID = statDatam.targetStatID; levels[priorStats.Length] = newStat; indexOf = priorStats.Length; } return(indexOf); }
public void Execute(ref Stats stats) { if (stats.leveledUp == 1) { stats.leveledUp = 0; /* #region Indexes * int levelIndex = -1; * for (int i = 0; i < stats.stats.Length; i++) * { * if (stats.stats[i].id == levelID) * { * levelIndex = i; * break; * } * } * if (levelIndex == -1) * { * return; * } * int experienceIndex = -1; * for (int i = 0; i < stats.states.Length; i++) * { * if (stats.states[i].id == experienceID) * { * experienceIndex = i; * break; * } * } * if (experienceIndex == -1) * { * return; * } #endregion */ Level level = stats.levels[0]; //StateStaz experience = stats.states[experienceIndex]; int counter = 0; int statPointsGained = 0; while (level.experienceGained >= level.experienceRequired) { level.experienceGained -= level.experienceRequired; level.experienceRequired *= 1.2f; // increase SkillPoints (base stat) level.value++; statPointsGained += 3; counter++; if (counter >= 255) { break; } } stats.levels[0] = level; //stats.states[0] = health; // until i made attribute value, then need AI to spend points // also give some skill points // give some attribute points too stats.leveledUpEffects = 1; // now add particles and sound // restore states for (int j = 0; j < stats.states.Length; j++) { StateStaz state = stats.states[j]; if (state.id != experienceID) { state.value = state.maxValue * 0.99f; stats.states[j] = state; } } // give stat points int statPointIndex = -1; for (int i = 0; i < stats.stats.Length; i++) { if (stats.stats[i].id == statPointID) { statPointIndex = i; break; } } if (statPointIndex == -1) { return; } Staz statPoint = stats.stats[statPointIndex]; statPoint.value += statPointsGained; stats.stats[statPointIndex] = statPoint; } }