public PlayerInBattle GetNewGame(Player firstPlayer, int gameType, List <Player> opponents) { // 1-Create The game var game = typeMapping.GetGame(gameType); Grid currentState = game.GetNewGame(); // 2-Preparing listOfPlayers var listPlayers = opponents.Select(p => p.PlayerId).ToList(); listPlayers.Insert(0, firstPlayer.PlayerId); // 2-Link the players Id with player numbers PlayerInBattle toReturn = new PlayerInBattle() { Battle = new Battle { CreationTime = DateTime.Now, BattleId = Math.Abs((int)DateTime.Now.Ticks),//String.Format("{0}_{1}_{2}_{3}", game.GetGameType(), firstPlayer.PlayerId, GetElapsedSecondsSinceLastNewYear(), ran.Next(99)), GameType = gameType, GameTypeString = game.ToString(), LastUpdate = DateTime.Now, Players = listPlayers, CurrentState = currentState }, Player = firstPlayer, PlayerNumber = 1 }; repoPlayerInBattle.Persist(toReturn); return(toReturn); }
protected override PlayerInBattle GetFromDatabase(Tuple <int, int> key) { PlayerInBattle toReturn = null; string query = String.Format("{0} where Playerid = {1} and BattleId = {2};", SqlPlayerInBattleSelect, key.Item1, key.Item2); toReturn = GetFromQuery(query).FirstOrDefault(); return(toReturn); }
public void Create(PlayerInBattle playersInBattle) { battleDao.SaveBattle(playersInBattle.Battle); int battleId = playersInBattle.Battle.BattleId; int playerNumber = 1; foreach (int playerId in playersInBattle.Battle.Players) { //"INSERT INTO PlayerInBattles (PlayerId, BattleId, PlayerNumber) VALUES (...)"; try { using (DbCommand cmd = MyConnection.CreateCommand()) { cmd.CommandText = SqlPlayerInBattleInsert; SqlCeCommand ceCmd = cmd as SqlCeCommand; if (ceCmd != null) { ceCmd.Parameters.Add(new SqlCeParameter("@pla", SqlDbType.Int)); ceCmd.Parameters.Add(new SqlCeParameter("@bat", SqlDbType.Int)); ceCmd.Parameters.Add(new SqlCeParameter("@num", SqlDbType.SmallInt)); ceCmd.Prepare(); ceCmd.Parameters["@pla"].Value = playerId; ceCmd.Parameters["@bat"].Value = battleId; ceCmd.Parameters["@num"].Value = playerNumber; } else { SqlCommand sqlCmd = cmd as SqlCommand; if (sqlCmd != null) { sqlCmd.Parameters.Add("@pla", SqlDbType.Int); sqlCmd.Parameters["@pla"].Value = playerId; sqlCmd.Parameters.Add("@bat", SqlDbType.Int); sqlCmd.Parameters["@bat"].Value = battleId; sqlCmd.Parameters.Add("@num", SqlDbType.SmallInt); sqlCmd.Parameters["@num"].Value = playerNumber; sqlCmd.Prepare(); } } cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } playerNumber++; } catch (Exception e) { throw new DAOException(String.Format("Error while creating new PlayerInBattle : {0}", e.Message)); } } }
public void Persist(PlayerInBattle playersInBattle) { PlayerInBattle currentState = Get(new Tuple <int, int>(playersInBattle.Player.PlayerId, playersInBattle.Battle.BattleId)); if (currentState != null) { //Already exist Update(playersInBattle); } else { Create(playersInBattle); } }
public void Persist(PlayerInBattle playersInBattle) { int i = 1; foreach (int currentPlayerId in playersInBattle.Battle.Players) { playersInBattle = new PlayerInBattle() { Battle = playersInBattle.Battle, Player = MockPlayerRepository.GetInstance().Get(currentPlayerId), PlayerNumber = i }; Tuple <int, int> toPersist = new Tuple <int, int>(currentPlayerId, playersInBattle.Battle.BattleId); i++; datas[toPersist] = playersInBattle; } }
public Grid Play(PlayerInBattle playerInBattle, Move move) { // 1- We play the move var currentBattle = playerInBattle.Battle; var game = typeMapping.GetGame(currentBattle.GameType); var oldState = currentBattle.CurrentState.NextPlayerToPlay; var newState = game.Play(currentBattle.CurrentState, move); // 2- If the grid has change, we persit the new state currentBattle.CurrentState = newState; if (newState.DeservePersistence(oldState)) { //See what we want to do.... repoPlayerInBattle.Persist(playerInBattle); } // 3- We return the new state to the client return(newState); }
protected override PlayerInBattle GetInstanceFromReader(DbDataReader rdr) { //"SELECT BattleId, PlayerId, PlayerNumber FROM PlayerInBattles" var battleId = rdr.GetInt32(0); var playerId = rdr.GetInt32(1); var playerNumber = rdr.GetInt16(2); System.Diagnostics.Trace.Write(" battleId = " + battleId + " playerId = " + playerId); var result = new PlayerInBattle() { Battle = battleDao.Get(battleId), Player = playerDao.Get(playerId), PlayerNumber = playerNumber }; return(result); }
void InitBattleManagerProperties(string _playerName, int _level, int _exp, string _shipName, int _strength, int _singleCannonDmg, int _speed, int _turnSpeed) { PlayerInBattle player = new PlayerInBattle() { playerName = _playerName, level = _level, exp = _exp, shipName = _shipName, strength = _strength, singleCannonDmg = _singleCannonDmg, speed = _speed, turnSpeed = _turnSpeed }; BattleManger.Instance.players.Insert(1, player); BattleManger.Instance.UpdatePlayerUI(); ///BattleManger.Instance.ships.Add(player.listOfShips[player.currentShipSelected]); }
void Start() { mTrans = transform; mStats = GetComponent <GameShip>(); //mCannons = GetComponentsInChildren<Cannon>(); photonView = GetComponent <PhotonView>(); boxCollider = GetComponentInChildren <BoxCollider>(); ////onstart() //if (BattleManger.Instance) //{ // mStats.ShipHealth = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].strength; // BattleManger.Instance.PlayerLevelText.text = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].shipName; // photonView.RPC("InitPlayersUIOnStartBattle", PhotonTargets.Others, BattleManger.Instance.PlayerLevelText.text); // //shiphealth // BattleManger.Instance.PlayerHealthText.text = mStats.ShipHealth.ToString(); // BattleManger.Instance.PlayerHealthSlider.maxValue = (int) mStats.ShipHealth; // BattleManger.Instance.PlayerHealthSlider.value = (int)mStats.ShipHealth; // photonView.RPC("EnemyShipHealth", PhotonTargets.Others, mStats.ShipHealth); //} if (BattleManger.Instance) { //BattleManger.Instance.players = new List<PlayerInBattle>(2); //BattleManger.Instance.ships = new List<Ship>(2); //fill for player if (!PlayerInformation.Instance) { return; } //init shipvalues mStats.ShipHealth = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].strength; mStats.Ship_singleCannonDmg = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].singleCannonDmg; mStats.maxMovementSpeed = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].speed; mStats.maxTurningSpeed = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].turnSpeed; foreach (Cannon cannon in mCannonsLeft) { cannon.CannonBallDmg = mStats.Ship_singleCannonDmg; } foreach (Cannon cannon in mCannonsRight) { cannon.CannonBallDmg = mStats.Ship_singleCannonDmg; } // PlayerInBattle playerInBattle = new PlayerInBattle() { playerName = PlayerInformation.Instance.playerName, level = PlayerInformation.Instance.level, exp = PlayerInformation.Instance.experience, shipName = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].shipName, strength = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].strength, singleCannonDmg = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].singleCannonDmg, speed = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].speed, turnSpeed = PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].turnSpeed }; BattleManger.Instance.players.Insert(0, playerInBattle); ///BattleManger.Instance.ships.Add(PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected]); //fill for enemy photonView.RPC("InitBattleManagerProperties", PhotonTargets.Others, PlayerInformation.Instance.playerName, PlayerInformation.Instance.level, PlayerInformation.Instance.experience, PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].shipName, PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].strength, PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].singleCannonDmg, PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].speed, PlayerInformation.Instance.listOfShips[PlayerInformation.Instance.currentShipSelected].turnSpeed ); } }
//Integration test for DAO public static void Main() { //PlayerDao.ConnectionString = MyConfiguration.GetString("MikMakConnection", @"Data Source=|DataDirectory|\LocalDb.sdf"); Console.WriteLine("Test starting..."); try { using (Tester test = new Tester()) { //Player Tests string login1 = DateTime.Now.ToString("HH:mm:ss"); string login2 = DateTime.Now.ToString("HH:mm:ss") + "bis"; Debug.Assert(test.playerDao.Get(91233) == null); Debug.Assert(test.playerDao.Get(login1 + "ee") == null); Debug.Assert(test.playerDao.Get(login1) == null); test.playerDao.CreatePlayer(login1, login1); Debug.Assert(test.playerDao.Get(login1) != null); Debug.Assert(test.playerDao.Get(login2) == null); test.playerDao.CreatePlayer(login2, login2); var player1 = test.playerDao.Get(login1); var player2 = test.playerDao.Get(login2); Debug.Assert(player2 != null); Debug.Assert(test.playerDao.Get(login2).Login == login2); Debug.Assert(test.playerDao.Get(login2).Password == login2); Debug.Assert(test.playerDao.Get(login2).PlayerId != test.playerDao.Get(login1).PlayerId); //For fun, tom should exist! if (test.playerDao.Get("tom") == null) { test.playerDao.CreatePlayer("tom", "tom"); } //No battles yet Debug.Assert(test.playerInBattleDao.Get(test.playerDao.Get(login1).PlayerId).Count == 0); Debug.Assert(test.playerInBattleDao.Get(test.playerDao.Get(login2).PlayerId).Count == 0); //CreationBattle PlayerInBattle newBattle = new PlayerInBattle() { Player = player1, PlayerNumber = 1, Battle = new Battle() { BattleId = Math.Abs((int)DateTime.Now.Ticks), CurrentState = new Grid() { CurrentMessage = Message.GetMessage(ClassicMessage.Default), IsGridShifted = true, MoveNumber = 5, NextPlayerToPlay = 1, NumberColumns = 2, NumberLines = 4, PawnLocations = new List <Pawn>() { new Pawn("p1", 1, 2) { Player = player1 }, new Pawn("p2", 4, 2) { Player = player2 } } }, GameType = 9, GameTypeString = "testToTrash", Players = new List <int>() { player1.PlayerId, player2.PlayerId } } }; test.playerInBattleDao.Persist(newBattle); //Both players should see the battle Debug.Assert(test.playerInBattleDao.Get(test.playerDao.Get(login1).PlayerId).Count == 1); Debug.Assert(test.playerInBattleDao.Get(test.playerDao.Get(login2).PlayerId).Count == 1); } } catch (Exception e) { Console.WriteLine("Exception : " + e); } Console.WriteLine("End of the test"); }
private void Update(PlayerInBattle playersInBattle) { battleDao.SaveBattle(playersInBattle.Battle); }
protected override Tuple <int, int> ExtractKey(PlayerInBattle toAdd) { return(new Tuple <int, int>(toAdd.Player.PlayerId, toAdd.Battle.BattleId)); }