Ejemplo n.º 1
0
        public void TestHitFormulaDeath1()
        {
            var random = Substitute.For<IRandom>();

            var formula = new HitTest(random);
            random.NextLong(Arg.Any<long>(), Arg.Any<long>()).Returns(0xffffffe);

            var fishs = new List<RequsetFishData>
            {
                new RequsetFishData
                {
                    FishId = 1,
                    FishOdds = 1
                }
            };
            var weapon = new RequestWeaponData
            {
                TotalHits = 1,
                WeaponBet = 1,
                WeaponOdds = 1,
                BulletId = 1
            };

            var request = new HitRequest(fishs.ToArray(), weapon, true);

            var hitResponses = formula.TotalRequest(request);
            foreach(var respones in hitResponses)
            {
                Assert.AreEqual(1, respones.WepId);
                Assert.AreEqual(1, respones.FishId);
                Assert.AreEqual(FISH_DETERMINATION.DEATH, respones.DieResult);
            }
        }
Ejemplo n.º 2
0
        internal void Conver(int wepbet, int totalhits, int fishodds)
        {
            var weaponData = new RequestWeaponData
            {
                WeaponBet = wepbet,
                TotalHits = totalhits
            };

            var fishDatas = new List<RequsetFishData>
            {
                new RequsetFishData()
            };

            var hitRequest = new HitRequest(fishDatas.ToArray(), weaponData, true);

            _Gpi.Hit(hitRequest);
        }
Ejemplo n.º 3
0
 private RequestWeaponData _SimulateRequestWeaponData(int total_hits)
 {
     var weapon = new RequestWeaponData
     {
         BulletId = Random.Instance.NextInt(0, 32767),
         WeaponType = Random.Instance.NextEnum<WEAPON_TYPE>(),
         WeaponBet = Random.Instance.NextInt(1, 10000),
         WeaponOdds = 1,
         TotalHits = total_hits,
     };
     return weapon;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HitRequest"/> class. 
 /// </summary>
 public HitRequest(RequsetFishData[] fish_datas, RequestWeaponData weapon_data, bool is_first_trigger)
 {
     IsFirstTrigger = is_first_trigger;
     FishDatas = fish_datas;
     WeaponData = weapon_data;
 }
Ejemplo n.º 5
0
 public void Given玩家武器資料是(Table table)
 {
     _WeaponData = table.CreateInstance<RequestWeaponData>();
 }
Ejemplo n.º 6
0
        public void TestHitFormulaDeath2()
        {
            var random = Substitute.For<IRandom>();

            var formula = new HitTest(random);
            random.NextLong(Arg.Any<long>(), Arg.Any<long>()).Returns(0x0fffffff / 26); // 9d89d8

            var fishs = new List<RequsetFishData>
            {
                new RequsetFishData
                {
                    FishId = 1,
                    FishOdds = 25
                }
            };
            var weapon = new RequestWeaponData
            {
                TotalHits = 1,
                WeaponBet = 1,
                WeaponOdds = 1,
                BulletId = 1,
                WeaponType =WEAPON_TYPE.INVALID
            };

            var hitRequest = new HitRequest(fishs.ToArray(), weapon, true);

            var hitResponses = formula.TotalRequest(hitRequest); // a3d70a

            foreach(var response in hitResponses)
            {
                Assert.AreEqual(1, response.WepId);
                Assert.AreEqual(1, response.FishId);
                Assert.AreEqual(FISH_DETERMINATION.DEATH, response.DieResult);
            }
        }
Ejemplo n.º 7
0
        public void TestHitFormulaSurvival2()
        {
            var random = Substitute.For<IRandom>();

            var formula = new HitTest(random);
            random.NextLong(Arg.Any<long>(), Arg.Any<long>()).Returns(0x0fffffff / 25);

            var fishs = new List<RequsetFishData>
            {
                new RequsetFishData
                {
                    FishId = 1,
                    FishOdds = 25
                }
            };
            var weapon = new RequestWeaponData
            {
                TotalHits = 1,
                WeaponBet = 1,
                WeaponOdds = 1,
                BulletId = 1
            };

            var request = new HitRequest(fishs.ToArray(), weapon, true);

            var hitResponses = formula.TotalRequest(request);
            foreach(var response in hitResponses)
            {
                Assert.AreEqual(1, response.WepId);
                Assert.AreEqual(WEAPON_TYPE.INVALID, response.FeedbackWeapons[0]);
                Assert.AreEqual(1, response.FishId);
                Assert.AreEqual(FISH_DETERMINATION.SURVIVAL, response.DieResult);
            }
        }
Ejemplo n.º 8
0
 public SaveDeathFishHistory(DataVisitor data_visitor, RequsetFishData fish, RequestWeaponData weapon_data_data)
 {
     _Fish = fish;
     _WeaponData = weapon_data_data;
     _DataVisitor = data_visitor;
 }
Ejemplo n.º 9
0
        Value<int> IPlayer.Hit(int bullet_id, int[] fishids)
        {
            var hasBullet = _PopBullet(bullet_id);
            if(hasBullet == false)
            {
                return 0;
            }

            var logFishs = string.Empty;
            var count = 0;
            foreach(var fishid in fishids)
            {
                if(_PopFish(fishid) == false)
                {
                    continue;
                }

                if(_Requests.ContainsKey(fishid))
                {
                    continue;
                }

                count++;

                var fishs = new List<RequsetFishData>
                {
                    new RequsetFishData
                    {
                        FishId = fishid,
                        FishOdds = 1,
                        FishStatus = FISH_STATUS.NORMAL,
                        FishType = FISH_TYPE.TROPICAL_FISH
                    }
                };

                var weapon = new RequestWeaponData
                {
                    TotalHits = fishids.Length,
                    WeaponBet = _WeaponBet,
                    BulletId = bullet_id,
                    WeaponOdds = 1,
                    WeaponType = _WeaponType
                };

                var request = new HitRequest(fishs.ToArray(), weapon, true);
                _Requests.Add(fishid, request);
                _FishStage.Hit(request);

                logFishs += fishid + ",";
            }

            if(count == 0)
            {
                _PushBullet(bullet_id);
            }

            Singleton<Log>.Instance.WriteInfo(
                string.Format(
                    "all WEAPON_TYPE:{0} , targets:{1} , count:{2}",
                    bullet_id,
                    string.Join(",", (from id in fishids select id.ToString()).ToArray()),
                    fishids.Length));
            Singleton<Log>.Instance.WriteInfo(
                string.Format("requested WEAPON_TYPE:{0} , targets:{1} , count:{2}", bullet_id, logFishs, count));
            Singleton<Log>.Instance.WriteInfo(
                string.Format(
                    "request fishs:{0} count:{1} ",
                    string.Join(",", (from id in _Requests.Keys select id.ToString()).ToArray()),
                    _Requests.Count));
            return count;
        }
Ejemplo n.º 10
0
 private HitResponse _Die(RequsetFishData fish_data, RequestWeaponData weapon_data)
 {
     return new HitResponse
     {
         WepId = weapon_data.BulletId,
         FishId = fish_data.FishId,
         DieResult = FISH_DETERMINATION.DEATH,
         FeedbackWeapons = new[]
         {
             (WEAPON_TYPE)_WeaponChancesTable.Dice(Random.Instance.NextFloat(0, 1))
         },
         WeaponBet = weapon_data.WeaponBet,
         Multiple = _ScoreOddsTable.Dice(Random.Instance.NextInt(0, 1)) + 1
     };
 }
Ejemplo n.º 11
0
 private HitResponse _Miss(RequsetFishData fish_data, RequestWeaponData weapon_data)
 {
     return new HitResponse
     {
         WepId = weapon_data.BulletId,
         FishId = fish_data.FishId,
         DieResult = FISH_DETERMINATION.SURVIVAL,
         FeedbackWeapons = new[]
         {
             WEAPON_TYPE.INVALID
         },
         WeaponBet = 0,
         Multiple = _ScoreOddsTable.Dice(Random.Instance.NextInt(0, 1)) + 1
     };
 }