/// <summary> /// Moves the player based on the direction /// </summary> /// <param name="prCommand"> </param> public override void Do(CommandMapScript prCommand) { if (GameManagerScript._Instance._ActiveCanvas.name == "Main Canvas") { //Turn off display events TurnOffEvent(); //Assign players current local to a local variable SceneScript lcCurrentScene = PlayerManagerScript.GetCurrentScene(); //Create a new scene variable SceneScript lcNewScene = new SceneScript(); //Try get new scene. If not a valid direction, ignore try { //Get scene direction by selecting where From Scene name is current Scenes and direction is users input SceneDirectionScript lcSceneDirection = _db.Connection.Table <SceneDirectionScript>().Where <SceneDirectionScript>(x => x.FromSceneName == lcCurrentScene.Name && x.Direction == _direction).ToList <SceneDirectionScript>().First <SceneDirectionScript>(); //Get new scene by selecting where name is scene direction's to scene variable lcNewScene = _db.Connection.Table <SceneScript>().Where <SceneScript>(x => x.Name == lcSceneDirection.ToSceneName).ToList <SceneScript>().First <SceneScript>(); PlayerManagerScript._CurrentPlayer.CurrentLocationID = lcNewScene.Name; } catch { lcNewScene = _db.Connection.Table <SceneScript>().Where <SceneScript>(x => x.Name == lcCurrentScene.Name).ToList <SceneScript>().First <SceneScript>(); PlayerManagerScript._CurrentPlayer.CurrentLocationID = lcNewScene.Name; } //check if new scene has a display event HasEvent(lcNewScene.Event); //if scene has been visited and scanned, Set this as text output if (Visited(lcNewScene) && Scanned(lcNewScene)) { prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription + "\n" + _Scanned; } //Else if scene has only been visited, set this as text output else if (Visited(lcNewScene)) { prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription + "\n" + _NotScanned; } else { //Update player saying they have visited this area before PlayerManagerScript._CurrentPlayer.Visted = PlayerManagerScript._CurrentPlayer.Visted + "," + lcNewScene.Name; //Update player with more score PlayerManagerScript._CurrentPlayer.PlayerScore += 10; //Set this as text output prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription; } _db.Connection.InsertOrReplace(PlayerManagerScript._CurrentPlayer); } else { prCommand._Result = "switch to the terminal to move"; } }
public override void Do(CommandMapScript prCommand) { //Turn off display events TurnOffEvent(); //Assign players current local to a local variable SceneScript lcCurrentScene = PlayerManagerScript.GetCurrentScene(); //Get scene direction by selecting where From Scene name is current Scenes and direction is users input SceneDirectionScript lcSceneDirection = _db.Connection.Table <SceneDirectionScript>().Where <SceneDirectionScript>(x => x.FromSceneName == lcCurrentScene.Name && x.Direction == _direction).ToList <SceneDirectionScript>().First <SceneDirectionScript>(); //Get new scene by selecting where name is scene direction's to scene variable SceneScript lcNewScene = _db.Connection.Table <SceneScript>().Where <SceneScript>(x => x.Name == lcSceneDirection.ToSceneName).ToList <SceneScript>().First <SceneScript>(); //Update current player with new scene PlayerManagerScript._CurrentPlayer.CurrentLocationID = lcNewScene.Name; //Save updated player in database _db.Connection.InsertOrReplace(PlayerManagerScript._CurrentPlayer); //check if new scene has a display event HasEvent(lcNewScene.Event); //if scene has been visited and scanned, Set this as text output if (Visited(lcNewScene) && Scanned(lcNewScene)) { prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription + "\n" + _Scanned; } //Else if scene has only been visited, set this as text output else if (Visited(lcNewScene)) { prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription + "\n" + _NotScanned; } else { //Update player saying they have visited this area before PlayerManagerScript._CurrentPlayer.Visted = PlayerManagerScript._CurrentPlayer.Visted + "," + lcNewScene.Name; //Update player with more score PlayerManagerScript._CurrentPlayer.PlayerScore += 10; //Save updated player into database _db.Connection.InsertOrReplace(PlayerManagerScript._CurrentPlayer); //Set this as text output prCommand._Result = lcNewScene.Name + "\n" + lcNewScene.SceneStoryDescription; } }