Bi-Directional Circular Array Indexing
Sometimes, when you use arrays to store information, you might want to iterate it in a bi-direction circular fashion. An example of this is the previous/next weapon logic in shooter games, where you have an array with weapons and you want to be able to cycle through them in a particular direction, and when you reach the first or the last index, you want to loop back around to the last and first index, respectively. The typical way of doing this example would be the following:
AWeapon * APlayer::GetPreviousWeapon() { Â Â if(WeaponIndex - 1 < 0) Â Â { Â Â Â Â WeaponIndex = Weapons.Num() - 1; Â Â } Â Â else WeaponIndex--; Â Â return Weapons[WeaponIndex]; } AWeapon * APlayer::GetNextWeapon() { Â Â if(WeaponIndex + 1 > Weapons.Num() - 1) Â Â { Â Â Â Â WeaponIndex = 0; Â Â } Â Â else WeaponIndex++; Â Â return Weapons[WeaponIndex]...