Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }