private void movePartyMemberWithinList(PartyMember partyMember, bool edgeIndexIsZero, int nextRelativeIndex, BattleStates.Think thinkState) { if (!party.Contains(partyMember)) { return; } List <PartyMember> list = GetListWithPartyMember(partyMember); int partyMemberIndex = list.IndexOf(partyMember); if (partyMemberIndex != (edgeIndexIsZero ? 0 : list.Count - 1)) // if not at the end already { list.RemoveAt(partyMemberIndex); int index = partyMemberIndex + nextRelativeIndex; if (index == 0 && list.Count > 0 && thinkState.PartyMemberHasCompletedThinkAction(list[index])) { Weapon frontPartyMemberWeapon = list[index].EquippedWeapon; if (frontPartyMemberWeapon != null && frontPartyMemberWeapon.Data.WeaponType == WeaponType.Melee) { ++index; } } list.Insert(index, partyMember); } }
private void movePartyMemberAcrossLists(PartyMember partyMember, bool edgeListIndexIsZero, int nextListRelativeIndex, BattleStates.Think thinkState) { if (!party.Contains(partyMember)) { return; } List <PartyMember> list = GetListWithPartyMember(partyMember); int listIndex = layout.IndexOf(list); if (listIndex == (edgeListIndexIsZero ? 0 : layout.Count - 1)) // if the edge list { return; } List <PartyMember> nextList = layout[listIndex + nextListRelativeIndex]; int partyMemberPosition = Math.Min(list.IndexOf(partyMember), nextList.Count); list.Remove(partyMember); if (partyMemberPosition == 0 && nextList.Count > 0 && thinkState.PartyMemberHasCompletedThinkAction(nextList[partyMemberPosition])) { Weapon frontPartyMemberWeapon = nextList[partyMemberPosition].EquippedWeapon; if (frontPartyMemberWeapon != null && frontPartyMemberWeapon.Data.WeaponType == WeaponType.Melee) { ++partyMemberPosition; } } nextList.Insert(partyMemberPosition, partyMember); }