public bool ChangeState(Cv_GameState newState) { if (newState == Cv_GameState.WaitingForPlayers) { ExpectedPlayers = 1; //NOTE(JM): this must change for splitscreen //ExpectedRemotePlayers = Caravel.GameOptions.ExpectedPlayers - ExpectedPlayers; //ExpectedAI = Caravel.GameOptions.NumAI; HumanPlayersAttached = 0; HumanPlayersLoaded = 0; /*if (!string.IsNullOrEmpty(Caravel.GameOptions.GameHost)) * { * IsProxy = true; * ExpectedAI = 0; * ExpectedRemotePlayers = 0; * * if (!Caravel.AttachAsClient()) * { * return false; * } * } * else if (ExpectedRemotePlayers > 0) * { * //Add socket on GameOptions.ListenPort * }*/ } var changedStateEvt = new Cv_Event_ChangeState(State, newState, this); State = newState; VGameOnChangeState(newState); Cv_EventManager.Instance.TriggerEvent(changedStateEvt); if (newState == Cv_GameState.WaitingForPlayersToLoadScene) { HumanPlayersLoaded++; //TODO(JM): In future maybe change this to event handler (to handle remote players too) } if (newState == Cv_GameState.LoadingScene) { if (!Caravel.VLoadGame()) //TODO(JM): Maybe change this to automatically load the scene set in the options instead of being overriden by subclass { Cv_Debug.Error("Error - Unable to load scene."); Caravel.AbortGame(); } } return(true); }
public Cv_Event_ChangeState(Cv_GameState prev, Cv_GameState next, object sender, float timeStamp = 0) : base(Cv_EntityID.INVALID_ENTITY, sender, timeStamp) { PreviousState = prev; NewState = next; }
protected virtual void VGameOnChangeState(Cv_GameState newState) { }