- Page Bomb Mechanics Component
- Write Bomb Mechanics page
- Member BombHandler.kickBombSelectionAngleTolerance
- : change to coroutine?
- Page Character Control
- Write Character Control page
- Member ColorScheme.ColorScheme (Color color)
- : Use templates to create these player property classes! (Define versions e.g. in the settings)
- Member ColorScheme.Register ()
- Can this not be done by the constructor?
- Member ConnectToMasterState.OnCancelBtnPressed ()
- Member DisconnectedState.OnMyStateEnter ()
- : How to handle this?
- Page Game Management
- Write Game management page
- Page Game Mechanics
- : Write game mechanics docu
- Member GameManager.Awake ()
- Create a common 'Singleton' base MonoBehaviour for all these managers.
- Member GameStateMachine.MatchStarted ()
- : There should be an initial Pre-Match phase, where stuff and clients load.
- Page Handling State
- Write the "handling State" concept page
- Member HostNewRoomState.CloseOverlayAndContinue ()
- Think about using events. The logic would then not be distributed any more.
- Page How to use the Menu Page System
Link to Menu state machine docu needed.
Trigger concept not final, as too specific for main menu state machine!
- Page In-game UI
- Write Ingame UI page
- Member JoinRoomState.CloseOverlayAndContinue ()
- : too cryptic -> connection via events?
- Page Level Management & Representation
- : Write level management design page
- Page Level Management Component
- Write Level management page
- Member MainMenuStateMachine.InitDepOnNetState ()
- : case "Local": was removed, so no direct transition to the local MP match page is possible this way. How can we get this functionality back? We would need to set the following: controller.Play("LocalMatchPage"); break;
- Page Match Management
- Write Match management page
- Member MatchManager.Awake ()
- : Only have a MatchManager on the Host. Move Board functionality to a board or Level object.
- Member MatchManager.MatchState
- Remove as the match state can as well be inferred from the GameSM.
- Member MatchManager.OnPlayerDeath (PlayerIdNetData data)
- : This can be done when player data changes. The state will have changed to 'dead'.
- Member MatchManager.SendPlayerSpawnInfo ()
- : the spawn info should also contain the (synced) network time of the spawn. Rework the match startup phase in general (countdown, show-off, etc...).
- Member MatchManager.Start ()
Lock and unlock the message queue, so everyone has finished loading when events arrive! Read the Photon documentation regarding this. Assess the below delay, add an initial Pre-Match phase for loading etc.
shift more responsibility to the Game states
- Page Menu UI
- Write Menu UI page
- Page Net Management
- Write Net management page
- Member net.Target
- : Add "This" as possible Target
- Member NetAdapter.HostNewRoom (string name)
- : Check room list (PUN2 lobby callbacks) and create unique room name if already taken. Add all rooms to a lobby, join that and get the room list.
- Member NetAdapter.JoinRoom ()
- This is for testing only, needs to be replaced by Lobby room list or so.
- Class NetManager
- : Use Photon "Custom Properties" to sync client info, such as player info and infrequent stuff
- Member NetManager.OnPlayerLeftRoom (Client client)
- : We have to take over hosting or something!
- Member NetManager.playerDeathNetEvent
- : Communicate via custom property 'state' (alive, dead, not playing)
- Page Networking
: This is to be changed by using room properties (see below)! A JoinedClient has restricted authority over certain game aspects, see MasterClient section.
Think about Disconnects of other Clients during Online Play
Using room properties for syncing e.g. of player data is not yet implemented!
- Page Player Management
: Player Management is WIP for Multiplayer
: Write player management
- Member Player.Player (string clientId, int uid, NetData netData)
- : Does this work? How about the same color joining? Check beforehand?
- Member PlayerController.player
- : replace by enable/disable? is sync still called in this case?
- Member PlayerManager.OnJoinedRoom ()
- : Add checks here whether own players can be added at all (resources, nr of players.) Do necessary modification to local players if there are conflicts. Iterate over all Remote players
- Member PlayerManager.OnPlayerSpawnInfo (PlayerSpawnNetData data)
: dangerous
: Do not spawn now but at the given synced point in time and only if all local players have been given a spawn. (Match init phase needed)
- Member PlayerManager.playerChangeEvent
- : care for this.
- Member PlayerManager.RemovePlayer (Player p)
- : the removal strategy is dependent on the net status. Make things more clear! E.g. this won't work outside of a room, right?
- Member ScrollingGridLay.Start ()
- resize the grid layout cells based on content and available space
- Page The Menu Page System
- Triggers are not final.
- Member WorldDirExtensions.TrySnapFromAngle (float worldAngle, float snapTolerance=45f)
- : Add unit tests for this one!