Inheritance: ScriptableObject
コード例 #1
0
        public void TestSetUp()
        {
            autoMocker = new RhinoAutoMocker<PlayedGameSaver>();
            autoMocker.PartialMockTheClassUnderTest();

            currentUser = new ApplicationUser
            {
                Id = "user id",
                CurrentGamingGroupId = GAMING_GROUP_ID,
                AnonymousClientId = "anonymous client id"
            };
            gameDefinition = new GameDefinition
            {
                Name = "game definition name",
                GamingGroupId = GAMING_GROUP_ID,
                Id = 9598
            };

            autoMocker.Get<ISecuredEntityValidator>().Expect(mock => mock.RetrieveAndValidateAccess<GameDefinition>(Arg<int>.Is.Anything, Arg<ApplicationUser>.Is.Anything)).Return(gameDefinition);

            existingPlayerWithMatchingGamingGroup = new Player
            {
                Id = 1,
                GamingGroupId = GAMING_GROUP_ID
            };
            autoMocker.Get<IDataContext>().Expect(mock => mock.FindById<Player>(Arg<int>.Is.Anything)).Return(existingPlayerWithMatchingGamingGroup);
        }
コード例 #2
0
ファイル: BuildTests.cs プロジェクト: NemeStats/NemeStats
        public void SetUp()
        {
            builder = new GameResultViewModelBuilder();
            GameDefinition gameDefinition = new GameDefinition()
            {
                Id = 15131,
                Name = "Yodle-masters 2014"
            };
            PlayedGame playedGame = new PlayedGame()
            {
                GameDefinition = gameDefinition,
                DatePlayed = new DateTime(2014, 09, 15),
                WinnerType = WinnerTypes.TeamWin
            };
            playerGameResult = new PlayerGameResult()
            {
                GameRank = 1,
                NemeStatsPointsAwarded = 2,
                Id = 151,
                PlayerId = 15135,
                Player = new Player()
                {
                    Name = "Test Player",
                    Active = false
                },
                PlayedGameId = 1432,
                PlayedGame = playedGame
            };

            playerGameResultDetails = builder.Build(playerGameResult);
        }
コード例 #3
0
 public void SetUp()
 {
     expectedGameDefinition = new GameDefinition
     {
         Id = GAME_DEFINITION_ID,
         Name = "some old game definition name",
         BoardGameGeekGameDefinitionId = -1
     };
     autoMocker.Get<IDataContext>().Expect(mock => mock.FindById<GameDefinition>(Arg<int>.Is.Anything)).Return(expectedGameDefinition);
 }
コード例 #4
0
ファイル: FindByIdTests.cs プロジェクト: NemeStats/NemeStats
        public void ItReturnsTheEntityForTheGivenId()
        {
            int entityId = 1;
            GameDefinition expectedGameDefinition = new GameDefinition() { Id = entityId };
            gameDefinitionDbSetMock.Expect(mock => mock.Find(entityId))
                .Return(expectedGameDefinition);

            GameDefinition actualGameDefinition = dataContext.FindById<GameDefinition>(entityId);

            Assert.AreSame(expectedGameDefinition, actualGameDefinition);
        }
コード例 #5
0
ファイル: FindByIdTests.cs プロジェクト: NemeStats/NemeStats
        public void ItValidatesThatTheEntityExists()
        {
            int entityId = 1;
            GameDefinition gameDefinition = new GameDefinition() { Id = entityId };
            gameDefinitionDbSetMock.Expect(mock => mock.Find(entityId))
                .Return(gameDefinition);

            dataContext.FindById<GameDefinition>(entityId);

            dataContext.AssertWasCalled(mock => mock.ValidateEntityExists<GameDefinition>(entityId, gameDefinition));
        }
コード例 #6
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker<SecuredEntityValidator>();
            _securedEntity = new GameDefinition
            {
                Id = _securedEntityId,
                GamingGroupId = _securedEntityGamingGroupId
            };
            _currentUser = new ApplicationUser();

            _autoMocker.Get<IDataContext>().Expect(mock => mock.FindById<GameDefinition>(_securedEntityId))
                .Return(_securedEntity);
        }
コード例 #7
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker<ChampionRecalculator>();
            _applicationUser = new ApplicationUser();

            _gameDefinition = new GameDefinition
            {
                ChampionId = _previousChampionId
            };
            _autoMocker.Get<IDataContext>().Expect(mock => mock.FindById<GameDefinition>(_gameDefinitionId))
                .Return(_gameDefinition);
            _savedChampion = new Champion { Id = _newChampionId };
            _autoMocker.Get<IDataContext>().Expect(mock => mock.Save(Arg<Champion>.Is.Anything, Arg<ApplicationUser>.Is.Anything))
                .Return(_savedChampion);

        }
コード例 #8
0
        public override void FixtureSetUp()
        {
            base.FixtureSetUp();

            dataContext = new NemeStatsDataContext();
            var playerRepository = new EntityFrameworkPlayerRepository(dataContext);
            boardGameGeekGameDefinitionInfoRetriever = new BoardGameGeekGameDefinitionInfoRetriever(new DateUtilities(), new CacheService(), dataContext);
            gameDefinitionRetriever = new GameDefinitionRetriever(dataContext, playerRepository, boardGameGeekGameDefinitionInfoRetriever);

            gameDefinition = gameDefinitionRetriever.GetGameDefinitionDetails(testGameDefinitionWithOtherGamingGroupId.Id,
                0);
            championlessGameDefinition = gameDefinitionRetriever.GetGameDefinitionDetails(gameDefinitionWithNoChampion.Id, 0);

            // Player ID 1 has a winning percentage high enough to be considered the champion
            championPlayerIdForGameDefinition = testPlayer7WithOtherGamingGroupId.Id;

            // Player ID 9 has a higher winning percentage than player 7, but is not active
            otherChampionPlayerIdForGameDefinition = testPlayer9UndefeatedWith5Games.Id;
        }
コード例 #9
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker<UniversalGameRetriever>();
            _currentUser = new ApplicationUser
            {
                Id = "some user id"
            };


            _expectedGameDefinition = new GameDefinition
            {
                Id = 20,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId,
            };

            var otherGameDefinition = new GameDefinition
            {
                Id = 21,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId,
            };


            var gameDefinitionQueryable = new List<GameDefinition>
            {
                _expectedGameDefinition,
                otherGameDefinition
            }.AsQueryable();
            _autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>()).Return(gameDefinitionQueryable);

            _expectedBoardGameGeekInfo = new BoardGameGeekInfo();
            _autoMocker.Get<IBoardGameGeekGameDefinitionInfoRetriever>().Expect(mock => mock.GetResults(Arg<int>.Is.Anything)).Return(_expectedBoardGameGeekInfo);

            _expectedGameDefinitionSummary = new GameDefinitionSummary();

            _expectedUniversalStats = new UniversalGameStats();
            _autoMocker.Get<IUniversalStatsRetriever>().Expect(mock => mock.GetResults(Arg<int>.Is.Anything))
                .Return(_expectedUniversalStats);

            _expectedTopChampions = new List<ChampionData>();
            _autoMocker.Get<IUniversalTopChampionsRetreiver>().Expect(mock => mock.GetFromSource(Arg<int>.Is.Anything))
                .Return(_expectedTopChampions);
        }
コード例 #10
0
ファイル: RolesCollection.cs プロジェクト: joeytsao/Game_JIC
 /// <summary>
 /// Touch使用交換人物位置的方法
 /// </summary>
 /// <param name="mode">交換的位置</param>
 public void ChangeRolePosition(GameDefinition.ChangeRoleMode mode)
 {
     if (!this.isChanging)
     {
         switch (mode)
         {
             case GameDefinition.ChangeRoleMode.OneAndTwo:
                 this.SetChange(ref this.Roles[0], ref this.Roles[1]);
                 break;
             case GameDefinition.ChangeRoleMode.TwoAndThree:
                 this.SetChange(ref this.Roles[1], ref this.Roles[2]);
                 break;
             case GameDefinition.ChangeRoleMode.ThreeAndFour:
                 this.SetChange(ref this.Roles[2], ref this.Roles[3]);
                 break;
             default:
                 break;
         }
     }
 }
コード例 #11
0
        public void SetUp()
        {
            _gameDefinitionDbSetMock = MockRepository.GenerateMock<DbSet<GameDefinition>>();

            nemeStatsDbContext.Expect(mock => mock.Set<GameDefinition>())
                .Repeat.Once()
                .Return(_gameDefinitionDbSetMock);

            _securedEntityValidator = MockRepository.GenerateMock<ISecuredEntityValidator>();
            securedEntityValidatorFactory.Expect(mock => mock.MakeSecuredEntityValidator<GameDefinition>(dataContext))
                .Repeat.Once()
                .Return(_securedEntityValidator);

            _gameDefinition = new GameDefinition
            {
                Id = _gameDefinitionId
            };
            _securedEntityValidator.Expect(mock => mock.RetrieveAndValidateAccess<GameDefinition>(_gameDefinitionId, currentUser))
                .Return(_gameDefinition);
        }
コード例 #12
0
        public GameDefinition CreateGameDefinition(CreateGameDefinitionRequest createGameDefinitionRequest, ApplicationUser currentUser)
        {
            ValidateNotNull(createGameDefinitionRequest);

            ValidateGameDefinitionNameIsNotNullOrWhitespace(createGameDefinitionRequest.Name);

            int gamingGroupId = createGameDefinitionRequest.GamingGroupId ?? currentUser.CurrentGamingGroupId;

            var boardGameGeekGameDefinition = CreateBoardGameGeekGameDefinition(
                createGameDefinitionRequest.BoardGameGeekGameDefinitionId, 
                currentUser);
            
            var existingGameDefinition = dataContext.GetQueryable<GameDefinition>()
                .FirstOrDefault(game => game.GamingGroupId == gamingGroupId
                        && game.Name == createGameDefinitionRequest.Name);

            if (existingGameDefinition == null)
            {
                var newGameDefinition = new GameDefinition
                {
                    Name = createGameDefinitionRequest.Name,
                    BoardGameGeekGameDefinitionId = boardGameGeekGameDefinition?.Id,
                    Description = createGameDefinitionRequest.Description,
                    GamingGroupId = gamingGroupId
                };

                new Task(() => eventTracker.TrackGameDefinitionCreation(currentUser, createGameDefinitionRequest.Name)).Start();

                return dataContext.Save(newGameDefinition, currentUser);
            }

            ValidateNotADuplicateGameDefinition(existingGameDefinition);

            existingGameDefinition.Active = true;
            existingGameDefinition.BoardGameGeekGameDefinitionId = boardGameGeekGameDefinition?.Id;
            if (!string.IsNullOrWhiteSpace(createGameDefinitionRequest.Description))
            {
                existingGameDefinition.Description = createGameDefinitionRequest.Description;
            }
            return dataContext.Save(existingGameDefinition, currentUser);
        }
コード例 #13
0
        public void ItThrowsADuplicateKeyExceptionIfThereIsAnExistingActiveGameDefinitionWithTheSameNameInTheCurrentUsersGamingGroupAndTheGamingGroupIsNotExplicitlySet()
        {
            var gameDefinition = new GameDefinition
            {
                Name = "existing game definition name",
                Active = true,
                GamingGroupId = currentUser.CurrentGamingGroupId
            };
            var createGameDefinitionRequest = new CreateGameDefinitionRequest
            {
                Name = gameDefinition.Name
            };
            var gameDefinitionQueryable = new List<GameDefinition>
            {
                gameDefinition
            }.AsQueryable();

            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>()).Return(gameDefinitionQueryable);

            Exception exception = Assert.Throws<DuplicateKeyException>(
                () => autoMocker.ClassUnderTest.CreateGameDefinition(createGameDefinitionRequest, currentUser));

            Assert.That(exception.Message, Is.EqualTo("An active Game Definition with name '" + gameDefinition.Name + "' already exists in this Gaming Group."));
        }
コード例 #14
0
        public override bool Compile(GameAssetType gameAsset, Uri baseUri, BinaryAsset asset, XmlNode node, GameDefinition game,
                                     string trace, ref int position, out string ErrorDescription)
        {
            List <TerrainTextureTileRuntime> tiles = new List <TerrainTextureTileRuntime>();
            List <XmlNode> nodes = new List <XmlNode>();

            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.Name == "Tile")
                {
                    nodes.Add(childNode);
                }
            }

            FileHelper.SetInt(nodes.Count, 4, asset.Content);
            BinaryAsset tileList = new BinaryAsset(12 * nodes.Count);

            asset.SubAssets.Add(8, tileList);
            DDSFile[,] textureList = new DDSFile[nodes.Count, 2];
            BinaryAsset baseAsset   = new BinaryAsset(0);
            BinaryAsset normalAsset = new BinaryAsset(0);
            uint        positionX   = 16;
            uint        positionY   = 16;
            uint        nextY       = 0;

            for (int idx = 0; idx < nodes.Count; ++idx)
            {
                FileHelper.SetUInt(uint.Parse(nodes[idx].Attributes["TextureID"].Value), idx * 12, tileList.Content);
                string baseTexture = nodes[idx].Attributes["BaseTexture"].Value;
                baseTexture = baseTexture.Substring(baseTexture.LastIndexOf(Path.DirectorySeparatorChar) + 1);
                baseTexture = baseTexture.Substring(baseTexture.LastIndexOf('/') + 1);
                baseTexture = baseTexture.Substring(0, baseTexture.LastIndexOf('.'));
                string baseTexturePath = Macro.Terrain + baseTexture + ".dds";
                if (!IOFile.Exists(baseTexturePath))
                {
                    ErrorDescription = string.Format("{0} doesn't exist.", baseTexturePath);
                    return(false);
                }
                using (FileStream textureStream = new FileStream(baseTexturePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    using (BinaryReader textureReader = new BinaryReader(textureStream))
                    {
                        textureList[idx, 0] = new DDSFile(textureReader.ReadBytes((int)(textureStream.Length)));
                    }
                }
                string normalTexture = nodes[idx].Attributes["NormalTexture"].Value;
                normalTexture = normalTexture.Substring(normalTexture.LastIndexOf(Path.DirectorySeparatorChar) + 1);
                normalTexture = normalTexture.Substring(normalTexture.LastIndexOf('/') + 1);
                normalTexture = normalTexture.Substring(0, normalTexture.LastIndexOf('.'));
                string normalTexturePath = Macro.Terrain + normalTexture + ".dds";
                if (!IOFile.Exists(normalTexturePath))
                {
                    ErrorDescription = string.Format("{0} doesn't exist.", normalTexturePath);
                    return(false);
                }
                using (FileStream textureStream = new FileStream(normalTexturePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    using (BinaryReader textureReader = new BinaryReader(textureStream))
                    {
                        textureList[idx, 1] = new DDSFile(textureReader.ReadBytes((int)(textureStream.Length)));
                    }
                }
            }

            // fixed width, automatically calculated height
            ushort atlasSize   = 576;
            ushort atlasHeight = 0;

            /*
             * foreach (XmlAttribute attribute in node.Attributes)
             * {
             *      switch (attribute.Name)
             *      {
             *              case "AtlasSize":
             *                      atlasSize = ushort.Parse(attribute.Value);
             *                      break;
             *      }
             * }
             */
            byte[] baseContent   = new byte[0];
            byte[] normalContent = new byte[0];
            uint   rowHeight     = 0;

            for (int tileIdx = 0; tileIdx < textureList.Length >> 1; ++tileIdx)
            {
                uint size = textureList[tileIdx, 0].Header.Height;
                rowHeight = Math.Max(size + 32, rowHeight);

                if (positionX + size + 16 > atlasSize)
                {
                    positionX  = 16;
                    positionY += nextY;
                    rowHeight  = size + 32;
                }

                if (positionY + size + 16 > atlasHeight)
                {
                    atlasHeight += atlasSize;
                    Array.Resize(ref baseContent, atlasSize * 4 * atlasHeight);
                    Array.Resize(ref normalContent, atlasSize * 4 * atlasHeight);
                }

                byte[] color  = textureList[tileIdx, 0].Content.GetColor(size, size);
                byte[] normal = textureList[tileIdx, 1].Content.GetColor(size, size);
                for (int idy = -16; idy < size + 16; ++idy)
                {
                    for (int idx = -16; idx < size + 16; ++idx)
                    {
                        int tileY = idy;
                        if (tileY < 0)
                        {
                            tileY = (int)(size + tileY);
                        }
                        else if (tileY >= size)
                        {
                            tileY = (int)(tileY - size);
                        }
                        int tileX = idx;
                        if (tileX < 0)
                        {
                            tileX = (int)(size + tileX);
                        }
                        else if (tileX >= size)
                        {
                            tileX = (int)(tileX - size);
                        }
                        baseContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4]       = color[tileY * size * 4 + tileX * 4];
                        baseContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 1]   = color[tileY * size * 4 + tileX * 4 + 1];
                        baseContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 2]   = color[tileY * size * 4 + tileX * 4 + 2];
                        baseContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 3]   = color[tileY * size * 4 + tileX * 4 + 3];
                        normalContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4]     = normal[tileY * size * 4 + tileX * 4];
                        normalContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 1] = normal[tileY * size * 4 + tileX * 4 + 1];
                        normalContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 2] = normal[tileY * size * 4 + tileX * 4 + 2];
                        normalContent[(positionY + idy) * atlasSize * 4 + (positionX + idx) * 4 + 3] = normal[tileY * size * 4 + tileX * 4 + 3];
                    }
                }
                FileHelper.SetUShort((ushort)positionX, 12 * tileIdx + 4, tileList.Content);
                FileHelper.SetUShort((ushort)positionY, 12 * tileIdx + 6, tileList.Content);
                FileHelper.SetUShort((ushort)(positionX + size), 12 * tileIdx + 8, tileList.Content);
                FileHelper.SetUShort((ushort)(positionY + size), 12 * tileIdx + 10, tileList.Content);
                positionX += size + 32;
                nextY      = Math.Max(size + 32, nextY);
            }

            bool hasAlpha = false;

            for (int idx = 0; idx < nodes.Count; ++idx)
            {
                if (textureList[idx, 0].HasAlpha())
                {
                    hasAlpha = true;
                    break;
                }
            }
            DDSFile baseAtlas = null;

            if (hasAlpha)
            {
                baseAtlas = new DDSFile(atlasSize, atlasHeight, 5, DDSType.DXT5, baseContent);
            }
            else
            {
                baseAtlas = new DDSFile(atlasSize, atlasHeight, 5, DDSType.DXT1, baseContent);
            }
            hasAlpha = false;
            for (int idx = 0; idx < nodes.Count; ++idx)
            {
                if (textureList[idx, 1].HasAlpha())
                {
                    hasAlpha = true;
                    break;
                }
            }
            DDSFile normalAtlas = null;

            if (hasAlpha)
            {
                normalAtlas = new DDSFile(atlasSize, atlasHeight, 5, DDSType.A1R5G5B5, normalContent);
            }
            else
            {
                normalAtlas = new DDSFile(atlasSize, atlasHeight, 5, DDSType.R5G6B5, normalContent);
            }
            baseAsset.Content = baseAtlas.Binary;
            asset.SubAssets.Add(0x0C, baseAsset);
            FileHelper.SetInt(baseAsset.Content.Length, 0x10, asset.Content);
            normalAsset.Content = normalAtlas.Binary;
            asset.SubAssets.Add(0x14, normalAsset);
            FileHelper.SetInt(normalAsset.Content.Length, 0x18, asset.Content);
            ErrorDescription = string.Empty;
            return(true);
        }
コード例 #15
0
        private GameDefinition SaveGameDefinition(NemeStatsDbContext nemeStatsDbContext, int gamingGroupId, string gameDefinitionName, int? boardGameGeekGameDefinitionid = null)
        {
            GameDefinition gameDefinition = new GameDefinition
            {
                Name = gameDefinitionName,
                Description = testGameDescription,
                GamingGroupId = gamingGroupId,
                BoardGameGeekGameDefinitionId = boardGameGeekGameDefinitionid
            };
            nemeStatsDbContext.GameDefinitions.Add(gameDefinition);
            nemeStatsDbContext.SaveChanges();

            return gameDefinition;
        }
コード例 #16
0
 public override void OnSessionBegin(string sessionName, GameDefinition gameDef, Props sessionParameters)
 {
     base.OnSessionBegin(sessionName, gameDef, sessionParameters);
     instance._gameDefinition = gameDef;
 }
コード例 #17
0
    /// <summary>
    /// 根據角色不同,使出不同絕技
    /// </summary>
    /// <param name="role">角色</param>
    void CheckRoleUniqueSkill(GameDefinition.Role role)
    {
        GameObject obj = null;
        switch (role)
        {
            case GameDefinition.Role.狂戰士:   //公式:第一段普通攻擊2倍,第二段普通攻擊1.5倍
                //第一段攻擊,自身攻擊距離範圍內所有怪物受到傷害
                foreach (var hit in Physics.RaycastAll(this.transform.position, Vector3.right, this.AttackDistance, this.AttackLayer))
                {
                    if (hit.transform.GetComponent<EnemyPropertyInfo>())
                        hit.transform.GetComponent<EnemyPropertyInfo>().DecreaseLife(Mathf.FloorToInt(this.roleInfo.damage * (2 + this.roleInfo.UltimateSkillLV * 1.5f)));    //第一段傷害
                    else if (hit.transform.GetComponent<BossPropertyInfo>())
                        hit.transform.GetComponent<BossPropertyInfo>().DecreaseLife(Mathf.FloorToInt(this.roleInfo.damage * (2 + this.roleInfo.UltimateSkillLV * 1.5f)));    //第一段傷害
                }
                //第二段攻擊,產生衝擊波物件
                obj = (GameObject)Instantiate(this.SkillObject, this.transform.position - new Vector3(0, 0, 0.1f), this.SkillObject.transform.rotation);

                //設定物件的parent 、 layer 、 Damage
                obj.layer = LayerMask.NameToLayer("ShootObject");
                obj.transform.parent = GameObject.Find("UselessObjectCollection").transform;
                obj.GetComponent<ShootObjectInfo_Through>().Damage = Mathf.FloorToInt(this.roleInfo.damage * (1.5f + this.roleInfo.UltimateSkillLV * 0.75f)); //第二段傷害
                break;

            case GameDefinition.Role.獵人:    //公式:普通攻擊1.2倍
                //三支箭
                for (int i = 0; i < 3; i++)
                {
                    //產生光箭物件
                    obj = (GameObject)Instantiate(this.SkillObject, this.transform.position - new Vector3(0, 0, 0.1f), this.SkillObject.transform.rotation);

                    //設定物件的parent 、 layer 、 Damage
                    obj.layer = LayerMask.NameToLayer("ShootObject");
                    obj.transform.parent = GameObject.Find("UselessObjectCollection").transform;
                    obj.transform.Rotate(new Vector3(0, 0, -10 + i * 10));  //光箭角度不同
                    obj.GetComponent<ShootObjectInfo_Through>().Damage = Mathf.FloorToInt(this.roleInfo.damage * (1.2f + this.roleInfo.UltimateSkillLV * 0.4f));
                }
                break;

            case GameDefinition.Role.盾騎士:   //公式:普通攻擊3倍
                //產生光波物件
                obj = (GameObject)Instantiate(this.SkillObject, this.transform.position - new Vector3(0, 0, 0.1f), this.SkillObject.transform.rotation);

                //設定物件的parent 、 layer 、 Damage
                obj.layer = LayerMask.NameToLayer("ShootObject");
                obj.transform.parent = GameObject.Find("UselessObjectCollection").transform;
                obj.GetComponent<ShootObjectInfo_Through>().Damage = this.roleInfo.damage * (3 + this.roleInfo.UltimateSkillLV * 2);
                break;

            case GameDefinition.Role.魔法師:    //公式:普通攻擊2.5倍
                //產生魔法陣物件
                obj = (GameObject)Instantiate(this.SkillObject, this.transform.position - new Vector3(0, 0, 0.1f), this.SkillObject.transform.rotation);
                obj.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Camera.main.pixelWidth / 2, Camera.main.pixelHeight / 2, 1));       //魔法陣在螢幕正中央

                foreach (EnemyPropertyInfo script in GameObject.FindObjectsOfType(typeof(EnemyPropertyInfo)))
                    script.DecreaseLife(Mathf.FloorToInt(this.roleInfo.damage * (2.5f + this.roleInfo.UltimateSkillLV * 1.75f)));

                if (GameManager.script.CurrentBossObject != null)
                {
                    BossPropertyInfo script = (BossPropertyInfo)GameObject.FindObjectOfType(typeof(BossPropertyInfo));
                    script.DecreaseLife(Mathf.FloorToInt(this.roleInfo.damage * (2.5f + this.roleInfo.UltimateSkillLV * 1.75f)));
                }
                break;
        }
    }
コード例 #18
0
        public void AnExistingInactiveGameDefinitionIsReactivatedIfSomeoneTriesToAddItAgain()
        {
            var existingGameDefinition = new GameDefinition
            {
                Id = 1,
                Name = "existing game definition name",
                GamingGroupId = currentUser.CurrentGamingGroupId,
                Active = false
            };
            var gameDefinitionQueryable = new List<GameDefinition>
            {
                existingGameDefinition
            }.AsQueryable();
            var newGameDefinition = new CreateGameDefinitionRequest 
            {
                Name = existingGameDefinition.Name
            };
            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>()).Return(gameDefinitionQueryable); 

            autoMocker.ClassUnderTest.CreateGameDefinition(newGameDefinition, currentUser);

            var gameDefinitionThatWasSaved =
                (GameDefinition)autoMocker.Get<IDataContext>().GetArgumentsForCallsMadeOn(mock => mock.Save(Arg<GameDefinition>.Is.Anything, Arg<ApplicationUser>.Is.Anything))[0][0];

            Assert.That(gameDefinitionThatWasSaved.Id, Is.EqualTo(existingGameDefinition.Id));
            Assert.That(gameDefinitionThatWasSaved.BoardGameGeekGameDefinitionId, Is.EqualTo(existingGameDefinition.BoardGameGeekGameDefinitionId));
            Assert.That(gameDefinitionThatWasSaved.Active, Is.EqualTo(true));
        }
コード例 #19
0
 private void UpdateGameDefinition(GameDefinition game, int boardGameGeekGameDefinitionId,
     LinkOrphanGamesJobResult jobResult)
 {
     game.BoardGameGeekGameDefinitionId = boardGameGeekGameDefinitionId;
     jobResult.LinkedGames++;
 }
コード例 #20
0
        public static void Run(Options opts)
        {
            logger.Info("Starting...");

            var definition = GameDefinition.FromGame(opts.Game);

            var installation = GameInstallation
                               .FindAll(new[] { definition })
                               .FirstOrDefault();

            if (installation == null)
            {
                Console.WriteLine($"OpenSAGE was unable to find any installations of {definition.DisplayName}.\n");

                Console.WriteLine("You can manually specify the installation path by setting the following environment variable:");
                Console.WriteLine($"\t{definition.Identifier.ToUpper()}_PATH=<installation path>\n");

                Console.WriteLine("OpenSAGE doesn't yet detect every released version of every game. Please report undetected versions to our GitHub page:");
                Console.WriteLine("\thttps://github.com/OpenSAGE/OpenSAGE/issues");

                Console.WriteLine("\n\n Press any key to exit.");

                Console.ReadLine();

                Environment.Exit(1);
            }

            logger.Debug($"Have installation of {definition.DisplayName}");

            Platform.Start();

            var traceEnabled = !string.IsNullOrEmpty(opts.TraceFile);

            if (traceEnabled)
            {
                GameTrace.Start(opts.TraceFile);
            }

            // TODO: Read game version from assembly metadata or .git folder
            // TODO: Set window icon.
            var config = new Configuration()
            {
                UseFullscreen = opts.Fullscreen,
                UseRenderDoc  = opts.RenderDoc,
                LoadShellMap  = !opts.NoShellmap,
            };

            logger.Debug($"Have configuration");

            using (var game = new Game(installation, opts.Renderer, config))
            {
                game.GraphicsDevice.SyncToVerticalBlank = !opts.DisableVsync;

                game.DeveloperModeEnabled = opts.DeveloperMode;

                if (opts.ReplayFile != null)
                {
                    var replayFile = game.ContentManager.UserDataFileSystem?.GetFile(Path.Combine("Replays", opts.ReplayFile));
                    if (replayFile == null)
                    {
                        logger.Debug("Could not find entry for Replay " + opts.ReplayFile);
                        game.ShowMainMenu();
                    }

                    game.LoadReplayFile(replayFile);
                }
                else if (opts.Map != null)
                {
                    var mapCache = game.AssetStore.MapCaches.GetByName(opts.Map);
                    if (mapCache == null)
                    {
                        logger.Debug("Could not find MapCache entry for map " + opts.Map);
                        game.ShowMainMenu();
                    }
                    else if (mapCache.IsMultiplayer)
                    {
                        var pSettings = new PlayerSetting?[]
                        {
                            new PlayerSetting(null, game.AssetStore.PlayerTemplates.GetByName("FactionAmerica"), new ColorRgb(255, 0, 0)),
                            new PlayerSetting(null, game.AssetStore.PlayerTemplates.GetByName("FactionGLA"), new ColorRgb(255, 255, 255)),
                        };

                        logger.Debug("Starting multiplayer game");

                        game.StartMultiPlayerGame(opts.Map,
                                                  new EchoConnection(),
                                                  pSettings,
                                                  0);
                    }
                    else
                    {
                        logger.Debug("Starting singleplayer game");

                        game.StartSinglePlayerGame(opts.Map);
                    }
                }
                else
                {
                    logger.Debug("Showing main menu");
                    game.ShowMainMenu();
                }

                logger.Debug("Starting game");

                game.Run();
            }

            if (traceEnabled)
            {
                GameTrace.Stop();
            }

            Platform.Stop();
        }
コード例 #21
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker<UniversalTopChampionsRetreiver>();

            _expectedFirstChampionGameDefinition = new GameDefinition
            {
                Id = 20,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId,
                ChampionId = _topChampionId
            };

            var otherGameDefinition = new GameDefinition
            {
                Id = 21,
                BoardGameGeekGameDefinitionId = _boardGameGeekGameDefinitionId,
                ChampionId = _champion2Id
            };

            _topChampion = new Champion
            {
                Id = _topChampionId,
                GameDefinitionId = _expectedFirstChampionGameDefinition.Id,
                WinPercentage = 100,
                NumberOfWins = 2,
                NumberOfGames = 2,
                PlayerId = 200,
                Player = new Player()
                {
                    Name = "player name 1",
                    GamingGroupId = 200,
                    GamingGroup = new GamingGroup
                    {
                        Name = "gaming group 1"
                    }
                },
                GameDefinition = _expectedFirstChampionGameDefinition
            };
            _champion2 = new Champion
            {
                Id = _champion2Id,
                GameDefinitionId = otherGameDefinition.Id,
                WinPercentage = 50,
                NumberOfWins = 1,
                NumberOfGames = 2,
                PlayerId = 201,
                Player = new Player()
                {
                    Name = "player name 2",
                    GamingGroupId = 201,
                    GamingGroup = new GamingGroup
                    {
                        Name = "gaming group 2"
                    }
                },
                GameDefinition = otherGameDefinition
            };
            _championThatIsNoLongerTheCurrentChampionForTheGameDefinition = new Champion
            {
                Id = -1,
                GameDefinitionId = otherGameDefinition.Id,
                WinPercentage = 50,
                NumberOfWins = 1,
                NumberOfGames = 2,
                PlayerId = 202,
                Player = new Player()
                {
                    Name = "player name 2",
                    GamingGroupId = 201,
                    GamingGroup = new GamingGroup
                    {
                        Name = "gaming group 2"
                    }
                },
                GameDefinition = otherGameDefinition
            };

            var championQueryable = new List<Champion>
            {
                _topChampion,
                _champion2,
                _championThatIsNoLongerTheCurrentChampionForTheGameDefinition
            }.AsQueryable();
        
            _autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<Champion>()).Return(championQueryable);
        }
コード例 #22
0
        public void SetUp()
        {
            autoMocker = new RhinoAutoMocker<PlayerRetriever>();
            autoMocker.PartialMockTheClassUnderTest();
          
            expectedChampion = new Champion()
            {
                Id = 100,
                PlayerId = 101,
                Player = new Player()
            };
            expectedNemesis = new Nemesis()
            {
                Id = 155,
                NemesisPlayerId = 8888,
                NemesisPlayer = new Player()
            };
            expectedPriorNemesis = new Nemesis()
            {
                Id = 22222,
                NemesisPlayerId = 4444,
                NemesisPlayer = new Player()
            };
            var nemesisForPlayerWithOnlyACurrentNemesis = new Nemesis
            {
                Id = 33333,
                NemesisPlayer = new Player()
            };
            player = new Player()
            {
                Id = 1351,
                Name = "the player",
                PlayerGameResults = new List<PlayerGameResult>(),
                GamingGroup = new GamingGroup{ Id = gamingGroupId },
                GamingGroupId = gamingGroupId,
                Active = true,
                NemesisId = expectedNemesis.Id,
                Nemesis = expectedNemesis,
                PreviousNemesisId = expectedPriorNemesis.Id,
                PreviousNemesis = expectedPriorNemesis
            };
            expectedFormerChampionGame = new GameDefinition
            {
                Id = 111,
                PreviousChampionId = player.Id,
                GamingGroupId = gamingGroupId
            };
            playerWithNoNemesisEver = new Player()
            {
                Id = 161266939,
                GamingGroup = new GamingGroup { Id = gamingGroupId },
                GamingGroupId = gamingGroupId
            };
            playerWithOnlyACurrentNemesis = new Player()
            {
                Id = 888484,
                NemesisId = 7,
                Nemesis = nemesisForPlayerWithOnlyACurrentNemesis,
                GamingGroup = new GamingGroup { Id = gamingGroupId },
                GamingGroupId = gamingGroupId
            };
            playerWithAChampionship = new Player()
            {
                Id = 101,
                GamingGroup = new GamingGroup { Id = gamingGroupId }
            };

            var players = new List<Player>()
            {
                player,
                playerWithNoNemesisEver,
                playerWithOnlyACurrentNemesis,
                playerWithAChampionship
            };

            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<Player>())
                                               .Return(players.AsQueryable());

            expectedPlayerStatistics = new PlayerStatistics
            {
                NemePointsSummary = new NemePointsSummary(1, 2, 4)
            };

            autoMocker.ClassUnderTest.Expect(repo => repo.GetPlayerStatistics(Arg<int>.Is.Anything))
                .Repeat.Once()
                .Return(expectedPlayerStatistics);

            autoMocker.ClassUnderTest.Expect(mock => mock.GetPlayerGameResultsWithPlayedGameAndGameDefinition(
                Arg<int>.Is.Anything, 
                Arg<int>.Is.Anything))
                            .Repeat.Once()
                            .Return(player.PlayerGameResults.ToList());

            this.expectedMinions = new List<Player>();
            autoMocker.ClassUnderTest.Expect(mock => mock.GetMinions(Arg<int>.Is.Anything))
                .Return(this.expectedMinions);

            expectedPlayerGameSummaries = new List<PlayerGameSummary>
            {
                new PlayerGameSummary()
            };
            autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetPlayerGameSummaries(Arg<int>.Is.Anything))
                                .Return(expectedPlayerGameSummaries);

            expectedChampionedGames = new List<Champion> { expectedChampion };
            autoMocker.ClassUnderTest.Expect(mock => mock.GetChampionedGames(Arg<int>.Is.Anything))
                .Return(expectedChampionedGames);

            expectedFormerChampionedGames = new List<GameDefinition> { expectedFormerChampionGame };
            autoMocker.ClassUnderTest.Expect(mock => mock.GetFormerChampionedGames(Arg<int>.Is.Anything))
                .Return(expectedFormerChampionedGames);

            expectedPlayerVersusPlayerStatistics = new List<PlayerVersusPlayerStatistics>();
            autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetPlayerVersusPlayersStatistics(Arg<int>.Is.Anything))
                      .Return(expectedPlayerVersusPlayerStatistics);

            autoMocker.Get<IPlayerRepository>().Expect(mock => mock.GetLongestWinningStreak(player.Id)).Return(expectedLongestWinningStreak);

            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<PlayerAchievement>()).Return(new List<PlayerAchievement>().AsQueryable());

        }
コード例 #23
0
 private void ClearChampionId(ApplicationUser applicationUser, GameDefinition gameDefinition)
 {
     if (gameDefinition.ChampionId != null)
     {
         gameDefinition.PreviousChampionId = gameDefinition.ChampionId;
         gameDefinition.ChampionId = null;
         dataContext.Save(gameDefinition, applicationUser);
     }
 }
コード例 #24
0
        public void ItCanFindAnEntityUsingAnIntId()
        {
            GameDefinition gameDefinition = dataContext.FindById <GameDefinition>(testGameDefinition.Id);

            Assert.NotNull(gameDefinition);
        }
コード例 #25
0
        public void ItDoesNotRecordAGameDefinitionCreatedEventIfTheGameDefinitionIsNotNew()
        {
            var existingGameDefinition = new GameDefinition
            {
                Id = 1,
                Name = "existing game definition name",
                GamingGroupId = currentUser.CurrentGamingGroupId,
                Active = false
            };
            var gameDefinitionQueryable = new List<GameDefinition>
            {
                existingGameDefinition
            }.AsQueryable();
            var newGameDefinition = new CreateGameDefinitionRequest
            {
                Name = existingGameDefinition.Name
            };
            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>()).Return(gameDefinitionQueryable); ;

            autoMocker.ClassUnderTest.CreateGameDefinition(newGameDefinition, currentUser);

            autoMocker.Get<INemeStatsEventTracker>().AssertWasNotCalled(mock => mock.TrackGameDefinitionCreation(currentUser, newGameDefinition.Name));
        }
コード例 #26
0
        public void ReactivatingAnExistingGameDefinitionTakesTheOldDescriptionIfTheNewOneIsBlank()
        {
            var existingGameDefinition = new GameDefinition
            {
                Id = 1,
                Name = "existing game definition name",
                Description = "existing game definition description",
                Active = false,
                GamingGroupId = currentUser.CurrentGamingGroupId
            };
            var gameDefinitionQueryable = new List<GameDefinition>
            {
                existingGameDefinition
            }.AsQueryable();
            var newGameDefinition = new CreateGameDefinitionRequest
            {
                Name = existingGameDefinition.Name
            };
            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>()).Return(gameDefinitionQueryable);

            autoMocker.ClassUnderTest.CreateGameDefinition(newGameDefinition, currentUser);

            var gameDefinitionThatWasSaved =
                (GameDefinition)autoMocker.Get<IDataContext>().GetArgumentsForCallsMadeOn(mock => mock.Save(Arg<GameDefinition>.Is.Anything, Arg<ApplicationUser>.Is.Anything))[0][0];

            Assert.That(gameDefinitionThatWasSaved.Description, Is.EqualTo(existingGameDefinition.Description));
        }
コード例 #27
0
        public virtual void FixtureSetUp()
        {
            //create a stub for this only since we don't want the slowdown of all of the universal analytics event tracking
            eventTrackerStub = MockRepository.GenerateStub<IEventTracker>();
            eventTrackerStub.Expect(stub => stub.TrackEvent(Arg<IUniversalAnalyticsEvent>.Is.Anything))
                .Repeat.Any();
             
            playedGameTracker = new UniversalAnalyticsNemeStatsEventTracker(eventTrackerStub, eventFactory);

            using (NemeStatsDbContext nemeStatsDbContext = new NemeStatsDbContext())
            {
                CleanUpTestData();

                testUserWithDefaultGamingGroup = SaveApplicationUser(
                    nemeStatsDbContext,
                    testApplicationUserNameForUserWithDefaultGamingGroup,
                    "*****@*****.**");
                testUserWithDefaultGamingGroupAndNoInvites = SaveApplicationUser(
                    nemeStatsDbContext,
                    testApplicationUserNameForUserWithDefaultGamingGroupAndNoInvites,
                    "*****@*****.**");
                testUserWithOtherGamingGroup = SaveApplicationUser(
                    nemeStatsDbContext,
                    testApplicationUserNameForUserWithOtherGamingGroup,
                    "*****@*****.**");
                testUserWithThirdGamingGroup = SaveApplicationUser(
                    nemeStatsDbContext,
                    testApplicationUserNameForUserWithThirdGamingGroup, 
                    "*****@*****.**");

                using (NemeStatsDataContext dataContext = new NemeStatsDataContext())
                {
                    testGamingGroup = SaveGamingGroup(dataContext, testGamingGroup1Name, testUserWithDefaultGamingGroup);
                    testUserWithDefaultGamingGroup = UpdateDatefaultGamingGroupOnUser(testUserWithDefaultGamingGroup, testGamingGroup, dataContext);
                    testOtherGamingGroup = SaveGamingGroup(dataContext, testGamingGroup2Name, testUserWithOtherGamingGroup);
                    testUserWithOtherGamingGroup = UpdateDatefaultGamingGroupOnUser(testUserWithOtherGamingGroup, testOtherGamingGroup, dataContext);
                    testThirdGamingGroup = SaveGamingGroup(dataContext, testGamingGroup3Name, testUserWithThirdGamingGroup);
                    testUserWithThirdGamingGroup = UpdateDatefaultGamingGroupOnUser(testUserWithThirdGamingGroup,
                        testThirdGamingGroup, dataContext);

                    testBoardGameGeekGameDefinition = SaveBoardGameGeekGameDefinition(dataContext);

                    testGameDefinition = SaveGameDefinition(nemeStatsDbContext, testGamingGroup.Id, testGameName, testBoardGameGeekGameDefinition.Id);
                    testGameDefinition2 = SaveGameDefinition(nemeStatsDbContext, testGamingGroup.Id, testGameName2);
                    testGameDefinitionWithOtherGamingGroupId = SaveGameDefinition(nemeStatsDbContext, testOtherGamingGroup.Id, testGameNameForGameWithOtherGamingGroupId);
                    gameDefinitionWithNoChampion = SaveGameDefinition(nemeStatsDbContext, testThirdGamingGroup.Id,
                        gameDefinitionWithNoChampionName);
                    anotherTestGameDefinitionWithOtherGamingGroupId = SaveGameDefinition(nemeStatsDbContext,
                        testOtherGamingGroup.Id, testGameNameForAnotherGameWithOtherGamingGroupId);
                    SavePlayers(nemeStatsDbContext, testGamingGroup.Id, testOtherGamingGroup.Id);
                }

                using(NemeStatsDataContext dataContext = new NemeStatsDataContext())
                {
                    CreatePlayedGames(dataContext);
                }
            }
        }
コード例 #28
0
ファイル: LevelSystem.cs プロジェクト: joeytsao/Game_JIC
    /// <summary>
    /// 提升角色能力等級
    /// </summary>
    /// <param name="role">角色名</param>
    /// <param name="type">提升能力類型</param>
    public void LevelUp(GameDefinition.Role role, LevelUpType type)
    {
        int currentLV = -1;
        int cost = -1;
        GameDefinition.RoleData getData;

        switch (type)
        {
            case LevelUpType.生命:
                currentLV = PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_HP_LV");
                //如果該能力已經升至最大等級,則不進行升級
                if (currentLV >= GameDefinition.AbilityCostLevel.Count)
                    return;

                //將目前金幣數扣除升級能力所需的費用
                if (0 > (cost = PlayerPrefsDictionary.script.GetValue("Money") - PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_HP_M")))
                    return;
                PlayerPrefsDictionary.script.SetValue("Money", cost);

                //將能力升一級
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_HP_LV", currentLV + 1);

                //如果該能力在升級後,達最大等級,則升級所需金額設為0
                if ((currentLV + 1) == GameDefinition.AbilityCostLevel.Count)
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_HP_M", 0);
                else
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_HP_M", GameDefinition.AbilityCostLevel[currentLV + 1]);

                //讀取系統儲存的角色屬性資料
                getData = GameDefinition.RoleList.Find((GameDefinition.RoleData data) => { return data.RoleName == role; });
                //儲存升級後的能力至系統
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_HP", getData.Life + getData.LifeAdd);
                getData.UpdateAbilityValue(PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_HP"), getData.Damage, getData.Defence);
                break;

            case LevelUpType.攻擊:
                currentLV = PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_ATK_LV");
                //如果該能力已經升至最大等級,則不進行升級
                if (currentLV >= GameDefinition.AbilityCostLevel.Count)
                    return;

                //將目前金幣數扣除升級能力所需的費用
                if (0 > (cost = PlayerPrefsDictionary.script.GetValue("Money") - PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_ATK_M")))
                    return;
                PlayerPrefsDictionary.script.SetValue("Money", cost);

                //將能力升一級
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ATK_LV", currentLV + 1);

                //如果該能力在升級後,達最大等級,則升級所需金額設為0
                if ((currentLV + 1) == GameDefinition.AbilityCostLevel.Count)
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ATK_M", 0);
                else
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ATK_M", GameDefinition.AbilityCostLevel[currentLV + 1]);

                //讀取系統儲存的角色屬性資料
                getData = GameDefinition.RoleList.Find((GameDefinition.RoleData data) => { return data.RoleName == role; });
                //儲存升級後的能力至系統
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ATK", getData.Damage + getData.DamageAdd);
                getData.UpdateAbilityValue(getData.Life, PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_ATK"), getData.Defence);
                break;

            case LevelUpType.防禦:
                currentLV = PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_DEF_LV");
                //如果該能力已經升至最大等級,則不進行升級
                if (currentLV >= GameDefinition.AbilityCostLevel.Count)
                    return;

                //將目前金幣數扣除升級能力所需的費用
                if (0 > (cost = PlayerPrefsDictionary.script.GetValue("Money") - PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_DEF_M")))
                    return;
                PlayerPrefsDictionary.script.SetValue("Money", cost);

                //將能力升一級
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_DEF_LV", currentLV + 1);

                //如果該能力在升級後,達最大等級,則升級所需金額設為0
                if ((currentLV + 1) == GameDefinition.AbilityCostLevel.Count)
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_DEF_M", 0);
                else
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_DEF_M", GameDefinition.AbilityCostLevel[currentLV + 1]);

                //讀取系統儲存的角色屬性資料
                getData = GameDefinition.RoleList.Find((GameDefinition.RoleData data) => { return data.RoleName == role; });
                //儲存升級後的能力至系統
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_DEF", getData.Defence + getData.DefenceAdd);
                getData.UpdateAbilityValue(getData.Life, getData.Damage, PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_DEF"));
                break;

            case LevelUpType.普攻等級:
                currentLV = PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_BASIC_LV");
                //如果該能力已經升至最大等級,則不進行升級
                if (currentLV >= GameDefinition.AttackLVCostLevel.Count)
                    return;

                //將目前金幣數扣除升級能力所需的費用
                if (0 > (cost = PlayerPrefsDictionary.script.GetValue("Money") - PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_BASIC_LV_M")))
                    return;
                PlayerPrefsDictionary.script.SetValue("Money", cost);

                //將能力升一級
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_BASIC_LV", currentLV + 1);

                //如果該能力在升級後,達最大等級,則升級所需金額設為0
                if ((currentLV + 1) == GameDefinition.AttackLVCostLevel.Count)
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_BASIC_LV_M", 0);
                else
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_BASIC_LV_M", GameDefinition.AttackLVCostLevel[currentLV + 1]);
                break;

            case LevelUpType.絕技等級:
                currentLV = PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_ULT_LV");
                //如果該能力已經升至最大等級,則不進行升級
                if (currentLV >= GameDefinition.UltimateSkillCostLevel.Count)
                    return;

                //將目前金幣數扣除升級能力所需的費用
                if (0 > (cost = PlayerPrefsDictionary.script.GetValue("Money") - PlayerPrefsDictionary.script.GetValue(this.RoleNameDictionary[role] + "_ULT_LV_M")))
                    return;
                PlayerPrefsDictionary.script.SetValue("Money", cost);

                //將能力升一級
                PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ULT_LV", currentLV + 1);

                //如果該能力在升級後,達最大等級,則升級所需金額設為0
                if ((currentLV + 1) == GameDefinition.UltimateSkillCostLevel.Count)
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ULT_LV_M", 0);
                else
                    PlayerPrefsDictionary.script.SetValue(this.RoleNameDictionary[role] + "_ULT_LV_M", GameDefinition.UltimateSkillCostLevel[currentLV + 1]);
                break;
        }
    }
コード例 #29
0
        public void TestFixtureSetUp()
        {
            AutomapperConfiguration.Configure();
            minionViewModelBuilderMock = MockRepository.GenerateMock <IMinionViewModelBuilder>();
            mapperFactory = MockRepository.GenerateStub <IMapperFactory>();

            currentUser = new ApplicationUser()
            {
                CurrentGamingGroupId = gamingGroupId,
                Id = "application user id"
            };

            var gameDefinition1 = new GameDefinition()
            {
                Name = "test game 1",
                Id   = gameDefinitionIdThatIsChampionedByCurrentPlayer,
            };

            gameDefinitionThatIsFormerlyChampionedByCurrentPlayer = new GameDefinition
            {
                Name = "formerly championed game",
                Id   = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
            };
            gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer = new GameDefinition
            {
                Name = "currently and formerly championed game",
                Id   = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
            };
            var playedGame1 = new PlayedGame()
            {
                Id             = 1,
                GameDefinition = gameDefinition1
            };

            var playedGame2 = new PlayedGame()
            {
                Id = 2,
                GameDefinitionId = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
            };
            var playerGameResults = new List <PlayerGameResult>()
            {
                new PlayerGameResult()
                {
                    PlayedGameId = 12, PlayedGame = playedGame1
                },
                new PlayerGameResult()
                {
                    PlayedGameId = 13, PlayedGame = playedGame2
                }
            };

            normalPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName                = "Jim",
                OpposingPlayerId                  = 1,
                OpposingPlayerActive              = false,
                NumberOfGamesWonVersusThisPlayer  = 10,
                NumberOfGamesLostVersusThisPlayer = 10
            };

            playerWithNoGamesPlayed = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerId = 2
            };

            minionPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName = "Minion Player",
                OpposingPlayerId   = 5,
                NumberOfGamesWonVersusThisPlayer  = 20,
                NumberOfGamesLostVersusThisPlayer = 0
            };

            nemesisPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName = "nemesis player",
                OpposingPlayerId   = 3,
                NumberOfGamesWonVersusThisPlayer  = 0,
                NumberOfGamesLostVersusThisPlayer = 100
            };

            previousNemesisPlayer = new PlayerVersusPlayerStatistics

            {
                OpposingPlayerName = "Previous Nemesis Player",
                OpposingPlayerId   = 13,
                NumberOfGamesWonVersusThisPlayer  = 0,
                NumberOfGamesLostVersusThisPlayer = 42
            };

            var nemesis = new Nemesis()
            {
                NemesisPlayerId   = nemesisPlayer.OpposingPlayerId,
                NumberOfGamesLost = 3,
                LossPercentage    = 75,
                NemesisPlayer     = new Player()
                {
                    Name = "Ace Nemesis",
                }
            };

            var previousNemesis = new Nemesis()
            {
                NemesisPlayerId   = previousNemesisPlayer.OpposingPlayerId,
                NumberOfGamesLost = 5,
                LossPercentage    = 66,
                NemesisPlayer     = new Player()
                {
                    Name = "Bravo Nemesis",
                }
            };

            playerDetails = new PlayerDetails()
            {
                Id = playerId,
                ApplicationUserId = currentUser.Id,
                Active            = true,
                Name = "Skipper",
                LongestWinningStreak = 39,
                PlayerGameResults    = playerGameResults,
                PlayerStats          = new PlayerStatistics()
                {
                    TotalGames            = 5,
                    NemePointsSummary     = new NemePointsSummary(1, 3, 5),
                    AveragePlayersPerGame = 3,
                    TotalGamesLost        = 1,
                    TotalGamesWon         = 4,
                    WinPercentage         = 20
                },
                CurrentNemesis  = nemesis,
                PreviousNemesis = previousNemesis,
                Minions         = new List <Player>
                {
                    new Player
                    {
                        Id = minionPlayer.OpposingPlayerId
                    }
                },
                GamingGroupId   = gamingGroupId,
                GamingGroupName = "gaming group name",
                PlayerVersusPlayersStatistics = new List <PlayerVersusPlayerStatistics>
                {
                    normalPlayer,
                    playerWithNoGamesPlayed,
                    nemesisPlayer,
                    previousNemesisPlayer,
                    minionPlayer
                },
                PlayerGameSummaries = new List <PlayerGameSummary>
                {
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsChampionedByCurrentPlayer
                    },
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
                    },
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
                    }
                },
                NemePointsSummary = new NemePointsSummary(1, 3, 5)
            };

            gameResultViewModelBuilder
                = MockRepository.GenerateMock <IGameResultViewModelBuilder>();
            gameResultViewModelBuilder.Expect(build => build.Build(playerGameResults[0]))
            .Repeat
            .Once()
            .Return(new Models.PlayedGame.GameResultViewModel()
            {
                PlayedGameId = playerGameResults[0].PlayedGameId
            });
            gameResultViewModelBuilder.Expect(build => build.Build(playerGameResults[1]))
            .Repeat
            .Once()
            .Return(new Models.PlayedGame.GameResultViewModel()
            {
                PlayedGameId = playerGameResults[1].PlayedGameId
            });
            foreach (var player in playerDetails.Minions)
            {
                minionViewModelBuilderMock.Expect(mock => mock.Build(player))
                .Return(new MinionViewModel()
                {
                    MinionPlayerId = player.Id
                });
            }

            var championedGames = new List <Champion>
            {
                new Champion {
                    GameDefinition = gameDefinition1, GameDefinitionId = gameDefinitionIdThatIsChampionedByCurrentPlayer
                },
                new Champion {
                    GameDefinition = gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer, GameDefinitionId = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
                }
            };

            playerDetails.ChampionedGames = championedGames;

            var formerChampionedGames = new List <GameDefinition>
            {
                gameDefinitionThatIsFormerlyChampionedByCurrentPlayer,
                gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
            };

            playerDetails.FormerChampionedGames = formerChampionedGames;



            builder = new PlayerDetailsViewModelBuilder(gameResultViewModelBuilder, minionViewModelBuilderMock, mapperFactory);

            playerDetailsViewModel = builder.Build(playerDetails, twitterMinionBraggingUrl, currentUser);
        }
コード例 #30
0
ファイル: BuildTests.cs プロジェクト: NemeStats/NemeStats
        public void TestFixtureSetUp()
        {
            AutomapperConfiguration.Configure();
            minionViewModelBuilderMock = MockRepository.GenerateMock<IMinionViewModelBuilder>();
            mapperFactory = MockRepository.GenerateStub<IMapperFactory>();

            currentUser = new ApplicationUser()
            {
                CurrentGamingGroupId = gamingGroupId,
                Id = "application user id"
            };

            var gameDefinition1 = new GameDefinition()
            {
                Name = "test game 1",
                Id = gameDefinitionIdThatIsChampionedByCurrentPlayer,
            };
            gameDefinitionThatIsFormerlyChampionedByCurrentPlayer = new GameDefinition
            {
                Name = "formerly championed game",
                Id = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
            };
            gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer = new GameDefinition
            {
                Name = "currently and formerly championed game",
                Id = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
            };
            var playedGame1 = new PlayedGame()
            {
                Id = 1,
                GameDefinition = gameDefinition1
            };

            var playedGame2 = new PlayedGame()
            {
                Id = 2,
                GameDefinitionId = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
            };
            var playerGameResults = new List<PlayerGameResult>()
            {
                new PlayerGameResult(){ PlayedGameId = 12, PlayedGame = playedGame1 },
                new PlayerGameResult(){ PlayedGameId = 13, PlayedGame = playedGame2 }
            };

            normalPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName = "Jim",
                OpposingPlayerId = 1,
                OpposingPlayerActive = false,
                NumberOfGamesWonVersusThisPlayer = 10,
                NumberOfGamesLostVersusThisPlayer = 10
            };

            playerWithNoGamesPlayed = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerId = 2
            };

            minionPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName = "Minion Player",
                OpposingPlayerId = 5,
                NumberOfGamesWonVersusThisPlayer = 20,
                NumberOfGamesLostVersusThisPlayer = 0
            };

            nemesisPlayer = new PlayerVersusPlayerStatistics
            {
                OpposingPlayerName = "nemesis player",
                OpposingPlayerId = 3,
                NumberOfGamesWonVersusThisPlayer = 0,
                NumberOfGamesLostVersusThisPlayer = 100
            };

            previousNemesisPlayer = new PlayerVersusPlayerStatistics

            {
                OpposingPlayerName = "Previous Nemesis Player",
                OpposingPlayerId = 13,
                NumberOfGamesWonVersusThisPlayer = 0,
                NumberOfGamesLostVersusThisPlayer = 42
            };

            var nemesis = new Nemesis()
            {
                NemesisPlayerId = nemesisPlayer.OpposingPlayerId,
                NumberOfGamesLost = 3,
                LossPercentage = 75,
                NemesisPlayer = new Player()
                {
                    Name = "Ace Nemesis",
                }
            };

            var previousNemesis = new Nemesis()
            {
                NemesisPlayerId = previousNemesisPlayer.OpposingPlayerId,
                NumberOfGamesLost = 5,
                LossPercentage = 66,
                NemesisPlayer = new Player()
                {
                    Name = "Bravo Nemesis",
                }
            };

            playerDetails = new PlayerDetails()
            {
                Id = playerId,
                ApplicationUserId = currentUser.Id,
                Active = true,
                Name = "Skipper",
                LongestWinningStreak = 39,
                PlayerGameResults = playerGameResults,
                PlayerStats = new PlayerStatistics()
                {
                    TotalGames = 5,
                    NemePointsSummary = new NemePointsSummary(1, 3, 5),
                    AveragePlayersPerGame = 3,
                    TotalGamesLost = 1,
                    TotalGamesWon = 4,
                    WinPercentage = 20
                },
                CurrentNemesis = nemesis,
                PreviousNemesis = previousNemesis,
                Minions = new List<Player>
                {
                    new Player
                    {
                        Id = minionPlayer.OpposingPlayerId
                    }
                },
                GamingGroupId = gamingGroupId,
                GamingGroupName = "gaming group name",
                PlayerVersusPlayersStatistics = new List<PlayerVersusPlayerStatistics>
                {
                    normalPlayer,
                    playerWithNoGamesPlayed,
                    nemesisPlayer,
                    previousNemesisPlayer,
                    minionPlayer
                },
                PlayerGameSummaries = new List<PlayerGameSummary>
                {
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsChampionedByCurrentPlayer
                    },
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsFormerlyChampionedByCurrentPlayer
                    },
                    new PlayerGameSummary
                    {
                        GameDefinitionId = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
                    }
                },
                NemePointsSummary = new NemePointsSummary(1, 3, 5)
            };

            gameResultViewModelBuilder
                = MockRepository.GenerateMock<IGameResultViewModelBuilder>();
            gameResultViewModelBuilder.Expect(build => build.Build(playerGameResults[0]))
                    .Repeat
                    .Once()
                    .Return(new Models.PlayedGame.GameResultViewModel() { PlayedGameId = playerGameResults[0].PlayedGameId });
            gameResultViewModelBuilder.Expect(build => build.Build(playerGameResults[1]))
                    .Repeat
                    .Once()
                    .Return(new Models.PlayedGame.GameResultViewModel() { PlayedGameId = playerGameResults[1].PlayedGameId });
            foreach (var player in playerDetails.Minions)
            {
                minionViewModelBuilderMock.Expect(mock => mock.Build(player))
                    .Return(new MinionViewModel() { MinionPlayerId = player.Id });
            }

            var championedGames = new List<Champion>
            {
                new Champion { GameDefinition = gameDefinition1, GameDefinitionId = gameDefinitionIdThatIsChampionedByCurrentPlayer },
                new Champion { GameDefinition = gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer, GameDefinitionId = gameDefinitionIdThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer }
            };
            playerDetails.ChampionedGames = championedGames;

            var formerChampionedGames = new List<GameDefinition>
            {
                gameDefinitionThatIsFormerlyChampionedByCurrentPlayer,
                gameDefinitionThatIsBothCurrentlyAndFormerlyChampionedByCurrentPlayer
            };
            playerDetails.FormerChampionedGames = formerChampionedGames;

          

            builder = new PlayerDetailsViewModelBuilder(gameResultViewModelBuilder, minionViewModelBuilderMock, mapperFactory);

            playerDetailsViewModel = builder.Build(playerDetails, twitterMinionBraggingUrl, currentUser);
        }
コード例 #31
0
 private static void ValidateNotADuplicateGameDefinition(GameDefinition existingGameDefinition)
 {
     if (existingGameDefinition.Active)
     {
         string message = $"An active Game Definition with name '{existingGameDefinition.Name}' already exists in this Gaming Group.";
         throw new DuplicateKeyException(message);
     }
 }
コード例 #32
0
        public virtual void BaseSetUp()
        {
            autoMocker = new RhinoAutoMocker<PlayerRetriever>();
            autoMocker.PartialMockTheClassUnderTest();
            const int CHAMPION_ID = 55;

            gameDefinition = new GameDefinition
            {
                Name = "game name",
                ChampionId = CHAMPION_ID
            };

            var playerId = 1;
            var champion = new Champion
            {
                Id = CHAMPION_ID,
                GameDefinition = gameDefinition,
                PlayerId = playerId
            };

            playerGameResultsForFirstPlayer = new List<PlayerGameResult>()
            {
                new PlayerGameResult
                {
                    GameRank = 2,
                    NemeStatsPointsAwarded = 10,
                    PlayedGame = new PlayedGame
                    {
                        DatePlayed = new BasicDateRangeFilter().FromDate
                    }
                },
                new PlayerGameResult
                {
                    GameRank = 1,
                    NemeStatsPointsAwarded = 20,
                    PlayedGame = new PlayedGame
                    {
                        DatePlayed = new BasicDateRangeFilter().ToDate
                    }
                }};

            playerChampionshipsForFirstPlayer = new List<Champion>
            {
                champion
            };
            List<Player> players = new List<Player>()
            {
                new Player(){ GamingGroupId = gamingGroupId, Name = "2", PlayerGameResults = new List<PlayerGameResult>(), ChampionedGames = new List<Champion>()},
                new Player(){ GamingGroupId = gamingGroupId, Name = "3", PlayerGameResults = new List<PlayerGameResult>(), ChampionedGames = new List<Champion>() },
                new Player(){ GamingGroupId = -1, Name = "not in gaming group", PlayerGameResults = new List<PlayerGameResult>(), ChampionedGames = new List<Champion>() },
                new Player()
                {
                    Id = playerId,
                    GamingGroupId = gamingGroupId, 
                    Name = "1", 
                    PlayerGameResults = playerGameResultsForFirstPlayer,
                    ChampionedGames = new List<Champion>
                    {
                        champion
                    }
                },
                new Player()
                {
                    //player that will be last because she's inactive
                    GamingGroupId = gamingGroupId, Name = "0", PlayerGameResults = new List<PlayerGameResult>(), ChampionedGames = new List<Champion>(), Active = false 
                }
            };
            players[3].NemesisId = 1;
            players[3].Nemesis = new Nemesis()
            {
                NemesisPlayerId = 2,
                NemesisPlayer = new Player() { Id = 93995 }
            };
            playerQueryable = players.AsQueryable<Player>();

            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<Player>())
                .Return(playerQueryable);

            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<GameDefinition>())
                .Return(
                new List<GameDefinition>
                { gameDefinition }.AsQueryable());

            var playerAchievement =
                new PlayerAchievement
                {
                    DateCreated = DateTime.UtcNow,
                    LastUpdatedDate = DateTime.UtcNow,
                    PlayerId = playerId,
                    AchievementLevel = AchievementLevel.Bronze,
                    AchievementId = AchievementId.BusyBee
                };
            autoMocker.Get<IDataContext>().Expect(mock => mock.GetQueryable<PlayerAchievement>())
                .Return(new List<PlayerAchievement> { playerAchievement }.AsQueryable());
        }
コード例 #33
0
        private void AttachToBoardGameGeekGameDefinition(int? boardGameGeekGameDefinitionId, ApplicationUser currentUser, GameDefinition gameDefinition)
        {
            if (!boardGameGeekGameDefinitionId.HasValue)
            {
                return;
            }

            var newlyCreatedBoardGameGeekGameDefinition = CreateBoardGameGeekGameDefinition(
                boardGameGeekGameDefinitionId.Value,
                currentUser);
            if (newlyCreatedBoardGameGeekGameDefinition != null)
            {
                gameDefinition.BoardGameGeekGameDefinitionId = newlyCreatedBoardGameGeekGameDefinition.Id;
            }
        }
コード例 #34
0
ファイル: SaveTests.cs プロジェクト: NemeStats/NemeStats
        public void ItSetsTheGamingGroupIdIfItIsASecuredEntityThatIsntAlreadyInTheDatabaseAndTheGamingGroupIdIsntAlreadySet()
        {
            var gameDefinition = new GameDefinition();

            var securedEntityValidator = MockRepository.GenerateMock<ISecuredEntityValidator>();
            securedEntityValidatorFactory.Expect(mock => mock.MakeSecuredEntityValidator<GameDefinition>(dataContext))
                .IgnoreArguments()
                .Return(securedEntityValidator);
            securedEntityValidator.Expect(mock => mock.ValidateAccess<GameDefinition>(null, null)).IgnoreArguments();

            dataContext.Expect(mock => mock.AddOrInsertOverride(gameDefinition))
                .Repeat.Once()
                .Return(gameDefinition);

            dataContext.Save(gameDefinition, currentUser);

            dataContext.AssertWasCalled(mock => mock.AddOrInsertOverride(
                Arg<GameDefinition>.Matches(entity => entity.GamingGroupId == currentUser.CurrentGamingGroupId)));
        }