/// <summary> /// Takes an ActorDraft.SO and converts to a SaveActorDraft.cs file suitable for serialising to file. /// </summary> /// <param name="actorDraft"></param> /// <returns></returns> private SaveActorDraft ConvertFromActorDraft(ActorDraft actorDraft) { SaveActorDraft saveDraft = new SaveActorDraft(); if (actorDraft != null) { saveDraft.draft = actorDraft.name; saveDraft.actorName = actorDraft.actorName; saveDraft.firstName = actorDraft.firstName; saveDraft.lastName = actorDraft.lastName; saveDraft.spriteName = actorDraft.sprite.name; saveDraft.arcName = actorDraft.arc.name; saveDraft.traitName = actorDraft.trait.name; saveDraft.level = actorDraft.level; saveDraft.power = actorDraft.power; saveDraft.statusName = actorDraft.status.name; saveDraft.sexName = actorDraft.sex.name; saveDraft.backstory0 = actorDraft.backstory0; saveDraft.backstory1 = actorDraft.backstory1; } else { Debug.LogError("Invalid actorDraft (Null)"); } return(saveDraft); }
/// <summary> /// Updates all actor backstory prompt list fields /// </summary> /// <param name="actor"></param> public void UpdateActorData(ActorDraft actor) { if (actor != null) { actor.listOfIdentity = ToolManager.i.toolDataScript.GetCharacterIdentity(); actor.listOfDescriptors = ToolManager.i.toolDataScript.GetCharacterDescriptors(); actor.listOfGoals = ToolManager.i.toolDataScript.GetCharacterGoal(); actor.listOfMotivation = ToolManager.i.toolDataScript.GetCharacterMotivation(); } else { Debug.LogError("Invalid actorDraft (Null)"); } }
/// <summary> /// Updates actorDraftFinal data with data from corresponding actorDrafts /// </summary> /// <param name="actor"></param> /// <param name="draft"></param> public void UpdateActorDataFinal(ActorDraftFinal actor, ActorDraft draft) { actor.sex = draft.sex; actor.firstName = draft.firstName; actor.lastName = draft.lastName; actor.actorName = draft.actorName; actor.sprite = draft.sprite; actor.arc = draft.arc; actor.level = draft.level; actor.power = draft.power; actor.trait = draft.trait; actor.status = draft.status; actor.backstory0 = draft.backstory0; actor.backstory1 = draft.backstory1; }
/// <summary> /// Creates an actorPool and populates with ActorDraft.SO's. /// Note: data checked by parent method /// </summary> private void InitialiseActorPool(ActorPoolData data) { string pathPool, pathDraft; // // - - - ActorPool // ActorPool poolAsset = ScriptableObject.CreateInstance <ActorPool>(); //path with unique asset name for each pathPool = string.Format("Assets/SO/Tools/ActorPools/{0}.asset", data.poolName); //how many actors required to populate pool int numToCreate = numOfActors; poolAsset.nameSet = data.nameSet; poolAsset.tag = data.tag; poolAsset.side = data.side; poolAsset.author = data.author; poolAsset.dateCreated = data.dateCreated; // // - - - ActorDrafts // for (int i = 0; i < numToCreate; i++) { //create SO object ActorDraft actorAsset = ScriptableObject.CreateInstance <ActorDraft>(); //overwrite default data UpdateActorDraft(poolAsset, actorAsset, i); //path with unique asset name for each (poolName + counter) pathDraft = string.Format("Assets/SO/Tools/ActorDrafts/{0}{1}.asset", data.poolName, i); //delete any existing asset at the same location (if same named asset presnet, new asset won't overwrite) AssetDatabase.DeleteAsset(pathDraft); //Add asset to file and give it a name ('actor') AssetDatabase.CreateAsset(actorAsset, pathDraft); } //delete any existing asset at the same location (if same named asset presnet, new asset won't overwrite) AssetDatabase.DeleteAsset(pathPool); //initialise pool AssetDatabase.CreateAsset(poolAsset, pathPool); //Save assets to disk AssetDatabase.SaveAssets(); }
/// <summary> /// Takes a SaveActorDraft.cs object and converts it to an ActorDraft.SO /// </summary> private void ConvertToActorDraft(SaveActorDraft saveDraft, ActorDraft draft) { if (saveDraft != null) { if (draft != null) { draft.actorName = saveDraft.actorName; draft.firstName = saveDraft.firstName; draft.lastName = saveDraft.lastName; //Sprite -> TO DO draft.level = saveDraft.level; draft.power = saveDraft.power; draft.backstory0 = saveDraft.backstory0; draft.backstory1 = saveDraft.backstory1; //trait Trait trait = ToolManager.i.toolDataScript.GetTrait(saveDraft.traitName); if (trait != null) { draft.trait = trait; } else { Debug.LogWarningFormat("Invalid trait (Null) for saveDraft.traitName \"{0}\"", saveDraft.traitName); } } else { Debug.LogError("Invalid ActorDraft.SO (Null)"); } } else { Debug.LogError("Invalid saveDraft (Null)"); } }
/// <summary> /// creates an ActorDraftFinal.SO's using data from supplied ActorDraft.SO /// </summary> private void UpdateActorDraftFinal(ActorPool pool, ActorPoolFinal poolFinal, ActorDraftFinal actor, int num) { ActorDraft draft = null; if (actor != null) { // // - - - Get ActorDraft // switch (num) { //hq hierarchy case 0: draft = pool.hqBoss0; break; case 1: draft = pool.hqBoss1; break; case 2: draft = pool.hqBoss2; break; case 3: draft = pool.hqBoss3; break; //hq Workers case 4: draft = pool.listHqWorkers[0]; break; case 5: draft = pool.listHqWorkers[1]; break; case 6: draft = pool.listHqWorkers[2]; break; case 7: draft = pool.listHqWorkers[3]; break; case 8: draft = pool.listHqWorkers[4]; break; case 9: draft = pool.listHqWorkers[5]; break; case 10: draft = pool.listHqWorkers[6]; break; case 11: draft = pool.listHqWorkers[7]; break; //onMap case 12: draft = pool.listOnMap[0]; break; case 13: draft = pool.listOnMap[1]; break; case 14: draft = pool.listOnMap[2]; break; case 15: draft = pool.listOnMap[3]; break; //level one, remaining of full set case 16: draft = pool.listLevelOne[0]; break; case 17: draft = pool.listLevelOne[1]; break; case 18: draft = pool.listLevelOne[2]; break; case 19: draft = pool.listLevelOne[3]; break; case 20: draft = pool.listLevelOne[4]; break; //level one, second full set case 21: draft = pool.listLevelOne[5]; break; case 22: draft = pool.listLevelOne[6]; break; case 23: draft = pool.listLevelOne[7]; break; case 24: draft = pool.listLevelOne[8]; break; case 25: draft = pool.listLevelOne[9]; break; case 26: draft = pool.listLevelOne[10]; break; case 27: draft = pool.listLevelOne[11]; break; case 28: draft = pool.listLevelOne[12]; break; case 29: draft = pool.listLevelOne[13]; break; //level two, full set case 30: draft = pool.listLevelTwo[0]; break; case 31: draft = pool.listLevelTwo[1]; break; case 32: draft = pool.listLevelTwo[2]; break; case 33: draft = pool.listLevelTwo[3]; break; case 34: draft = pool.listLevelTwo[4]; break; case 35: draft = pool.listLevelTwo[5]; break; case 36: draft = pool.listLevelTwo[6]; break; case 37: draft = pool.listLevelTwo[7]; break; case 38: draft = pool.listLevelTwo[8]; break; //level three, full set case 39: draft = pool.listLevelThree[0]; break; case 40: draft = pool.listLevelThree[1]; break; case 41: draft = pool.listLevelThree[2]; break; case 42: draft = pool.listLevelThree[3]; break; case 43: draft = pool.listLevelThree[4]; break; case 44: draft = pool.listLevelThree[5]; break; case 45: draft = pool.listLevelThree[6]; break; case 46: draft = pool.listLevelThree[7]; break; case 47: draft = pool.listLevelThree[8]; break; default: Debug.LogWarningFormat("Unrecognised num \"{0}\"", num); break; } if (draft != null) { //transfer data UpdateActorDataFinal(actor, draft); // // - - - Assign to ActorPoolFinal // switch (num) { //hq hierarchy case 0: poolFinal.hqBoss0 = actor; break; case 1: poolFinal.hqBoss1 = actor; break; case 2: poolFinal.hqBoss2 = actor; break; case 3: poolFinal.hqBoss3 = actor; break; //hq Workers case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: poolFinal.listHqWorkers.Add(actor); break; //onMap case 12: case 13: case 14: case 15: poolFinal.listOnMap.Add(actor); break; //level one, remaining of full set case 16: case 17: case 18: case 19: case 20: poolFinal.listLevelOne.Add(actor); break; //level one, second full set case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: poolFinal.listLevelOne.Add(actor); break; //level two, full set case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: poolFinal.listLevelTwo.Add(actor); break; //level three, full set case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: poolFinal.listLevelThree.Add(actor); break; default: Debug.LogWarningFormat("Unrecognised num \"{0}\"", num); break; } } else { Debug.LogError("Invalid actorDraft (Null)"); } } else { Debug.LogError("Invalid actorDraftFinal (Null)"); } }
/// <summary> /// Initialises data for a newly created ActorDraft. /// </summary> /// <param name="actor"></param> private void UpdateActorDraft(ActorPool pool, ActorDraft actor, int num) { if (actor != null) { // // - - - name and sex // if (Random.Range(0, 100) < 50) { actor.sex = sexMale; actor.firstName = pool.nameSet.firstMaleNames.GetRandomRecord(); } else { actor.sex = sexFemale; actor.firstName = pool.nameSet.firstFemaleNames.GetRandomRecord(); } actor.lastName = pool.nameSet.lastNames.GetRandomRecord(); actor.actorName = string.Format("{0} {1}", actor.firstName, actor.lastName); // // - - - status, arc, level and power -> assign to actorPool // switch (num) { case 0: actor.status = statusHqBoss0; actor.arc = listOfActorArcs[Random.Range(0, listOfActorArcs.Count)]; actor.sprite = actor.arc.sprite; actor.power = (numOfActorsHQ + 2 - (int)ActorHQ.Boss) * hqPowerFactor; actor.level = 3; actor.trait = GetTrait(); UpdateActorData(actor); //add to pool (do after all data initialisation) pool.hqBoss0 = actor; break; case 1: actor.status = statusHqBoss1; actor.arc = listOfActorArcs[Random.Range(0, listOfActorArcs.Count)]; actor.sprite = actor.arc.sprite; actor.power = (numOfActorsHQ + 2 - (int)ActorHQ.SubBoss1) * hqPowerFactor; actor.level = 2; actor.trait = GetTrait(); UpdateActorData(actor); pool.hqBoss1 = actor; break; case 2: actor.status = statusHqBoss2; actor.arc = listOfActorArcs[Random.Range(0, listOfActorArcs.Count)]; actor.sprite = actor.arc.sprite; actor.power = (numOfActorsHQ + 2 - (int)ActorHQ.SubBoss2) * hqPowerFactor; actor.level = 2; actor.trait = GetTrait(); UpdateActorData(actor); pool.hqBoss2 = actor; break; case 3: actor.status = statusHqBoss3; actor.arc = listOfActorArcs[Random.Range(0, listOfActorArcs.Count)]; actor.sprite = actor.arc.sprite; actor.power = (numOfActorsHQ + 2 - (int)ActorHQ.SubBoss3) * hqPowerFactor; actor.level = 2; actor.trait = GetTrait(); UpdateActorData(actor); pool.hqBoss3 = actor; break; case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: //workers actor.status = statusHqWorker; actor.arc = listOfActorArcs[Random.Range(0, listOfActorArcs.Count)]; actor.sprite = actor.arc.sprite; actor.power = Random.Range(1, 6); actor.level = 2; actor.trait = GetTrait(); UpdateActorData(actor); pool.listHqWorkers.Add(actor); break; case 12: case 13: case 14: case 15: //OnMap actor.status = statusOnMap; index = Random.Range(0, listOfTempArcs.Count); actor.arc = listOfTempArcs[index]; actor.sprite = actor.arc.sprite; //remove arc from temp list to prevent dupes listOfTempArcs.RemoveAt(index); actor.power = 0; actor.level = 1; actor.trait = GetTrait(); UpdateActorData(actor); pool.listOnMap.Add(actor); //set counter to 0 for remaining level 1 actors using left over temp Arcs if (num == 15) { counter = 0; } break; case 16: case 17: case 18: case 19: case 20: //Level one, remaining temp arcs actor.status = statusPool; actor.arc = listOfTempArcs[counter++]; actor.sprite = actor.arc.sprite; actor.power = 0; actor.level = 1; actor.trait = GetTrait(); UpdateActorData(actor); pool.listLevelOne.Add(actor); //reset counter ready for a full arc set of level one actors if (num == 20) { counter = 0; } break; case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: //Level one, an additional full set of 9 actor.status = statusPool; actor.arc = listOfActorArcs[counter++]; actor.sprite = actor.arc.sprite; actor.power = 0; actor.level = 1; actor.trait = GetTrait(); UpdateActorData(actor); pool.listLevelOne.Add(actor); //reset counter ready for a full arc set of level two actors if (num == 29) { counter = 0; } break; case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: //Level two, a full set of 9 actor.status = statusPool; actor.arc = listOfActorArcs[counter++]; actor.sprite = actor.arc.sprite; actor.power = 0; actor.level = 2; actor.trait = GetTrait(); UpdateActorData(actor); pool.listLevelTwo.Add(actor); //reset counter ready for a full arc set of level three actors if (num == 38) { counter = 0; } break; case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: //Level three, a full set of 9 actor.status = statusPool; actor.arc = listOfActorArcs[counter++]; actor.sprite = actor.arc.sprite; actor.power = 0; actor.level = 3; actor.trait = GetTrait(); UpdateActorData(actor); pool.listLevelThree.Add(actor); break; default: Debug.LogWarningFormat("Unrecognised num \"{0}\"", num); break; } } else { Debug.LogError("Invalid actorDraft (Null)"); } }