namespace Quantum { using Photon.Deterministic; unsafe class CardManagerSystem : SystemMainThread { public override void Update(Frame frame) { foreach (var pair in frame.Unsafe.GetComponentBlockIterator()) { pair.Component->Update(frame, pair.Entity); } var gameplay = frame.Unsafe.GetPointerSingleton(); if (gameplay->IsActive == false) return; foreach (var pair in frame.Unsafe.GetComponentBlockIterator()) { var command = frame.GetPlayerCommand(pair.Component->PlayerRef); switch (command) { case UseCardCommand useCard: ProcessCommand(frame, pair.Entity, pair.Component->PlayerRef, useCard); break; } } } // PRIVATE METHODS private void ProcessCommand(Frame frame, EntityRef entity, PlayerRef playerRef, UseCardCommand useCard) { var cardManager = frame.Unsafe.GetPointer(entity); cardManager->UseCard(frame, entity, playerRef, useCard.CardIndex, useCard.Position, playerRef * FP.Rad_180); } } }