Accounting for selective visitation
Our concrete PlayerPrefVisitor
didn’t store any local data (it doesn’t have to if it’s not necessary), but the Visitor pattern can also account for the context of the visitation; visitors can be set up to apply behaviors and algorithms to specific elements and element combinations. This is a bit of an inversion of how we traditionally think of this pattern, but it’s equally as valid and useful. In this section, we’ll create visiting ScriptableObjects
(because we love them) that deliver upgrades and buffs to elements on our Player
depending on each concrete visitor’s local state (conditions).
In the Scripts folder, create a new C# script named SOVisitor
and update its code to match the following code block. Like PlayerPrefsVisitor
, SOVisitor
has methods for visiting the Stats
, Weapon
, and WeaponMod
components on our Player
, but with added variables to determine when a component needs to be visited. How...