/// <summary> /// Adds a partyMember to the list of partyMembers using saved data /// </summary> /// <param name="className"> Class of the partyMember to be added </param> public void AddPartyMember(PartyMemberData pmData) { if (GetNumPartyMembers() < maxPartyMembers) { GameObject newMember = Instantiate(partyMember, new Vector3(0f, 0f, 0f), Quaternion.identity); PartyMember pmComponent = newMember.GetComponent <PartyMember>(); pmComponent.Init(pmData); newMember.transform.SetParent(gameObject.transform, false); pmComponent.ID = (ID++); pmComponent.GenerateName(GetNumPartyMembers()); if (pmComponent.CHP == 0) { partyMembersDead.Add(pmComponent); } else { partyMembersAlive.Add(pmComponent); } partyMembersAll.Add(pmComponent); } if (partyMembersAlive.Count == 0) // in the event on loading, first partyMember is dead { activePartyMember = partyMembersAll[0]; } else { activePartyMember = GetFirstPartyMemberAlive(); } }
/// <summary> /// Initializes a partyMember game object /// </summary> /// <param name="className"> Class of the partyMember </param> /// <param name="pm"> PartyMember game object to be initialized with fetched values</param> public void GetPartyMemberByClass(string className, PartyMember pm) { using (dbConnection = base.GetConnection()) { dbConnection.Open(); using (IDbCommand dbcmd = dbConnection.CreateCommand()) { // using will call dispose when done, which calls close dbcmd.CommandText = "SELECT * FROM PartyMembers WHERE Class = '" + className + "'"; using (IDataReader reader = dbcmd.ExecuteReader()) { string[] personalInfo = new string[4]; int LVL = 0; int EXP = 0; int CHP = 0; // storing these for the future; the player leaving mid dungeon will need these values saved int CMP = 0; int[] stats = {}; Attack[] attacks = new Attack[4]; Skill[] skills = new Skill[16]; if (reader.Read()) { personalInfo[0] = reader.GetString(1); personalInfo[1] = reader.GetString(2); personalInfo[2] = reader.GetString(3); personalInfo[3] = reader.GetString(4); LVL = reader.GetInt32(5); EXP = reader.GetInt32(6); CHP = reader.GetInt32(7); CMP = reader.GetInt32(8); stats = new int[] { reader.GetInt32(9), reader.GetInt32(10), reader.GetInt32(11), reader.GetInt32(12) }; for (int i = 0; i < maxAttacks; i++) { string attackName = reader.GetString(13 + i); attacks[i] = GetAttack(attackName, false, dbConnection); } skills = GetSkills(className, dbConnection); } else { Debug.LogError("PartyMember with className " + className + " does not exist in the DB"); } pm.Init(personalInfo, LVL, EXP, CHP, CMP, stats, attacks, skills); } } } }
/// <summary> /// Initializes a party member game object /// </summary> /// <param name="className"> Class of the party member </param> /// <param name="pm"> PartyMember game object to be initialized with fetched values</param> public void GetPartyMemberByClass(string className, PartyMember pm) { using (dbConnection = base.GetConnection()) { dbConnection.Open(); using (IDbCommand dbcmd = dbConnection.CreateCommand()) { // using will call dispose when done, which calls close dbcmd.CommandText = "SELECT * FROM PartyMembers WHERE Class = '" + className + "'"; using (IDataReader reader = dbcmd.ExecuteReader()) { string[] personalInfo = new string[4]; int LVL = 0; int HP = 0; int MP = 0; int[] stats = {}; Attack[] attacks = new Attack[4]; if (reader.Read()) { personalInfo[0] = reader.GetString(1); personalInfo[1] = reader.GetString(2); personalInfo[2] = reader.GetString(3); personalInfo[3] = reader.GetString(4); LVL = reader.GetInt32(5); HP = reader.GetInt32(6); MP = reader.GetInt32(7); stats = new int[] { reader.GetInt32(8), reader.GetInt32(9), reader.GetInt32(10), reader.GetInt32(11) }; for (int i = 0; i < maxAttacks; i++) { string attackName = reader.GetString(12 + i); attacks[i] = GetAttack(attackName, false, dbConnection); } } // need to figure out how to attach this information to a monster gameObject, can't use new pm.Init(personalInfo, LVL, HP, MP, stats, attacks); } } } }