public static void Init()
        {
            Initializer.ReleaseDependencies();
              Initializer.LoadDependencies();
              // Mock Room User
              Mock<IRoomUser> roomUser = MakeRoomUser();
              mRoomUser = roomUser.Object;

              // Make user session
              Func<IOperationResult<IDictionary<IPlayer, int>>> valuesGetter = () =>
              {
            IDictionary<IPlayer, int> values = new Dictionary<IPlayer, int>();
            values.Add(Opp, 10);
            values.Add(User, 20);
            return Mok.Helper.CreateResultWith(ResultValue.Fail, values);
              };

              Mock<IUserSession> uSession = MakeUserSession(roomUser, valuesGetter);
              UserSession = uSession.Object;

              Mock<IRoomUser> roomOpponent = MakeRoomOpponent();
              Mock<IUserSession> oSession = MakeOpponentSession(roomOpponent, valuesGetter);
              OppSession = oSession.Object;

              Mok.Helper.SetupAccountManager(ResultValue.Fail, ResultValue.Success, uSession.Object, oSession.Object);

              // Setup the room
              Mock<IRoom> moqRoom = MakeRoom(roomUser, roomOpponent);
              mRoom = moqRoom.Object;

              // Setup the users' cards (8)
              IOperable<Mock<ICard>> buildOperation = CreateCardsMaker();
              int i = 0;
              mUserCards = buildOperation
              .With(moqCard => moqCard.SetupGet(c => c.Name).Returns("user-card#" + ((++i % 8) + 1)))
              .Build().Select(moq => moq.Object);
              mOppCards = buildOperation
              .With(moqCard => moqCard.SetupGet(c => c.Name).Returns("opp-card#" + ((++i % 8) + 1)))
              .Build().Select(moq => moq.Object);

              // Setup a successful operation result
              Mock<IOperationResult> opResult = MakeOperationResult();

              // Setup the users
              Mock<IPlayer> moqUser = SetupUsers(opResult);
              mUser = moqUser.Object;

              // Setup the battle opponent
              Mock<IPlayer> moqOpp = MakeOpponentPlayer(opResult);
              mOpp = moqOpp.Object;

              // Setup the battle scenario
              Mock<IBattleDirector> director = MakeBattleDirector(opResult);
              mBattleDirector = director.Object;

              // Setup the Rooms Manager
              Mock<IRoomsManager> moqRoomsManager = MakeRoomsManager(roomOpponent);

              Mok.Helper.Inject(moqRoomsManager.Object);
        }
 private void Init(string sessionId)
 {
     Contract.Requires(!string.IsNullOrEmpty(sessionId));
       session = SessionHelper.GetSession(sessionId);
       var result = Dependency.Locator.GetSingleton<IRoomsManager>()
                      .GetRoomUser(session);
       if (result.Result == ResultValue.Success)
       {
     roomUser = result.ResultData;
     director = roomUser.Room.BattlesManager
                         .GetOngoingBattle(roomUser);
     scenario = director.Scenario;
     this.InitCommonState();
     switch (scenario.State)
     {
       case BattleState.WaitingForCardElection:
     this.SetCardElectionState();
     break;
       case BattleState.WaitingForCardRemoval:
     this.SetCardRemovalState();
     break;
       case BattleState.CalculatingResult:
     this.SetCalculatingState();
     break;
       case BattleState.Concluded:
     this.SetConcludedState();
     break;
       case BattleState.Aborted:
     this.SetAbortedState();
     break;
     }
       }
       else
       {
     throw new NavigationException("Primero debe iniciar una batalla");
       }
 }