Наследование: PlayerBehaviour, ObjectModel
Пример #1
0
        public async Task ShouldAddOrder()
        {
            // Arrange
            Given(DefaultPlayer);
            var orderId          = Guid.NewGuid();
            var rng              = new Random();
            var expectedPrice    = rng.Next();
            var expectedQuantity = rng.Next();
            var expectedItemId   = "iron-ore";

            // Act
            await When(new OrderCreatedEvent(orderId, DefaultPlayer.Single())
            {
                Price     = expectedPrice,
                Quantity  = expectedQuantity,
                ItemId    = expectedItemId,
                OrderType = OrderType.Buy,
            });

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.Orders);
                var order = dbContext.Orders.Single();
                Assert.Equal(orderId, order.OrderId);
                Assert.Equal(_playerId, order.OwnerId);
                Assert.Equal(OrderState.Active, order.State);
                Assert.Equal(expectedPrice, order.Price);
                Assert.Equal(expectedQuantity, order.Quantity);
                Assert.Equal(expectedItemId, order.ItemId);
            }
        }
Пример #2
0
        public static DefaultPlayer CreatePlayer()
        {
            var random = new Random();

            PlayerId++;
            DefaultPlayer newPlayer = null;

            switch (random.Next(1, 5))
            {
            case 1:
                newPlayer = new CheaterPlayer(PlayerNameGenerator.GetNextPlayerName(), PlayerId);
                break;

            case 2:
                newPlayer = new MemoryPlayer(PlayerNameGenerator.GetNextPlayerName(), PlayerId);
                break;

            case 3:
                newPlayer = new RandomPlayer(PlayerNameGenerator.GetNextPlayerName(), PlayerId);
                break;

            case 4:
                newPlayer = new ThoroughCheaterPlayer(PlayerNameGenerator.GetNextPlayerName(), PlayerId);
                break;

            case 5:
                newPlayer = new ThoroughPlayer(PlayerNameGenerator.GetNextPlayerName(), PlayerId);
                break;
            }

            _playersList.Add(newPlayer);
            return(newPlayer);
        }
Пример #3
0
    //private List<ObjectModel> players = new List<ObjectModel>();
    void Awake()
    {
        this.gameObject.AddComponent<PlayerController>();
        playerController = GetComponent<PlayerController>();
        PlayerBehaviour player = new DefaultPlayer();
        player.SetModel(ItemDatabase.GetItemByName("Aero").gameModel);
        Weapon weaponDefault = new AeroWeapon();
        Bullet bullet = new PlazmaBullet();
        bullet.SetModel(ItemDatabase.GetItemByName("plazmabullet").gameModel);
        bullet.SetType(BulletType.PLAYER);
        weaponDefault.SetWeaponBullet(bullet);
        //weaponDefault.SetWeaponBullet(ItemDatabase.GetItemByName("plazmabullet").gameModel);
        player.AddWeapon(weaponDefault);
        playerController.AddPlayer(player, false);

        UnityEngine.Cursor.visible = false;
        //SpawnPlayer
        //playerSpawn = new Vector3(0, -3, 0);
        //GameObject player = (GameObject)Instantiate(ItemDatabase.GetItemByName("Aero").gameModel, playerSpawn, ItemDatabase.GetItemByName("Aero").gameModel.transform.rotation)
        //player.AddComponent<AeroWeapon>();

        //player.GetShipModel().AddComponent<AeroWeapon>();
        //player.GetShipModel().GetComponent<AeroWeapon>().SetWeaponBullet(ItemDatabase.GetItemByName("PlazmaBullet"));

        Vector3 bottomLeft = Camera.main.ViewportToWorldPoint(new Vector3(0, 0, Camera.main.nearClipPlane));
        Vector3 topRight = Camera.main.ViewportToWorldPoint(new Vector3(1, 1, Camera.main.nearClipPlane));
        screenWidth = topRight.x - bottomLeft.x;
        screenHeight = topRight.y - bottomLeft.y;

        levelRows = File.ReadAllLines("Assets/Resources/LevelTexts/Level1.txt");
        dbItems = ItemDatabase.GetItems();
        //delay = Random.Range(minDelay, maxDelay) * Time.deltaTime;
        delay = spawnDelay * Time.deltaTime;
    }
Пример #4
0
 private void initializeLives()
 {
     for (int i = 0; i < r_Player.Lives; i++)
     {
         Sprite currentPlayerShip = DefaultPlayer.ShallowClone();
         this.Add(currentPlayerShip);
     }
 }
Пример #5
0
        public async Task ShouldAddShipment()
        {
            // Arrange
            Given(DefaultPlayer, DefaultFactory);
            var shipmentId          = Guid.NewGuid();
            var expectedDestination = Guid.NewGuid().ToString();
            var expectedCargo       = new[]
            {
                new Cart
                {
                    CartType  = CartType.Cargo,
                    Inventory = new[]
                    {
                        new LuaItemStack
                        {
                            Count = new Random().Next(),
                            Name  = Guid.NewGuid().ToString(),
                        },
                    },
                },
            };
            var expectedWaitConditions = new[]
            {
                new WaitCondition
                {
                    CompareType = WaitConditionCompareType.And,
                    Type        = WaitConditionType.Empty,
                },
            };

            // Act
            await When(new ShipmentRequestedEvent(shipmentId, _factoryId, DefaultPlayer.Single())
            {
                Carts              = expectedCargo,
                WaitConditions     = expectedWaitConditions,
                DestinationStation = expectedDestination,
            });

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.Shipments);
                var shipment = dbContext.Shipments
                               .Include(s => s.Owner)
                               .Include(s => s.Factory)
                               .Single();
                Assert.Equal(shipmentId, shipment.ShipmentId);
                Assert.Equal(_playerId, shipment.OwnerId);
                Assert.Equal(expectedDestination, shipment.DestinationStation);
                Assert.Equal(ShipmentState.Requested, shipment.State);
                Assert.NotNull(shipment.Owner);
                Assert.NotNull(shipment.Factory);
                Assert.Equal(JsonConvert.SerializeObject(expectedCargo), JsonConvert.SerializeObject(shipment.Carts));
                Assert.Equal(JsonConvert.SerializeObject(expectedWaitConditions), JsonConvert.SerializeObject(shipment.WaitConditions));
            }
        }
Пример #6
0
        public async Task ShouldUpdateOrderWithFulfilled()
        {
            // Arrange
            Given(DefaultPlayer);
            var orderId = Guid.NewGuid();

            // Act
            await When(new OrderCreatedEvent(orderId, DefaultPlayer.Single()));
            await When(new OrderFulfilledEvent(orderId, DefaultPlayer.Single()));

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.Orders);
                var order = dbContext.Orders.Single();
                Assert.Equal(OrderState.Fulfilled, order.State);
            }
        }
Пример #7
0
        public async Task ShouldUpdateShipmentWithReceived()
        {
            // Arrange
            Given(DefaultPlayer, DefaultFactory);
            var shipmentId = Guid.NewGuid();

            // Act
            await When(new ShipmentRequestedEvent(shipmentId, _factoryId, DefaultPlayer.Single()));
            await When(new ShipmentReceivedEvent(shipmentId, _factoryId, DefaultPlayer.Single()));

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.Shipments);
                var shipment = dbContext.Shipments.Single();
                Assert.Equal(ShipmentState.Received, shipment.State);
            }
        }
Пример #8
0
        public override void Login()
        {
            var playersSO = GameFrameworkSettings.GameDatabase.GetGameData <PlayersSO>(Archetypes.GetFixed(Archetypes.Player));
            var player    = playersSO.Elements.FirstOrDefault((x) => x.Name == m_username);

            if (player == null)
            {
                player = new DefaultPlayer()
                {
                    ID   = playersSO.ElementsCount + 1,
                    Name = m_username
                };
                playersSO.Elements.Add(player);
            }

            m_id = player.ID.ToString();

            m_resultCallback?.Invoke();
        }
Пример #9
0
        private async void OnNewGame(object sender, RoutedEventArgs e)
        {
            MyMenu.IsPaneOpen = false;
            await Task.Delay(500);

            try
            {
                if (_game != null)
                {
                    if (_game.State != GameState.None)
                    {
                        if (await StaticHelpers.AskUserYesNoQuestion("Cribbage", "Start a new game?", "Yes", "No") ==
                            false)
                        {
                            return;
                        }
                    }

                    _game = null; // what happens if we are in an await???
                }

                await Reset();

                _txtInstructions.Text = "";
                var player   = new InteractivePlayer(_cgDiscarded, _cgCrib, 0);
                var computer = new DefaultPlayer(0);
                computer.Init("-usedroptable");
                _game = new Game(this, computer, player, 0);
                ((Button)sender).IsEnabled = true;
                await StartGame(GameState.Start);
            }
            catch
            {
                // eat this - user won't be able to do anythign anyway
            }
            finally
            {
                ((Button)sender).IsEnabled = true;
            }
        }
Пример #10
0
        private void load(AudioManager audio)
        {
            DrawableRoom = new DrawableRoom(room, false, false, true, true, false, false);
            dependencies.Cache(DrawableRoom);

            Size   = new Vector2(room.SizeX, room.SizeY) * DrawableTile.SIZE;
            Anchor = Anchor.Centre;
            Origin = Anchor.Centre;

            InternalChildren = new Drawable[]
            {
                DrawableRoom,
                CreateLayerBehindPlayer(),
                Player = new DefaultPlayer
                {
                    Died      = onDeath,
                    Completed = onCompletion,
                    Saved     = onSave,
                },
                new WaterRenderer(room),
                deathOverlay = new PlayerParticlesContainer(),
                roomEntering = new DrawableSample(audio.Samples.Get("room-entering"))
            };
        }
Пример #11
0
 public static void PauseThread(DefaultPlayer player, int factor)
 {
     Thread.Sleep(Math.Abs(player.GetCurrentNumber() - Basket.Weigth) * factor);
 }
Пример #12
0
 public virtual void Start()
 {
     thisPlayer = GetComponent <DefaultPlayer>();
 }
Пример #13
0
 void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
 {
     MyPlayer.Close();
     DefaultPlayer.Close();
 }
Пример #14
0
        private async void OnOpenGame(object sender, RoutedEventArgs e)
        {
            MyMenu.IsPaneOpen = false;

            if (_game != null)
            {
                if (_game.State != GameState.None)
                {
                    if (await StaticHelpers.AskUserYesNoQuestion("Cribbage", "End this game and open an old one?",
                                                                 "yes", "no") == false)
                    {
                        return;
                    }
                }
            }

            var openPicker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.DocumentsLibrary
            };

            openPicker.FileTypeFilter.Add(".crib");

            var file = await openPicker.PickSingleFileAsync();

            if (file == null)
            {
                return;
            }

            await Reset();

            _txtInstructions.Text = "";
            var player   = new InteractivePlayer(_cgDiscarded, _cgCrib, 0);
            var computer = new DefaultPlayer(0);

            computer.Init("-usedroptable");
            _game = new Game(this, computer, player, 0);


            try
            {
                var contents = await FileIO.ReadTextAsync(file);

                var settings = await StaticHelpers.LoadSettingsFile(contents, file.Name);

                if (settings["Game"]["Version"] != "1.0")
                {
                    await StaticHelpers.ShowErrorText($"Bad Version {settings["Game"]["Version"]}");

                    return;
                }

                _game.CurrentCount   = int.Parse(settings["Game"]["CurrentCount"]);
                _game.Player.Score   = int.Parse(settings["Game"]["PlayerBackScore"]);
                _game.AutoEnterScore = bool.Parse(settings["Game"]["AutoEnterScore"]);

                _board.AnimateScoreAsync(PlayerType.Player, _game.Player.Score);
                var scoreDelta = int.Parse(settings["Game"]["PlayerScoreDelta"]);
                _board.AnimateScoreAsync(PlayerType.Player, scoreDelta);
                _game.Player.Score += scoreDelta;

                _game.Computer.Score = int.Parse(settings["Game"]["ComputerBackScore"]);
                _board.AnimateScoreAsync(PlayerType.Computer, _game.Computer.Score);
                scoreDelta = int.Parse(settings["Game"]["ComputerScoreDelta"]);
                _board.AnimateScoreAsync(PlayerType.Computer, scoreDelta);
                _game.Computer.Score += scoreDelta;

                _game.Dealer = StaticHelpers.ParseEnum <PlayerType>(settings["Game"]["Dealer"]);
                _game.State  = StaticHelpers.ParseEnum <GameState>(settings["Game"]["State"]);
                SetState(_game.State);
                await MoveCrib(_game.Dealer);

                var retTuple = LoadCardsIntoGrid(_cgComputer, settings["Cards"]["Computer"]);
                if (!retTuple.ret)
                {
                    throw new Exception(retTuple.badToken);
                }

                retTuple = LoadCardsIntoGrid(_cgPlayer, settings["Cards"]["Player"]);
                if (!retTuple.ret)
                {
                    throw new Exception(retTuple.badToken);
                }

                retTuple = LoadCardsIntoGrid(_cgDiscarded, settings["Cards"]["Counted"]);
                if (!retTuple.ret)
                {
                    throw new Exception(retTuple.badToken);
                }

                var countedCards = new List <CardCtrl>();
                var count        = 0;
                foreach (var card in _cgDiscarded.Cards)
                {
                    count += card.Value;
                    if (count <= 31)
                    {
                        countedCards.Add(card);
                    }
                    else
                    {
                        foreach (var cc in countedCards)
                        {
                            cc.Counted = true;
                            cc.Opacity = 0.8;
                        }

                        countedCards.Clear();
                        count = 0;
                    }
                }

                retTuple = LoadCardsIntoGrid(_cgCrib, settings["Cards"]["Crib"]);
                if (!retTuple.ret)
                {
                    throw new Exception(retTuple.badToken);
                }

                retTuple = LoadCardsIntoGrid(_cgDeck, settings["Cards"]["SharedCard"]);
                if (!retTuple.ret)
                {
                    throw new Exception(retTuple.badToken);
                }

                var  taskList = new List <Task>();
                Task t        = null;

                if ((int)_game.State > (int)GameState.GiveToCrib)
                {
                    t = _cgDeck.Cards[0].SetOrientationTask(CardOrientation.FaceUp, 500, 0);
                    taskList.Add(t);
                }

                foreach (var card in _cgPlayer.Cards)
                {
                    t = card.SetOrientationTask(CardOrientation.FaceUp, 0, 0);
                    taskList.Add(t);
                }

                foreach (var card in _cgDiscarded.Cards)
                {
                    t = card.SetOrientationTask(CardOrientation.FaceUp, 0, 0);
                    taskList.Add(t);
                }

                if ((int)_game.State >= (int)GameState.ScoreComputerHand)
                {
                    foreach (var card in _cgComputer.Cards)
                    {
                        t = card.SetOrientationTask(CardOrientation.FaceUp, 0, 0);
                        taskList.Add(t);
                    }
                }

                await Task.WhenAll(taskList);

                await StartGame(_game.State);
            }
            catch (Exception ex)
            {
                await StaticHelpers.ShowErrorText(
                    $"Error loading file {file.Name}\n\nYou should delete the file.\n\nTechnical details:\n{ex}");
            }
        }
Пример #15
0
        public void AddPlayer(DefaultPlayer element)
        {
            var scriptable = GetScriptable <PlayersSO>(Archetypes.GetFixed(Archetypes.Player));

            scriptable.Add(element);
        }
Пример #16
0
 public ShoutMessage(string message, DefaultPlayer sender) : base(message, sender)
 {
 }