public void ShouldHandleBattleOfTwoRandomMinionFacePlayers() { var container = new UnityContainer(); Dto.UnityConfig.Register(container); UnityConfig.Register(container); Services.UnityConfig.Register(container); var deckParser = container.Resolve <IDeckPlainTextParser>(); var deckConverter = container.Resolve <IDeckConverter>(); var deckDto = deckParser.ParseDeck(File.ReadAllText(Deck1Path)); var deck = deckConverter.Convert(deckDto); var playerInitializer1 = new PlayerInitializer() { Class = CardClass.Hunter, Deck = deck, Name = "Player 1" }; var playerInitializer2 = new PlayerInitializer() { Class = CardClass.Hunter, Deck = deck, Name = "Player 2" }; var arbiter = container.Resolve <IGameArbiter>(); var gameResult = arbiter.HostTheGame(playerInitializer1, playerInitializer2, new DummyMinionFacePlayer(), new DummyMinionFacePlayer()); gameResult.IsOk.Should().Be(true); var playerOneTurns = gameResult.FinalState.Me.Events.Last().Key; playerOneTurns.Should().BeGreaterThan(5); }
internal Initializer(Controllers controller, GameData gameData) { var inputInitialized = new InputController(new PCInput()); controller.AddController(inputInitialized); ServiceLocator.SetService(new ShipProviderPool(gameData.Ship.Provider)); var shipWeaponFactory = new ShipWeaponFactory( gameData.ShipWeapon, new ShipWeaponBulletsPool(gameData.ShipWeapon.Bullet)); var shipFactory = new ShipInitializer( gameData.Ship, ServiceLocator.Resolve <ShipProviderPool>(), shipWeaponFactory.GetShipWeapon); controller.AddController(shipFactory.CreateShipFromData(gameData.Ship)); var playerInitialized = new PlayerInitializer(shipFactory.GetShip, gameData.Player, inputInitialized.Input); controller.AddController(playerInitialized.PlayerController); var cameraInitialized = new CameraInitializer(gameData.Camera, shipFactory.GetShip); controller.AddController(cameraInitialized.CameraController); IEnemyFactory factory = new AsteroidFactory(); factory.Create(new Health(100.0f, 100.0f)); }
public void Initialize_spawns_a_paddle_at_slot_spawn_position() { var paddle = Stub <IPaddle>(); var playerSlot = Stub <IPlayerSlot>(); PaddleFactory.Setup(p => p.Create(playerSlot.Object)).Returns(paddle.Object); var player = Stub <IPlayer>(); player.Setup(p => p.Slot).Returns(playerSlot.Object); player.SetupSet(p => p.Paddle = paddle.Object); PlayerInitializer.Initialize(player.Object); }
// Use this for initialization void Start() { bullets = ScriptableObject.CreateInstance <BulletDepot>(); bullets.Load(); playerFactory = GetComponent <PlayerInitializer>(); playerFactory.bullets = bullets; #if DEV player1 = playerFactory.CreatePlayer(CreateControlScheme(0), character, player1Pos, 0); playerFactory.CreatePlayer(CreateControlScheme(1), Character.Orpheus, new Vector3(10, 0, 0), 1); #endif }
public static void InitializeSystemWorkflow() { GameVariables.EntityManager = World.DefaultGameObjectInjectionWorld.EntityManager; //GameVariables.PlayerVars.Default.PlayerAudioSource = MonoGameVariables.instance.playerAudioSource; //Game Initializer? UIManager.Initialize(); PlayerInitializer.Initialize(); WeaponInitializer.Initialize(); MapEvents.Initialize(); InitializeSystems(); }
public ServerPlayerState Initialize(PlayerInitializer playerInitializer) { var state = new ServerPlayerState() { OriginalDeck = playerInitializer.Deck, Deck = playerInitializer.Deck.Init(), Hand = new List <CardBase>(), Minions = new List <Minion>(), Player = new Player(playerInitializer.Name, playerInitializer.Class, ruleSet.PlayerStartingHealth), Mana = new ManaStorage(ruleSet.ManaStorageCrystalsAtStart), MinionOrderNumber = 0, Triggers = new TriggerStorage(), Events = new Dictionary <int, List <EventBase> >() }; return(state); }
public void rpc_UnspawnPlayerAvatar(PhotonPlayer player) { if (!PhotonNetwork.inRoom || !player.GetAttribute <bool>(PlayerAttributes.HASSPAWNED, false)) { return; } //RESET DE LAA CAMERA UNIQUEMENT CHEZ LE CLIENT CONCERNEE if (PhotonNetwork.player == player) { ResetCameraTransform(); //DESTROY AVATAR UNIQUEMENT PAR LE MASTERCLIENT //PhotonNetwork.DestroyPlayerObjects(player); DestroyPlayerCharacters(player); PlayerAvatar = null; player.SetAttribute(PlayerAttributes.HASSPAWNED, false); } }
// Use this for initialization void Start() { p1LifeBar = GameObject.Find("P1LifeBar"); p1BufferBar = GameObject.Find("P1BufferBarSegments"); p2LifeBar = GameObject.Find("P2LifeBar"); p2BufferBar = GameObject.Find("P2BufferBarSegments"); UIElements = GameObject.Find("InGameUIElements"); ToggleUI(false); victoryText = GameObject.FindGameObjectWithTag("VictoryText").GetComponent <Text>(); //bullets = new BulletDepot(); // clearing a warning w/next line - ski bullets = ScriptableObject.CreateInstance <BulletDepot>(); bullets.Load(); playerFactory = GetComponent <PlayerInitializer>(); playerFactory.bullets = bullets; player1Controls = CreateControlScheme(0); player2Controls = CreateControlScheme(1); background = GameObject.FindGameObjectWithTag("Background").GetComponent <SpriteRenderer>(); characterSelectManager = GetComponent <CharacterSelectManager>(); int numCharacters = System.Enum.GetNames(typeof(Character)).Length; AnalyticsEngine.Initialize(new string[] { "LoholtBulletsFired", "OrpheusBulletsFired", "HirukoBulletsFired" }); characterSelectManager.Reset(); currentUpdateFunction = CharacterSelect; menuController = GameObject.Find("Canvas").GetComponent <MenuController>(); player1Controller = InputManager.ActiveDevice; foreach (InputDevice controller in InputManager.Devices) { if (controller != InputManager.ActiveDevice) { player2Controller = controller; } } characterSelectManager.SetControllers(player1Controller, player2Controller); //menuController.Toggle(); }
public GameLogic(NetServer server) { this.server = server; hub = Hub.Default; hub.Subscribe <PurchaseRerollRequested>(this, PurchaseReroll); hub.Subscribe <PurchaseUnitRequested>(this, PurchaseUnit); hub.Subscribe <MoveUnitRequested>(this, MoveUnit); hub.Subscribe <PurchaseXPRequested>(this, PurchaseXP); hub.Subscribe <UnitPurchased>(this, UnitPurchased); hub.Subscribe <UnitLeveledUp>(this, UnitLeveledUp); state = GameState.Idle; shop = new Shop(); playerIntializer = new PlayerInitializer(); playerIntializer.PlayerDatasCreated += HandlePlayerDatasCreated; timeline = new GameTimeline(); timeline.Finished += () => hub.Publish(new GameFinished()); timeline.Changed += HandleTimelineChanged; timeline.RoundStart += HandleRoundStart; }
/// <summary> /// Initializes references to the respective player script /// </summary> /// <param name="playerType">The type of player this component belongs to</param> /// <param name="player">The respective PlayerInitializer script</param> public void InitMemberFields(PlayerType playerType, PlayerInitializer player) { this.playerType = playerType; this.player = player; }
public GameResult HostTheGame( PlayerInitializer playerInitializer1, PlayerInitializer playerInitializer2, IUserInteractor playerInteractor1, IUserInteractor playerInteractor2) { logger.Log(LogType.Arbiter, LogSeverity.Info, "Game started"); this.playerInteractor1 = playerInteractor1; this.playerInteractor2 = playerInteractor2; var deckValidation1 = deckValidator.ValidateDeck(playerInitializer1.Deck, playerInitializer1.Class); var deckValidation2 = deckValidator.ValidateDeck(playerInitializer2.Deck, playerInitializer2.Class); if (!deckValidation1.IsOk || !deckValidation2.IsOk) { //TODO: figure out where to log the validator messages return(new GameResult() { IsOk = false }); } player1State = gameStatePreparator.Initialize(playerInitializer1); player2State = gameStatePreparator.Initialize(playerInitializer2); //TODO: gamble the right of first turn. //TODO: implement mulligan and initial draw here //TODO: add service for draws and fatigue for (int i = 0; i < ruleSet.HandStartingSize; i++) { var randomCardIndex = new Random().Next(0, player1State.Deck.Count); var card = player1State.Deck[randomCardIndex]; player1State.Deck.RemoveAt(randomCardIndex); player1State.Hand.Add(card); var randomCardIndex2 = new Random().Next(0, player2State.Deck.Count); var card2 = player2State.Deck[randomCardIndex2]; player2State.Deck.RemoveAt(randomCardIndex2); player2State.Hand.Add(card); } isPlayerOneActive = true; var internalTurnNumber = 1; while (internalTurnNumber++ < ruleSet.TurnMaxCountPerGame) { var state = new ServerGameState() { Me = ActivePlayerState, Opp = PassivePlayerState }; state.Me.Events.Add(internalTurnNumber, new List <EventBase>()); logger.Log(LogType.Arbiter, LogSeverity.Info, $"Turn {internalTurnNumber / 2} started for {state.Me.Player.Name}"); // Add new non-empty mana crystal if (state.Me.Mana.PermanentManaCrystals < ruleSet.ManaStorageMaxCrystals) { state.Me.Mana.AddManaCrystals(1, false); } // Refresh Permanent Mana Crystals state.Me.Mana.RefreshPermanentManaCrystals(); //TODO: draw the card from the deck var randomCardIndex = new Random().Next(0, state.Me.Deck.Count); var card = state.Me.Deck[randomCardIndex]; state.Me.Deck.RemoveAt(randomCardIndex); state.Me.Hand.Add(card); //TODO: start of turn events here //TODO: update the state to both users //TODO: send the events var stateForActiveUser = gameStatePreparator.PrepareGameState(state); ActivePlayerInteractor.Update(stateForActiveUser); //TODO: add time limit for a user to interact while (true) { var interaction = ActivePlayerInteractor.Interact(); var interactionValidation = userInteractionProcessor.ValidateInteraction(stateForActiveUser, interaction); if (!interactionValidation.IsOk) { //TODO: figure out where to log the validator messages return(new GameResult() { IsOk = false }); } if (interaction is InteractionEndTurn) { break; } //TODO: send the events to other user userInteractionProcessor.ProcessInteraction(state, interaction); if (state.Me.LastTurnEvents.Any(x => x is EventCharacterDied && (x as EventCharacterDied).DiedCharacter == state.Opp.Player.Id)) { logger.Log(LogType.Arbiter, LogSeverity.Info, $"{state.Me.Player.Name} Won"); logger.Log(LogType.Arbiter, LogSeverity.Info, $"After Game State: {JsonConvert.SerializeObject(state)}"); // TODO: find a more approriate way to stop the game return(new GameResult() { IsOk = true, IsFirstPlayerWon = isPlayerOneActive, FinalState = state }); } stateForActiveUser = gameStatePreparator.PrepareGameState(state); ActivePlayerInteractor.Update(stateForActiveUser); } // Burn Unused Mana state.Me.Mana.BurnTemporaryCrystals(); //TODO: end of turn events here isPlayerOneActive = !isPlayerOneActive; } return(null); }
public void SetUp() { PaddleFactory = Mock <IPaddleFactory>(); PlayerInitializer = new PlayerInitializer(PaddleFactory.Object); }
// Use this for initialization void Start() { GameObject[] HorusWinsIcons; GameObject[] SetWinsIcons; SetWinsIcons = GameObject.FindGameObjectsWithTag("SetWinsIcon"); HorusWinsIcons = GameObject.FindGameObjectsWithTag("HorusWinsIcon"); HorusWinsIconsSR = new SpriteRenderer[HorusWinsIcons.Length]; SetWinsIconsSR = new SpriteRenderer[SetWinsIcons.Length]; p1LifeBar = GameObject.Find("P1LifeBar"); p1BufferBar = GameObject.Find("P1BufferBarSegments"); p2LifeBar = GameObject.Find("P2LifeBar"); p2BufferBar = GameObject.Find("P2BufferBarSegments"); UIElements = GameObject.Find("InGameUIElements"); ToggleUI(false); player1Wins = 0; player2Wins = 0; roundsToWin = 2; int j = 0; for (int i = 1; i >= 0; i--) { HorusWinsIconsSR[j] = HorusWinsIcons[i].GetComponent <SpriteRenderer>(); SetWinsIconsSR[j] = SetWinsIcons[i].GetComponent <SpriteRenderer>(); j++; } timerStarted = false; //bullets = new BulletDepot(); // clearing a warning w/next line - ski bullets = ScriptableObject.CreateInstance <BulletDepot>(); bullets.Load(); playerFactory = GetComponent <PlayerInitializer>(); playerFactory.bullets = bullets; player1Controls = CreateControlScheme(0); player2Controls = CreateControlScheme(1); currentRoundTime = roundTime; titleLogo = GameObject.FindGameObjectWithTag("TitleLogo").GetComponent <SpriteRenderer>(); pressStart = titleLogo.GetComponent <Text>(); infoScreen = GameObject.FindGameObjectWithTag("InfoScreen").GetComponent <SpriteRenderer>(); background = GameObject.FindGameObjectWithTag("Background").GetComponent <SpriteRenderer>(); roundTimer = GameObject.FindGameObjectWithTag("RoundTimer").GetComponent <Text>(); victoryText = GameObject.FindGameObjectWithTag("VictoryText").GetComponent <Text>(); titleLogo.enabled = true; pressStart.enabled = true; currentUpdateFunction = TitleScreen; characterSelectManager = GetComponent <CharacterSelectManager>(); int numCharacters = System.Enum.GetNames(typeof(Character)).Length; string[,] bulletDescriptions = new string[numCharacters, numCharacters]; for (int i = 0; i < numCharacters; i++) { bulletDescriptions[i, 0] = bullets.types[i].projectileTypes[1].bulletDescription; bulletDescriptions[i, 1] = bullets.types[i].projectileTypes[2].bulletDescription; bulletDescriptions[i, 2] = bullets.types[i].projectileTypes[0].bulletDescription; } AnalyticsEngine.Initialize(new string[] { "LoholtBulletsFired", "OrpheusBulletsFired", "HirukoBulletsFired" }); }