public SaveCollection GetClassSaves(RPGCharacterModel rcm) { SaveCollection retCol = new SaveCollection(); string[] characterClasses = rcm.attributes.characterClass.GetDesc().Split('/'); for(int i=0; i<characterClasses.Length;i++) { OSRIC_CLASS curClass = OSRICConstants.GetEnum<OSRIC_CLASS>(characterClasses[i]); foreach(OSRIC_SAVING_THROWS ost in Enum.GetValues(typeof(OSRIC_SAVING_THROWS))) { EnumSavePair sav = new EnumSavePair(ost, GetSaveValue(curClass,ost,rcm.attributes.level[i])); retCol.UpdateBestSave(sav); } } List<OSRICCharacterModifier> racialBonuses = rcm.attributes.CharacterModifiers.GetModifierByCharacterVariable(OSRIC_CHARACTER_VARIABLES.savingthrow); // Debug.Log("Racial Bonuses: " + racialBonuses.Count.ToString()); foreach(OSRICCharacterModifier ocm in racialBonuses) { Debug.Log(ocm.savingThrow.GetDesc() + " " + ocm.value.ToString()); retCol.saveArr[(int)ocm.savingThrow].val += ocm.value; } return retCol; }
void SetCharacterDetails(RPGCharacterModel cm) { foreach(LabelValueUIController lvuc in characterDetailsArr) { if(lvuc.labelText.text.ToLower().Contains("name")) lvuc.SetValueString(cm.attributes.characterName); else if(lvuc.labelText.text.ToLower().Contains("race")) lvuc.SetValueString(cm.attributes.characterRace.GetDesc()); else if(lvuc.labelText.text.ToLower().Contains("class")) lvuc.SetValueString(cm.attributes.characterClass.GetDesc()); else if(lvuc.labelText.text.ToLower().Contains("alignment")) lvuc.SetValueString(cm.attributes.characterAlignment.GetDesc()); else if(lvuc.labelText.text.ToLower().Contains("level")) { string levelString = cm.attributes.level[0].ToString(); for(int i=1;i<cm.attributes.level.Length;i++) levelString += " / " + cm.attributes.level[i].ToString(); lvuc.SetValueString(levelString); } else if(lvuc.labelText.text.ToLower().Contains("hp")) lvuc.SetValueString(cm.attributes.hitPoints.ToString()); else if(lvuc.labelText.text.ToLower().Contains("ac")) lvuc.SetValueString(engine.ComputeArmorClass(charModel).ToString()); else continue; } }
public OSRICAttributeModel(RPGCharacterModel _cm, JSONObject _jo) { cm = _cm; CharacterModifiers = new OSRICModifierCollection(); characterName = _jo["characterName"].str; Str = (int)_jo["Str"].n; Dex = (int)_jo["Dex"].n; Con = (int)_jo["Con"].n; Int = (int)_jo["Int"].n; Wis = (int)_jo["Wis"].n; Cha = (int)_jo["Cha"].n; hitPoints = (int)_jo["hitPoints"].n; string[] levelStr = _jo["level"].str.Split('/'); level = new int[levelStr.Length]; for(int i=0; i<levelStr.Length; i++) level[i] = Int32.Parse(levelStr[i]); experiencePoints = (int)_jo["experiencePoints"].n; vision = (int)_jo["vision"].n; move = (int)_jo["move"].n; characterGender = OSRICConstants.GetEnum<OSRIC_GENDER>(_jo["characterGender"].str); characterRace = OSRICConstants.GetEnum<OSRIC_RACE>(_jo["characterRace"].str); characterClass = OSRICConstants.GetEnum<OSRIC_CLASS>(_jo["characterClass"].str); characterAlignment = OSRICConstants.GetEnum<OSRIC_ALIGNMENT>(_jo["characterAlignment"].str); characterState = OSRICConstants.GetEnum<OSRIC_CHARACTER_STATE>(_jo["characterState"].str); foreach(JSONObject obj in _jo["CharacterModifiers"].list) CharacterModifiers.Add(new OSRICCharacterModifier(obj)); }
public void LoadCharacterAttributes(RPGCharacterModel cm) { if(gameObject.activeInHierarchy) { charModel = cm; UpdateAttributeViewInformation(); SetCharacterDetails(cm); SetCharacterSavingThrows(cm); } }
public void SaveCharacter(RPGCharacterModel cm) { JSONObject addition = cm.attributes.Serialize(); foreach(JSONObject jo in JSONCharacterList.list) if(CompareJSONCharacterAttributes(jo,addition)) return; JSONCharacterList.Add(addition); StreamWriter sw = new StreamWriter(SavedCharactersFile,false); sw.Write(JSONCharacterList.ToString()); sw.Close(); }
public void LoadCharactersFromSaveFile() { StreamReader sr = new StreamReader(SavedCharactersFile); JSONCharacterList = new JSONObject(sr.ReadToEnd()); if(JSONCharacterList.IsNull) { JSONCharacterList = new JSONObject(JSONObject.Type.ARRAY); return; } foreach(JSONObject jo in JSONCharacterList.list) { RPGCharacterModel cm = new RPGCharacterModel(); cm.attributes = new OSRICAttributeModel(cm,jo); // Debug.Log(cm.attributes.characterName); if(!mainCon.CharacterList.Contains(cm)) mainCon.CharacterList.Add(cm); } // Debug.Log(mainCon.CharacterList.Count); }
public void SaveAndReturn() { SaveCharacter(); CurrentCharacter = null; SetToHomeMode(); }
public OSRICAttributeModel(RPGCharacterModel _cm) { cm = _cm; CharacterModifiers = new OSRICModifierCollection(); }
public void RandomizeCharactersAttributes(RPGCharacterModel charmod) { // if(!init) ResetChracterOptions(charmod.attributes); // charmod.attributes.characterRace = OSRIC_RACE.Human; foreach(OSRIC_ATTRIBUTES oa in Enum.GetValues(typeof(OSRIC_ATTRIBUTES))) { charmod.attributes.SetBaseAttribute(oa,randomizeAttribute()); } if(!AreAttributesViable(charmod.attributes)) RandomizeCharactersAttributes(charmod); }
public SaveCollection GetSaveCollection(RPGCharacterModel cm) { return SaveTables.GetClassSaves(cm); }
public int ComputeArmorClass(RPGCharacterModel cm) { int ac = 10; int dex = cm.attributes.GetAttributeTotal(OSRIC_ATTRIBUTES.Dexterity); dex = attributeTable.GetYIndexOf(dex); ac += attributeTable.GetValue("dex_AC_adjustment",dex); return ac; }
public void CompleteCharacterCreation(RPGCharacterModel cm) { cm.attributes.level = LevelTables.GetAllClassLevels(cm); // HP computation int hpAccumulator, con, bonus, summedLevels; con = cm.attributes.GetAttributeTotal(OSRIC_ATTRIBUTES.Constitution); con = attributeTable.GetYIndexOf(con); bonus = attributeTable.GetValue("con_HP_per_die",con); // Get all levels and roll for each summedLevels = 0; foreach(int lev in cm.attributes.level) summedLevels += lev; hpAccumulator = 0; for(int i=0;i<summedLevels;i++) hpAccumulator += RollHitPoints(cm.attributes.characterClass, bonus,2); cm.attributes.hitPoints = hpAccumulator; cm.attributes.creationDate = DateTime.Now; cm.attributes.lastEditDate = DateTime.Now; Debug.Log(cm.attributes.Serialize().Print()); // numClass = cm.attributes.characterClass.GetDesc().Split('/').Length; // cm.attributes.level = new int[numClass]; // for(int i=0;i<numClass;i++) // cm.attributes.level[i]=1; }
public int[] GetAllNextLevelTarget(RPGCharacterModel _cm) { int pos = 0; string[] classArr = _cm.attributes.characterClass.GetDesc().Split('/'); int[] retArr = new int[classArr.Length]; foreach(string s in classArr) { retArr[pos] = GetNextLevelTarget(OSRICConstants.GetEnum<OSRIC_CLASS>(s),_cm.attributes.level[pos]); } return retArr; }
public void SetToHomeMode() { CurrentCharacter = null; DashboardUI.gameObject.SetActive(true); DashboardUI.UpdateCharacterList(); }
public void LoadCharacter(RPGCharacterModel cm) { CurrentCharacter = cm; SetNavigationMode(NAV_STATE.CharacterViewer); }
public void DeleteCharacter(RPGCharacterModel rcm) { CharacterList.Remove(rcm); }
public void CreateCharacter() { CurrentCharacter = new RPGCharacterModel(); CreatorUI.charModel = CurrentCharacter; engine.RandomizeCharactersAttributes(CurrentCharacter); }
public int[] GetAllClassLevels(RPGCharacterModel cm) { int[] retArr; int xp = cm.attributes.experiencePoints; OSRIC_RACE curRace = cm.attributes.characterRace; string[] classArr = cm.attributes.characterClass.GetDesc().Split('/'); if(classArr.Length<2) { Debug.Log("Class Arr: " + classArr[0]); return new int[] {GetClassLevel(OSRICConstants.GetEnum<OSRIC_CLASS>(classArr[0]), curRace, xp)}; } int splitXP = xp/classArr.Length; Debug.Log("Split XP: "+splitXP); retArr = new int[classArr.Length]; for(int i=0; i<retArr.Length;i++) { retArr[i] = GetClassLevel( OSRICConstants.GetEnum<OSRIC_CLASS>(classArr[i]),curRace,splitXP); } return retArr; }
void SetCharacterSavingThrows(RPGCharacterModel cm) { List<LabelValueUIController> saveUIList = new List<LabelValueUIController>(); foreach(LabelValueUIController lvuc in characterDetailsArr) { if(lvuc.gameObject.name.ToLower().Contains("save")) { int insertAt = Int32.Parse(lvuc.name.Split('_')[1]); saveUIList.Insert((insertAt-1),lvuc); //saveList.Add(lvuc); } } SaveCollection saves = engine.GetSaveCollection(cm); int i = 0; foreach(EnumSavePair esp in saves.saveArr) { LabelValueUIController cur = saveUIList[i]; cur.SetLableString(esp.save.GetDesc()); cur.SetValueString(esp.val.ToString()); i++; } }