Inheritance: MonoBehaviour
        //SoundEffect soundEffect;
        public fishCatching()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            this.graphics.IsFullScreen = true;

            graphics.PreferredBackBufferWidth = 480;
            graphics.PreferredBackBufferHeight = 800;

            fishes[0] = new Fish(20, 20, false);
            fishes[1] = new Fish(200, 100, false);
            fishes[2] = new Fish(100, 480, false);
            fishes[3] = new Fish(50, 400, false);
            fishes[4] = new Fish(200, 40, false);
            fishes[5] = new Fish(200, 400, false);
            fishes[6] = new Fish(287, 180, false);
            fishes[7] = new Fish(160, 280, false);

            // Windows Phone 的默认帧速率为 30 fps。
            TargetElapsedTime = TimeSpan.FromTicks(33333);

            // 延长锁定时的电池寿命。
            InactiveSleepTime = TimeSpan.FromSeconds(1);
        }
Exemple #2
0
 void Handle_BulletHit(bool isMiss, Player p, Bullet b, Fish f)
 {
     if (!isMiss)
     {
         b.SelfDestroy();
     }
 }
Exemple #3
0
 //struct FishAndOddsMulti
 //{
 //    public FishAndOddsMulti(Fish f,int oddMulti)
 //    {
 //        F = f;
 //        OddMulti = oddMulti;
 //    }
 //    public Fish F;
 //    public int OddMulti;
 //}
 public static void ProcessHit(Bullet b , Fish f)
 {
     switch(f.HittableTypeS)
     {
         case "Normal":
             Process_NormalFish(b,f);
             break;
         case "AreaBomb":
             Process_AreaBomb(b,f);
             break;
         case "SameTypeBomb":
             Process_FishTypeBomb2(b,f);
             break;
         case "FreezeBomb":
             Process_FreezeBomb(b, f);
             break;
         case "SameTypeBombEx":
             Process_FishTypeBombEx(b, f);
             break;
         default:
             if (Evt_HitExtension != null)
                 Evt_HitExtension(b, f);
             break;
     }
 }
    /// <summary>
    /// 水場に魚を1匹生成する
    /// 生成した魚はリストに格納される
    /// </summary>
    /// <param name="fish">魚</param>
    /// <param name="waterPlace">水場</param>
    public void CreateFish(Fish fish, WaterPlace waterPlace)
    {
        //不正検知
        if(fish == null || waterPlace == null || fish.gameObject == null || waterPlace.gameObject == null)
        {
            Debug.LogError("CreateFishの引数に渡されたオブジェクトがNullでした");
            return;
        }

        if(fish.gameObject.tag != "Fish")
        {
            Debug.LogError("Fishにタグが不適切なオブジェクトが渡されました\nタグに\"Fish\"を設定してください\nオブジェクト名 : " + fish.name);
            return;
        }

        if(waterPlace.gameObject.tag != "WaterPlace")
        {
            Debug.LogError("WaterPlaceにタグが不適切なオブジェクトが渡されました\nタグに\"WaterPlace\"を設定してください\nオブジェクト名 : " + waterPlace.name);
            return;
        }

        //生成場所の計算
        Vector3 waterRange = waterPlace.gameObject.transform.lossyScale;
        waterRange.y = 0;
        waterRange.x = Random.Range(-waterRange.x, waterRange.x) / 5;
        waterRange.z = Random.Range(-waterRange.z, waterRange.z) / 5;
        //実体化
        Fish f = new Fish();
        f.fishPrefab = Instantiate(fish.gameObject,
                             Vector3.up + waterPlace.gameObject.transform.position + waterRange,
                             Quaternion.Euler(new Vector3(0, Random.Range(0, 360), 0))) as GameObject;
        //参照フィールドへの追加
        fishes.Add(f);
    }
Exemple #5
0
        public void crash(Fish fish, Form1 form, ArrayList fishList)
        {
            collision = aquaticAnimal.Bounds.IntersectsWith(fish.aquaticAnimal.Bounds);

             if (collision==true)
             {
                  if ((aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon adulto.png") || aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon hembra.png")) && (fish.aquaticAnimal.ImageLocation.Equals(@"Resources\Dorys.png") || fish.aquaticAnimal.ImageLocation.Equals(@"Resources\Nemo.png")))
                  {
                      fishList.Remove(fish);
                      fish.aquaticAnimal.Hide();
                  }
                  else if ((aquaticAnimal.ImageLocation.Equals(@"Resources\Dorys.png") || aquaticAnimal.ImageLocation.Equals(@"Resources\Nemo.png")) && (fish.aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon adulto.png") || fish.aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon hembra.png")))
                  {
                      fishList.Remove(aquaticAnimal);
                      aquaticAnimal.Hide();
                  }
                  else if ((aquaticAnimal.ImageLocation.Equals(@"Resources\Nemo.png") && fish.aquaticAnimal.ImageLocation.Equals(@"Resources\Nemo.png")))
                  {
                      fishList.Remove(fish);
                      aquaticAnimal.Hide();
                  }
                 else if ((aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon adulto.png") && fish.aquaticAnimal.ImageLocation.Equals(@"Resources\tiburon adulto.png")))
                  {
                      fishList.Remove(aquaticAnimal);
                      aquaticAnimal.Hide();
                  }

             }
        }
Exemple #6
0
 void Msg_FishGenerateWhenEnterWorld_Generated(Fish f)
 {
     Transform ts = Instantiate(Prefab_TsEffect) as Transform;
     ts.parent = f.transform;
     ts.localPosition = Vector3.zero;
     ts.localRotation = Quaternion.identity;
 }
Exemple #7
0
 public FishTO(Fish other)
 {
     this.name = other.name;
     this.id = other.id;
     if (other.weight != null)
         this.weight = other.weight.Value;
     if (other.length != null)
         this.length = other.length.Value;
     this.species = other.species;
     if (other.caughtDate != null)
         this.caughtDate = other.caughtDate.Value;
     if (other.tripId != null)
         this.tripId = other.tripId.Value;
     this.notes = other.notes;
     if (other.caughtTime != null)
         this.caughtTime = other.caughtTime.Value;
     if (other.girth != null)
         this.girth = other.girth.Value;
     this.spot = other.spot;
     this.presentation = other.presentation;
     if (other.depth != null)
         this.depth = other.depth.Value;
     if (other.clarity != null)
         this.clarity = other.clarity.Value;
     if (other.temperature != null)
         this.temperature = other.temperature.Value;
 }
 public Mission(Fish Agent, Objective Obj, Func<BitArray> Targets, bool OverrideDropMission = false, bool AttackAlongTheWay = true)
 {
     m_agent = Agent;
     m_obj = Obj;
     m_targets = Targets;
     m_attackAlongTheWay = AttackAlongTheWay;
     m_overrideDropMission = OverrideDropMission;
 }
Exemple #9
0
 void Handle_FishBulletHit(bool isMiss, Player p, Bullet b, Fish f)
 {
     if(isMiss)
     {
         if (b.IsLockingFish)
             b.IsLockingFish = false;
     }
 }
Exemple #10
0
 public virtual void eat(Fish other)
 {
     if (_size <= other.size)
     {
         fishDeathEvent(this, new InfoEventArgs<int>(_size));
         GameObject.Destroy(this.gameObject);
     }
 }
    void Handle_BeforeEatFish(Fish eatter, Fish beEattedFish)
    {
        if (eatter.AniSprite.IsPlaying(AnimationToPlayName)
            && !IsContPlay)
            return;

        eatter.AniSprite.Play(AnimationToPlayName);
    }
    public void keepFish(Fish caught)
    {
        caughtFish.Add(caught);
        TackleBoxUI.tackleBox.addFish();
        Debug.Log("You caught a: " + caughtFish[caughtFish.Count - 1].getName() + " Weight: " + caughtFish[caughtFish.Count - 1].getWeight());

           // return fishString;
    }
Exemple #13
0
    void Handle_FishKilled(Player killer, Bullet b, Fish f)
    {
        if (!mViewFishPrefabCache.ContainsKey(f.TypeIndex))
        {
            return;
        }

        StartCoroutine(_Coro_EffectProcessing(b.Score * f.Odds * b.FishOddsMulti, killer, f.TimeDieAnimation, false));
    }
Exemple #14
0
 void Handle_PlayerGainScoreFromFish(Player p, int score, Fish fishFirst,Bullet b)
 {
     if (GameMain.Singleton.BSSetting.OutBountyType_.Val == OutBountyType.OutCoinButtom
         || GameMain.Singleton.BSSetting.OutBountyType_.Val == OutBountyType.OutTicketButtom)
     {
         int oddNum = fishFirst.HittableTypeS == "Normal" ? fishFirst.Odds : (score / b.Score);
         CoinStacks[p.Idx].RequestViewOneStack(score, oddNum, b.Score);
     }
 }
Exemple #15
0
    public void AttachFish(Fish fish)
    {
        //ConfigurableJoint joint = fish.GetComponent<ConfigurableJoint>();
        //joint.connectedBody = this.rigidbody;

        fish.rigidbody.isKinematic = true;
        fishAttached = fish;
        fishOutOfWater = false;
    }
Exemple #16
0
    public void LockAt(Player p,Fish f)
    {
        //Debug.Log("LockAt " + f.name + "  p.idx = " + p.Idx);
        mLockedTarget[p.Idx] = f;

        p.GunInst.Rotatable = false;
        ModuleBullet.Fireable[p.Idx] = false;
        StartCoroutine(_Coro_Locking(p));
    }
 //IEnumerator Start()
 //{
 //    mFish = GetComponent<Fish>();
 //    if (mFish == null)
 //        yield break;
 //    mOriClipidx = mFish.AniSprite.clipId;
 //    tk2dSpriteAnimationClip aniClip = mFish.AniSprite.anim.clips[mFish.AniSprite.anim.GetClipIdByName(AniName)];
 //    float aniLength = aniClip.frames.Length / aniClip.fps;
 //    while (true)
 //    {
 //        yield return new WaitForSeconds(Interval);
 //        mFish.AniSprite.Play(AniName,0F);
 //        yield return new WaitForSeconds(aniLength);
 //        mFish.AniSprite.Play(mOriClipidx,0F);
 //    }
 //}
 void Awake()
 {
     mFish = GetComponent<Fish>();
     if (mFish == null)
         return;
     mOriClipidx = mFish.AniSprite.DefaultClipId;
     tk2dSpriteAnimationClip aniClip = mFish.AniSprite.Library.clips[mFish.AniSprite.Library.GetClipIdByName(AniName)];
     mSpecAniLength = aniClip.frames.Length / aniClip.fps;
 }
Exemple #18
0
 public void DetachFish()
 {
     if(fishAttached != null)
     {
         fishAttached.rigidbody.position = fishAttached.transform.position;
         fishAttached.rigidbody.velocity = Vector3.zero;
         fishAttached.rigidbody.isKinematic = true;
         fishAttached = null;
     }
 }
    void Awake()
    {
        FishEx_FishEatter fe = GetComponent<FishEx_FishEatter>();
        mFish = fe._Fish;
        mFish.AniSprite.AnimationCompleted += Handle_FishAniStop;
        if (fe != null)
            fe.EvtBeforeEatFish += Handle_BeforeEatFish;

        mOriginClip = mFish.AniSprite.DefaultClip;
    }
Exemple #20
0
 void Handle_Resumme( Fish f )
 {
     if(f.TypeIndex == MyFish.TypeIndex&& isChangGenerator)
     {
         //Debug.Log( "inresumme" );
         // float iSp = MySwimmer.Speed;
         MyFishGenerator.MaxFishAtWorld = mMaxFishAtWorldOrigin;//�ָ�ԭ���������Ŀ
         isChangGenerator = false;
     }
 }
Exemple #21
0
 void Handle_PlayerGainScoreFromFish(Player p, int score, Fish firstFish, Bullet b)
 {
     //���ʻ��������
     if (firstFish.HittableTypeS == "Normal" && p.GunInst.GetPowerType() != GunPowerType.Lizi)
     {
         if (Random.Range(0F, 1F) < LiziRatio)
         {
             LiziGettors[p.Idx].GetLiziKaFrom(firstFish.transform.position);
         }
     }
 }
Exemple #22
0
 /// <summary>
 /// ���������������ʺ���(���������������ʼ�������ڽ�����)
 /// </summary>
 /// <param name="killer"></param>
 /// <param name="b"></param>
 /// <param name="f"></param>
 /// <returns></returns>
 HitProcessor.OperatorOddFix Func_GetFishOddAdditive(Player killer, Bullet b, Fish f, Fish fCauser)
 {
     if (fCauser.HittableTypeS == "Normal" && b.FishOddsMulti == 2)
     {
         return new HitProcessor.OperatorOddFix(HitProcessor.Operator.LastModule, 2);
     }
     else
     {
         return null;
     }
 }
Exemple #23
0
    public float[] WidthBulletNormal; //�ӵ����(������N����)

    #endregion Fields

    #region Methods

    HitProcessor.OperatorOddFix Func_GetFishDieRatioAddtive(Player killer, Bullet b, Fish f,Fish fCauser)
    {
        BulletEx_Splitor bSplitor = b.GetComponent<BulletEx_Splitor>();
        if (bSplitor == null)
        {
            return null;
        }
        else
        {
            return new HitProcessor.OperatorOddFix(HitProcessor.Operator.LastModule, bSplitor.FactorSplit);
        }
    }
Exemple #24
0
        public string Go()
        {
            var dog = new Dog();
            var bird = new Bird();
            var fish = new Fish();

            var dogSays = dog.Speak();
            var birdSays = bird.Speak();
            var fishSays = fish.Speak();

            return dogSays + "\r\n" + birdSays + "\r\n" + fishSays + "\r\n";
        }
Exemple #25
0
    void Handle_Change( Fish f )
    {
        if(f.TypeIndex == MyFish.TypeIndex&&GameMain.State_ == GameMain.State.Normal&&!isChangGenerator)
        {
            MySwimmer = f.GetComponent<Swimmer>( );
            //Debug.Log( "inchang" );
            iSp = MySwimmer.Speed;

            StartCoroutine( "Waite" );

        }
    }
Exemple #26
0
    public void Fire(Player from, Fish tar,Quaternion dir)
    {
        GameMain gm = GameMain.Singleton;
        if (tar != null)
        {
            mTargetFish = tar;
            IsLockingFish = true;
            Vector3 targetDir = tar.transform.position - mTs.position;
            targetDir.z = 0F;
            targetDir.Normalize();
            targetDir = Quaternion.Euler(0F, 0F,Random.Range(-90F,90F)) * targetDir  +from.transform.up;//�ó��ӵ�ƫ��  Random.Range(0,2)==0?-90F:90F
            mTs.rotation =   Quaternion.FromToRotation(Vector3.up, targetDir);

        }
        else
        {
            IsLockingFish = false;
            mTs.rotation = dir;
        }
        mTs.parent = gm.TopLeftTs;

        Text_CoinNum.text = Score.ToString();
        Text_CoinNum.Commit();

        Owner = from;
        ++Owner.GunInst.NumBulletInWorld;

        BackStageSetting bss = gm.BSSetting;

        if (bss.IsBulletCrossWhenScreenNet.Val && gm.IsScreenNet())
            MoveArea = gm.WorldDimension;
        else
            MoveArea = from.AtScreenArea;

        if (mBulletGO == null)
        {
            mBulletGO = Pool_GameObj.GetObj(Prefab_GoAnisprBullet);
            tk2dSpriteAnimator aniSprBullet = mBulletGO.GetComponent<tk2dSpriteAnimator>();
            if (aniSprBullet != null)
            {
                //aniSprBullet.clipId = aniSprBullet.GetClipIdByName(Prefab_SpriteNameSet.Texts[from.Idx % Prefab_SpriteNameSet.Texts.Length]);
                //Debug.Log(Prefab_SpriteNameSet.Texts[from.Idx % Prefab_SpriteNameSet.Texts.Length]);
                aniSprBullet.Play(Prefab_SpriteNameSet.Texts[from.Idx % Prefab_SpriteNameSet.Texts.Length]);
                //aniSprBullet.PlayFrom("1",0.1F);
            }

            mBulletGO.SetActive(true);
            mBulletGO.transform.parent = mTs;
            mBulletGO.transform.localPosition = Vector3.zero;
            mBulletGO.transform.localRotation = Quaternion.identity;

        }
    }
    void Handle_FishInstance(Fish f)
    {
        if (mIsLocking)
            return;
        if (f == null || !f.Attackable)
            return;
        if (TargetFish == null || f.TypeIndex != TargetFish.TypeIndex)
            return;

        StopCoroutine("_Coro_AllPlayerLock");
        StartCoroutine("_Coro_AllPlayerLock",f);
    }
Exemple #28
0
 static void Main(string[] args)
 {
     Console.WriteLine("Введи путь до input-файла: ");
     string input = Console.ReadLine(); //Входной файл.
     Console.WriteLine("Введи путь до output-файла: ");
     string output = Console.ReadLine(); //Выходной файл.
     string[] lines = File.ReadAllLines(input); //Считывание строк.
     int numOfFish = 0; //Количество рыб.
     int numOfBird = 0; //Количество птиц.
     for (int i = 0; i < lines.Length; i++)
     { //Считаем кол-во животных.
         if (lines[i].Length == 1 && i % 2 == 0 && Char.IsDigit(lines[i], 0) == true && lines[i][0] == '1')
             numOfFish++;
         if (lines[i].Length == 1 && i % 2 == 0 && Char.IsDigit(lines[i], 0) == true && lines[i][0] == '2')
             numOfBird++;
     }
     Fish[] fish = new Fish[numOfFish];
     Bird[] bird = new Bird[numOfBird];
     int fishIndex = 0; //Индекс рыб.
     int birdIndex = 0; //Индекс птиц.
     for (int i = 0; i < lines.Length; i++)
     {
         if (lines[i].Length == 1 && i % 2 == 0 && lines[i][0] == '1')
         {
             //Obj[j, 0] = int.Parse(lines[i]); //Получаем тип животного.
             string[] split = lines[i + 1].Split(new Char[] { ' ', '\n' }); //Получаем имя и характеристики.
             string Name = split[0]; //Записываем имя
             int charact = int.Parse(split[1]); //и характеристику.
             fish[fishIndex] = new Fish(Name, charact);
             fishIndex++;
         }
         if (lines[i].Length == 1 && i % 2 == 0 && lines[i][0] == '2')
         {
             //Obj[j, 0] = int.Parse(lines[i]); //Получаем тип животного.
             string[] split = lines[i + 1].Split(new Char[] { ' ', '\n' }); //Получаем имя и характеристики.
             string Name = split[0]; //Записываем имя
             int charact = int.Parse(split[1]); //и характеристику.
             bird[birdIndex] = new Bird(Name, charact);
             birdIndex++;
         }
     }
     lines = null;
     string text = "\nПтицы:\n"; //Строка которая запишется в файл.
     for (int i = 0; i < numOfBird; i++)
         text += bird[i].print();
     text += "\nРыбы:\n";
     for (int i = 0; i < numOfFish; i++)
         text += fish[i].print();
     Console.WriteLine(text); //Выводим результат в консоль
     File.WriteAllText(output, text, System.Text.Encoding.UTF8); //и записываем его в файл.
     Console.ReadKey(); //Тормозим консольку.
 }
Exemple #29
0
    //����Ŀ����
    public void Lock(Fish tarFish)
    {
        if (tarFish == null)
            return;

        if (!IsLockable)
            return;

        //�ƶ����ȥĿ���㴦
        StopCoroutine("_Coro_UnLockProcess");
        StopCoroutine("_Coro_LockProcess");
        StartCoroutine("_Coro_LockProcess", tarFish);
    }
    private void OnEnable()
    {
        vehicle = GetComponent<Vehicle>();
        vehicle.enabled = false;

        fish = GetComponent<Fish>();
        fish.enabled = false;

        swimmingDirection = MathUtil.RandomSign;
        circleCenter = transform.position;

        if(UnityEngine.Random.value>0.5f)
            sens = -1f;
    }
Exemple #31
0
 public static void Main()
 {
     Cake cake = new Cake("sasa");
     Fish fish = new Fish("sas", 51);
 }
    static void Process_FishTypeBombEx(Bullet b, Fish sameTypeBombEx)
    {
        if (!sameTypeBombEx.Attackable)
        {
            return;
        }

        //Transform bulletTs = b.transform;
        Player bulletOwner      = b.Owner;
        bool   IsLockFishBullet = b.IsLockingFish;



        //找出屏幕上所有同类炸弹
        List <Fish> fishMayDie = new List <Fish>();

        fishMayDie.Add(sameTypeBombEx);
        //计算总的倍数
        sameTypeBombEx.OddBonus = GetFishOddBonus(bulletOwner, b, sameTypeBombEx, sameTypeBombEx);
        int oddTotalAll = sameTypeBombEx.OddBonus;                                                          //sameTypeBombEx.Odds;

        int oddTotalAllForDieratio = GetFishOddForDieRatio(bulletOwner, b, sameTypeBombEx, sameTypeBombEx); //sameTypeBombEx.Odds + GetFishOddForDieRatio(bulletOwner, b, sameTypeBombEx, sameTypeBombEx);//用于赔率计算

        Dictionary <int, object> mAllAffectFishDict = new Dictionary <int, object>();                       //由同类炸弹杀死鱼的字典,(加入后代表'已处理',每次处理前都查询 ,可防止重复杀同一种鱼现象出现)

        //List<FishAndOddsMulti> fishNeedOddMulti = new List<FishAndOddsMulti>();
        //遍历同类炸弹
        foreach (Fish sameTypeBomb in GameMain.Singleton.FishGenerator.SameTypeBombs.Values)
        {
            List <Dictionary <int, Fish> > fishDicts = new List <Dictionary <int, Fish> >();
            foreach (Fish affectFish in sameTypeBomb.Prefab_SameTypeBombAffect)
            {
                if (!mAllAffectFishDict.ContainsKey(affectFish.TypeIndex))
                {
                    fishDicts.Add(GameMain.Singleton.FishGenerator.FishTypeIndexMap[affectFish.TypeIndex]);
                    mAllAffectFishDict.Add(affectFish.TypeIndex, null);
                }
            }

            //FishEx_OddsMulti oddsMultiComponent = sameTypeBomb.GetComponent<FishEx_OddsMulti>();
            //int oddTotalSameTypeBombMulti = oddsMultiComponent == null ? 1 : oddsMultiComponent.OddsMulti;
            sameTypeBomb.OddBonus = GetFishOddBonus(bulletOwner, b, sameTypeBomb, sameTypeBombEx);
            int oddTotalSameTypeBomb = sameTypeBomb.OddBonus;                                                              //sameTypeBomb.Odds * oddTotalSameTypeBombMulti;
            int oddTotalSameTypeBombForCaclDieratio = GetFishOddForDieRatio(bulletOwner, b, sameTypeBomb, sameTypeBombEx); //sameTypeBomb.Odds * oddTotalSameTypeBombMulti + GetFishOddForDieRatio(bulletOwner, b, sameTypeBomb, sameTypeBombEx);//用于赔率计算

            fishMayDie.Add(sameTypeBomb);
            //遍历同类炸弹影响到的鱼
            foreach (Dictionary <int, Fish> fishDict in fishDicts)
            {
                if (fishDict != null)
                {
                    foreach (Fish f in fishDict.Values)
                    {
                        if (f.Attackable &&
                            f.HittableTypeS == "Normal")   //自己是HittableType.SameTypeBomb,不包含在内
                        {
                            f.OddBonus            = GetFishOddBonus(bulletOwner, b, f, sameTypeBomb);
                            oddTotalSameTypeBomb += f.OddBonus;                                                            // f.Odds* oddTotalSameTypeBombMulti;
                            oddTotalSameTypeBombForCaclDieratio += GetFishOddForDieRatio(bulletOwner, b, f, sameTypeBomb); // f.Odds * oddTotalSameTypeBombMulti + GetFishOddForDieRatio(bulletOwner, b, f, sameTypeBomb);//用于赔率计算

                            fishMayDie.Add(f);

                            //if (oddTotalSameTypeBombMulti > 1)
                            //{
                            //    fishNeedOddMulti.Add(new FishAndOddsMulti(f, oddTotalSameTypeBombMulti));
                            //}
                        }
                    }
                }
            }
            oddTotalAll            += oddTotalSameTypeBomb;
            oddTotalAllForDieratio += oddTotalSameTypeBombForCaclDieratio;
        }


        FishOddsData dataBomb = new FishOddsData(0, oddTotalAllForDieratio);

        List <FishOddsData> lstBombDie = GameOdds.OneBulletKillFish(b.Score, dataBomb, new List <FishOddsData>());

        if (Evt_Hit != null)
        {
            Evt_Hit(oddTotalAllForDieratio == 0 ? true : false, bulletOwner, b, sameTypeBombEx);
        }

        if (lstBombDie.Count == 0)//不爆炸
        {
            return;
        }

        ////确定鱼会死亡后将倍率改变加入到Fish上,让效果显示该鱼正确倍率
        //foreach (FishAndOddsMulti fo in fishNeedOddMulti)
        //{
        //    FishEx_OddsMulti fodm = fo.F.gameObject.AddComponent<FishEx_OddsMulti>();
        //    fodm.OddsMulti = fo.OddMulti;
        //}

        int scoreTotalGetted = oddTotalAll * b.Score;

        //飞币效果(其他鱼死亡)
        foreach (Fish fDie in fishMayDie)
        {
            fDie.Kill(bulletOwner, b, 0F);//0.5秒间隔
        }

        if (GameMain.EvtSameTypeBombExKiled != null)
        {
            GameMain.EvtSameTypeBombExKiled(bulletOwner, scoreTotalGetted);
        }

        //BackStageSetting bss = GameMain.Singleton.BSSetting;

        if (scoreTotalGetted != 0)
        {
            bulletOwner.GainScore(scoreTotalGetted);

            if (GameMain.Evt_PlayerGainScoreFromFish != null)
            {
                GameMain.Evt_PlayerGainScoreFromFish(bulletOwner, scoreTotalGetted, sameTypeBombEx, b);
            }

            //触发杀死锁定鱼事件
            if (IsLockFishBullet && GameMain.EvtKillLockingFish != null)
            {
                GameMain.EvtKillLockingFish(bulletOwner);
            }
        }

        if (Evt_HitResult != null)
        {
            Evt_HitResult(!sameTypeBombEx.Attackable, bulletOwner, b, sameTypeBombEx);
        }
    }
    static void Process_AreaBomb(Bullet b, Fish fishFirst)
    {
        if (!fishFirst.Attackable)
        {
            return;
        }

        Transform bulletTs         = b.transform;
        Player    bulletOwner      = b.Owner;
        bool      IsLockFishBullet = b.IsLockingFish;



        //生成碰撞范围
        RaycastHit[] results = Physics.SphereCastAll(bulletTs.position - Bullet.ColliderOffsetZ, fishFirst.AreaBombRadius, Vector3.forward);


        //计算是否爆炸
        List <Fish> fishAffect = new List <Fish>();
        int         oddTotal   = 0;              //用于奖励的倍率
        int         oddTotalForCaclDieratio = 0; //计算死亡几率的倍率

        Fish tmpFish = null;


        foreach (RaycastHit hitObj in results)
        {
            tmpFish = hitObj.transform.GetComponent <Fish>();
            if (tmpFish != null &&
                tmpFish.Attackable &&
                tmpFish.HittableTypeS == "Normal")
            {
                fishAffect.Add(tmpFish);

                oddTotalForCaclDieratio += GetFishOddForDieRatio(bulletOwner, b, tmpFish, fishFirst);//用于赔率计算;
                tmpFish.OddBonus         = GetFishOddBonus(bulletOwner, b, tmpFish, fishFirst);
                oddTotal += tmpFish.OddBonus;
            }

            if (oddTotal > fishFirst.AreaBombOddLimit)
            {
                break;
            }
        }



        FishOddsData        dataBomb   = new FishOddsData(0, oddTotalForCaclDieratio);
        List <FishOddsData> lstBombDie = GameOdds.OneBulletKillFish(b.Score, dataBomb, new List <FishOddsData>());

        if (Evt_Hit != null)
        {
            Evt_Hit(oddTotalForCaclDieratio == 0 ? true : false, bulletOwner, b, fishFirst);
        }

        if (lstBombDie.Count == 0)//不爆炸
        {
            return;
        }

        fishFirst.Kill(bulletOwner, b, 0);
        //炸弹爆炸,杀范围内鱼
        int scoreTotalGetted = oddTotal * b.Score;

        //触发事件
        if (GameMain.EvtFishBombKilled != null)
        {
            GameMain.EvtFishBombKilled(bulletOwner, scoreTotalGetted);
        }

        //飞币效果(其他鱼死亡)
        foreach (Fish fDie in fishAffect)
        {
            fDie.Kill(bulletOwner, b, 0F);//0.5秒间隔
        }

        //BackStageSetting bss = GameMain.Singleton.BSSetting;

        if (scoreTotalGetted != 0)
        {
            bulletOwner.GainScore(scoreTotalGetted);

            if (GameMain.Evt_PlayerGainScoreFromFish != null)
            {
                GameMain.Evt_PlayerGainScoreFromFish(bulletOwner, scoreTotalGetted, fishFirst, b);
            }

            //触发杀死锁定鱼事件
            if (IsLockFishBullet && GameMain.EvtKillLockingFish != null)
            {
                GameMain.EvtKillLockingFish(bulletOwner);
            }
        }

        if (Evt_HitResult != null)
        {
            Evt_HitResult(!fishFirst.Attackable, bulletOwner, b, fishFirst);
        }
    }
Exemple #34
0
    public Fish CreateFish(FishSize newFishSize, CaughtFish fishTemplate)
    {
        Fish fish = new Fish(newFishSize, fishTemplate);

        return(fish);
    }
Exemple #35
0
 /// <summary>
 /// Put complex types that are polymorphic, attempting to omit required
 /// 'birthday' field - the request should not be allowed from the client
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='complexBody'>
 /// Please attempt put a sawshark that looks like this, the client should not
 /// allow this data to be sent:
 /// {
 /// "fishtype": "sawshark",
 /// "species": "snaggle toothed",
 /// "length": 18.5,
 /// "age": 2,
 /// "birthday": "2013-06-01T01:00:00Z",
 /// "location": "alaska",
 /// "picture": base64(FF FF FF FF FE),
 /// "siblings": [
 /// {
 /// "fishtype": "shark",
 /// "species": "predator",
 /// "birthday": "2012-01-05T01:00:00Z",
 /// "length": 20,
 /// "age": 6
 /// },
 /// {
 /// "fishtype": "sawshark",
 /// "species": "dangerous",
 /// "picture": base64(FF FF FF FF FE),
 /// "length": 10,
 /// "age": 105
 /// }
 /// ]
 /// }
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task PutValidMissingRequiredAsync(this IPolymorphism operations, Fish complexBody, CancellationToken cancellationToken = default(CancellationToken))
 {
     await operations.PutValidMissingRequiredWithHttpMessagesAsync(complexBody, null, cancellationToken).ConfigureAwait(false);
 }
 void OnDeath(Fish fish)
 {
     cur_count--;  // 更新鱼的数量
 }
 /// <summary>
 /// Put complex types that are polymorphic
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='complexBody'>
 /// Please put a salmon that looks like this:
 /// {
 /// 'fishtype':'Salmon',
 /// 'location':'alaska',
 /// 'iswild':true,
 /// 'species':'king',
 /// 'length':1.0,
 /// 'siblings':[
 /// {
 /// 'fishtype':'Shark',
 /// 'age':6,
 /// 'birthday': '2012-01-05T01:00:00Z',
 /// 'length':20.0,
 /// 'species':'predator',
 /// },
 /// {
 /// 'fishtype':'Sawshark',
 /// 'age':105,
 /// 'birthday': '1900-01-05T01:00:00Z',
 /// 'length':10.0,
 /// 'picture': new Buffer([255, 255, 255, 255, 254]).toString('base64'),
 /// 'species':'dangerous',
 /// },
 /// {
 /// 'fishtype': 'goblin',
 /// 'age': 1,
 /// 'birthday': '2015-08-08T00:00:00Z',
 /// 'length': 30.0,
 /// 'species': 'scary',
 /// 'jawsize': 5
 /// }
 /// ]
 /// };
 /// </param>
 public static void PutValid(this IPolymorphismOperations operations, Fish complexBody)
 {
     operations.PutValidAsync(complexBody).GetAwaiter().GetResult();
 }
Exemple #38
0
 public void RemoveFish(Fish fish)
 {
     Organisms.Remove(fish);
 }
        /// <summary>
        /// Put complex types that are polymorphic and have recursive references
        /// </summary>
        /// <param name='complexBody'>
        /// Please put a salmon that looks like this:
        /// {
        /// "fishtype": "salmon",
        /// "species": "king",
        /// "length": 1,
        /// "age": 1,
        /// "location": "alaska",
        /// "iswild": true,
        /// "siblings": [
        /// {
        /// "fishtype": "shark",
        /// "species": "predator",
        /// "length": 20,
        /// "age": 6,
        /// "siblings": [
        /// {
        /// "fishtype": "salmon",
        /// "species": "coho",
        /// "length": 2,
        /// "age": 2,
        /// "location": "atlantic",
        /// "iswild": true,
        /// "siblings": [
        /// {
        /// "fishtype": "shark",
        /// "species": "predator",
        /// "length": 20,
        /// "age": 6
        /// },
        /// {
        /// "fishtype": "sawshark",
        /// "species": "dangerous",
        /// "length": 10,
        /// "age": 105
        /// }
        /// ]
        /// },
        /// {
        /// "fishtype": "sawshark",
        /// "species": "dangerous",
        /// "length": 10,
        /// "age": 105
        /// }
        /// ]
        /// },
        /// {
        /// "fishtype": "sawshark",
        /// "species": "dangerous",
        /// "length": 10,
        /// "age": 105
        /// }
        /// ]
        /// }
        /// </param>
        /// <param name='customHeaders'>
        /// Headers that will be added to request.
        /// </param>
        /// <param name='cancellationToken'>
        /// The cancellation token.
        /// </param>
        /// <exception cref="ErrorException">
        /// Thrown when the operation returned an invalid status code
        /// </exception>
        /// <exception cref="ValidationException">
        /// Thrown when a required parameter is null
        /// </exception>
        /// <exception cref="System.ArgumentNullException">
        /// Thrown when a required parameter is null
        /// </exception>
        /// <return>
        /// A response object containing the response body and response headers.
        /// </return>
        public async Task <AzureOperationResponse> PutValidWithHttpMessagesAsync(Fish complexBody, Dictionary <string, List <string> > customHeaders = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (complexBody == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "complexBody");
            }
            if (complexBody != null)
            {
                complexBody.Validate();
            }
            // Tracing
            bool   _shouldTrace  = ServiceClientTracing.IsEnabled;
            string _invocationId = null;

            if (_shouldTrace)
            {
                _invocationId = ServiceClientTracing.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("complexBody", complexBody);
                tracingParameters.Add("cancellationToken", cancellationToken);
                ServiceClientTracing.Enter(_invocationId, this, "PutValid", tracingParameters);
            }
            // Construct URL
            var           _baseUrl         = Client.BaseUri.AbsoluteUri;
            var           _url             = new System.Uri(new System.Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "complex/polymorphicrecursive/valid").ToString();
            List <string> _queryParameters = new List <string>();

            if (_queryParameters.Count > 0)
            {
                _url += (_url.Contains("?") ? "&" : "?") + string.Join("&", _queryParameters);
            }
            // Create HTTP transport objects
            var _httpRequest = new HttpRequestMessage();
            HttpResponseMessage _httpResponse = null;

            _httpRequest.Method     = new HttpMethod("PUT");
            _httpRequest.RequestUri = new System.Uri(_url);
            // Set Headers
            if (Client.GenerateClientRequestId != null && Client.GenerateClientRequestId.Value)
            {
                _httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString());
            }
            if (Client.AcceptLanguage != null)
            {
                if (_httpRequest.Headers.Contains("accept-language"))
                {
                    _httpRequest.Headers.Remove("accept-language");
                }
                _httpRequest.Headers.TryAddWithoutValidation("accept-language", Client.AcceptLanguage);
            }


            if (customHeaders != null)
            {
                foreach (var _header in customHeaders)
                {
                    if (_httpRequest.Headers.Contains(_header.Key))
                    {
                        _httpRequest.Headers.Remove(_header.Key);
                    }
                    _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value);
                }
            }

            // Serialize Request
            string _requestContent = null;

            if (complexBody != null)
            {
                _requestContent      = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(complexBody, Client.SerializationSettings);
                _httpRequest.Content = new StringContent(_requestContent, System.Text.Encoding.UTF8);
                _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
            }
            // Set Credentials
            if (Client.Credentials != null)
            {
                cancellationToken.ThrowIfCancellationRequested();
                await Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
            }
            // Send Request
            if (_shouldTrace)
            {
                ServiceClientTracing.SendRequest(_invocationId, _httpRequest);
            }
            cancellationToken.ThrowIfCancellationRequested();
            _httpResponse = await Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false);

            if (_shouldTrace)
            {
                ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse);
            }
            HttpStatusCode _statusCode = _httpResponse.StatusCode;

            cancellationToken.ThrowIfCancellationRequested();
            string _responseContent = null;

            if ((int)_statusCode != 200)
            {
                var ex = new ErrorException(string.Format("Operation returned an invalid status code '{0}'", _statusCode));
                try
                {
                    _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                    Error _errorBody = Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject <Error>(_responseContent, Client.DeserializationSettings);
                    if (_errorBody != null)
                    {
                        ex.Body = _errorBody;
                    }
                }
                catch (JsonException)
                {
                    // Ignore the exception
                }
                ex.Request  = new HttpRequestMessageWrapper(_httpRequest, _requestContent);
                ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent);
                if (_shouldTrace)
                {
                    ServiceClientTracing.Error(_invocationId, ex);
                }
                _httpRequest.Dispose();
                if (_httpResponse != null)
                {
                    _httpResponse.Dispose();
                }
                throw ex;
            }
            // Create Result
            var _result = new AzureOperationResponse();

            _result.Request  = _httpRequest;
            _result.Response = _httpResponse;
            if (_httpResponse.Headers.Contains("x-ms-request-id"))
            {
                _result.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
            }
            if (_shouldTrace)
            {
                ServiceClientTracing.Exit(_invocationId, _result);
            }
            return(_result);
        }
Exemple #40
0
 public void AddFish(Fish fish)
 {
     Organisms.Add(fish);
 }
Exemple #41
0
 private static bool IsFishHungry(Fish fish)
 {
     return(fish.HP < 5);
 }
Exemple #42
0
 int GetIndexOfFishCaughtInList(Fish fish)
 {
     return(fishCaught.IndexOf(fish));
 }
Exemple #43
0
 public bool getFishPhoto(Fish fish)
 {
     return(_fishPhotos[fish]);
 }
    static void Process_FreezeBomb(Bullet b, Fish fishFirst)
    {
        //Debug.Log("Process_FreezeBomb");
        if (!fishFirst.Attackable)
        {
            return;
        }
        //GameMain gm = GameMain.Singleton;
        //Transform bulletTs = b.transform;
        Player bulletOwner      = b.Owner;
        bool   IsLockFishBullet = b.IsLockingFish;


        //计算击中炸弹是否爆炸
        int          oddForDieRatio = GetFishOddForDieRatio(bulletOwner, b, fishFirst, fishFirst);
        FishOddsData freezeBomb     = new FishOddsData(0, oddForDieRatio);//fishFirst.Odds + GetFishOddForDieRatio(bulletOwner, b, fishFirst,fishFirst));//用于赔率计算

        List <FishOddsData> lstBombDie = GameOdds.OneBulletKillFish(b.Score, freezeBomb, new List <FishOddsData>());

        if (Evt_Hit != null)
        {
            Evt_Hit(oddForDieRatio == 0 ? true : false, bulletOwner, b, fishFirst);
        }

        if (lstBombDie.Count == 0)//不爆炸
        {
            return;
        }

        fishFirst.Kill(bulletOwner, b, 0F);//0.5秒间隔


        //BackStageSetting bss = gm.BSSetting;
        fishFirst.OddBonus = GetFishOddBonus(bulletOwner, b, fishFirst, fishFirst);
        int scoreTotalGetted = b.Score * fishFirst.OddBonus;



        if (scoreTotalGetted != 0)
        {
            bulletOwner.GainScore(scoreTotalGetted);
            if (GameMain.Evt_PlayerGainScoreFromFish != null)
            {
                GameMain.Evt_PlayerGainScoreFromFish(bulletOwner, scoreTotalGetted, fishFirst, b);
            }

            //触发杀死锁定鱼事件
            if (IsLockFishBullet && GameMain.EvtKillLockingFish != null)
            {
                GameMain.EvtKillLockingFish(bulletOwner);
            }
        }


        GameMain.IsMainProcessPause = true;

        if (GameMain.EvtFreezeBombActive != null)
        {
            GameMain.EvtFreezeBombActive();
        }

        GameObject go = new GameObject("Delay_FreezeBombRecover");

        go.AddComponent <FreezeBombRecover>();

        if (Evt_HitResult != null)
        {
            Evt_HitResult(!fishFirst.Attackable, bulletOwner, b, fishFirst);
        }
    }
 /// <summary>
 /// Put complex types that are polymorphic
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='complexBody'>
 /// Please put a salmon that looks like this:
 /// {
 /// 'fishtype':'Salmon',
 /// 'location':'alaska',
 /// 'iswild':true,
 /// 'species':'king',
 /// 'length':1.0,
 /// 'siblings':[
 /// {
 /// 'fishtype':'Shark',
 /// 'age':6,
 /// 'birthday': '2012-01-05T01:00:00Z',
 /// 'length':20.0,
 /// 'species':'predator',
 /// },
 /// {
 /// 'fishtype':'Sawshark',
 /// 'age':105,
 /// 'birthday': '1900-01-05T01:00:00Z',
 /// 'length':10.0,
 /// 'picture': new Buffer([255, 255, 255, 255, 254]).toString('base64'),
 /// 'species':'dangerous',
 /// },
 /// {
 /// 'fishtype': 'goblin',
 /// 'age': 1,
 /// 'birthday': '2015-08-08T00:00:00Z',
 /// 'length': 30.0,
 /// 'species': 'scary',
 /// 'jawsize': 5
 /// }
 /// ]
 /// };
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task PutValidAsync(this IPolymorphismOperations operations, Fish complexBody, CancellationToken cancellationToken = default(CancellationToken))
 {
     (await operations.PutValidWithHttpMessagesAsync(complexBody, null, cancellationToken).ConfigureAwait(false)).Dispose();
 }
Exemple #46
0
        public void 오징어가_제대로_생성되는지_확인()
        {
            Fish f = FishFactory.Create(FishType.Squid);

            Assert.AreEqual(f.FishName, "오징어");
        }
Exemple #47
0
 static void Main(string[] args)
 {
     var fish = new Fish();
 }
Exemple #48
0
        public void 돌고래가_제대로_생성되는지_확인()
        {
            Fish f = FishFactory.Create(FishType.Dolphin);

            Assert.AreEqual(f.FishName, "돌고래");
        }
Exemple #49
0
    public void Launch()
    {
        Fish fish = new Fish(20, 8);

        Seaweed[] sw = new Seaweed[6];
        for (int i = 0; i < 6; i++)
        {
            if (i % 2 == 0)
            {
                sw[i] = new SeaweedLong((13 * i + 5), 16);
            }
            else
            {
                sw[i] = new SeaweedShort((13 * i + 5), 21);
            }
        }

        Bubble bubbleFish = new Bubble(fish.X, fish.Y);

        Bubble[] bubbleBackground = new Bubble[5];
        for (int i = 0; i < 5; i++)
        {
            bubbleBackground[i] = new Bubble(20, 24);
        }

        Settings.RealSpeed    = 10;
        Settings.ConsoleSpeed = 100;

        while (true)
        {
            Settings.UpdateScreenAndTimer();

            //********* Background bubbles ************
            if (Settings.Timer % 5 == 0)
            {
                launchBubble[amountBubble] = true;
                if (amountBubble < 4)
                {
                    amountBubble++;
                }
                else
                {
                    amountBubble = 0;
                }
            }
            int r = new Random().Next(0, 70);
            for (int i = 0; i < 5; i++)
            {
                if (launchBubble[i])
                {
                    bubbleBackground[i].MoveUp(r, 24, ConsoleColor.Blue);
                }
            }

            //**************** Fish *******************
            fish.Draw(fish.X, fish.Y);
            fish.Move();
            if (fish.X <= borderLeft || fish.X >= borderRight - 13)
            {
                fish.SpeedX   = -fish.SpeedX;
                fish.TurnFish = fish.TurnFish ? fish.TurnFish = false : fish.TurnFish = true;
            }

            if (fish.Y <= borderTop + 4 || fish.Y >= borderBottom - 16)
            {
                fish.SpeedY = -fish.SpeedY;
            }

            if (!fish.TurnFish)
            {
                bubbleFish.MoveUp(fish.X, fish.Y + 3, ConsoleColor.Cyan);
            }
            else
            {
                bubbleFish.MoveUp(fish.X + 12, fish.Y + 3, ConsoleColor.Cyan);
            }

            if (Settings.Timer % 5 == 0)
            {
                fish.eyeClosed = fish.eyeClosed ? fish.eyeClosed = false : fish.eyeClosed = true;
            }

            //*************** Seaweeds *****************

            foreach (Seaweed seaweed in sw)
            {
                seaweed.Draw(seaweed.X, seaweed.Y);
            }

            Thread.Sleep(Settings.ConsoleSpeed);
        }
    }
Exemple #50
0
        public void 돌고래의_등급이_희귀로_생성되는지_확인()
        {
            Fish f = FishFactory.Create(FishType.Dolphin);

            Assert.AreEqual(f.FishGrade, "희귀");
        }
Exemple #51
0
 /// <summary>
 /// Put complex types that are polymorphic
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='complexBody'>
 /// Please put a salmon that looks like this:
 /// {
 /// 'fishtype':'Salmon',
 /// 'location':'alaska',
 /// 'iswild':true,
 /// 'species':'king',
 /// 'length':1.0,
 /// 'siblings':[
 /// {
 /// 'fishtype':'Shark',
 /// 'age':6,
 /// 'birthday': '2012-01-05T01:00:00Z',
 /// 'length':20.0,
 /// 'species':'predator',
 /// },
 /// {
 /// 'fishtype':'Sawshark',
 /// 'age':105,
 /// 'birthday': '1900-01-05T01:00:00Z',
 /// 'length':10.0,
 /// 'picture': new Buffer([255, 255, 255, 255,
 /// 254]).toString('base64'),
 /// 'species':'dangerous',
 /// },
 /// {
 /// 'fishtype': 'goblin',
 /// 'age': 1,
 /// 'birthday': '2015-08-08T00:00:00Z',
 /// 'length': 30.0,
 /// 'species': 'scary',
 /// 'jawsize': 5
 /// }
 /// ]
 /// };
 /// </param>
 public static void PutValid(this IPolymorphism operations, Fish complexBody)
 {
     Task.Factory.StartNew(s => ((IPolymorphism)s).PutValidAsync(complexBody), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
 }
    IEnumerator _Coro_Generate()
    {
        int num          = Random.Range(NumMin, NumMax + 1);
        int generatedNum = 0;

        yield return(0);//为取得transform.localPosition

        //生成leaderFish
        GameObject goLeader   = new GameObject("领队_" + Prefab_Fish.name);
        Swimmer    fishLeader = goLeader.AddComponent <Swimmer>();

        goLeader.AddComponent <DestroyWhenSwimmerOut>();

        if (GameMain.EvtLeaderInstance != null)
        {
            GameMain.EvtLeaderInstance(fishLeader);
        }


        //fishLeader.Attackable = false;
        Prefab_Fish.swimmer.CopyDataTo(fishLeader);
        fishLeader.SetLiveDimension(Defines.ClearFishRadius);//swim to fix
        fishLeader.RotateSpd = Fish_RotateSpd;
        fishLeader.Speed     = Fish_Speed;

        FishAI_FreeSwimSingle fishAILeader = goLeader.AddComponent <FishAI_FreeSwimSingle>();

        Prefab_Fish.GetComponent <FishAI_FreeSwimSingle>().CopyDataTo(fishAILeader);
        fishAILeader.enabled                = false;
        fishAILeader.RotateAngleRndRange    = Fish_RotateAngleRndRange;
        fishAILeader.RotateInterval         = Fish_RotateInterval;
        fishAILeader.RotateIntervalRndRange = Fish_RotateIntervalRndRange;

        fishLeader.transform.parent = GameMain.Singleton.FishGenerator.transform;
        Vector3 localPos = transform.localPosition;

        localPos.z = Defines.GMDepth_Fish + GameMain.Singleton.FishGenerator.ApplyFishDepth();
        fishLeader.transform.localPosition = localPos;
        fishLeader.transform.localRotation = transform.localRotation;
        fishLeader.Go();

        Fish  preFish          = null;
        float distanceToLeader = 0F;

        while (generatedNum < num)
        {
            yield return(new WaitForSeconds((Distance + fishLeader.BoundCircleRadius * 2F) / fishLeader.Speed));

            if (fishLeader == null)
            {
                break;
            }
            Fish    f = Instantiate(Prefab_Fish) as Fish;
            Swimmer s = f.swimmer;
            f.name = Prefab_Fish.name;

            s.RotateSpd = Fish_RotateSpd;
            s.Speed     = Fish_Speed;
            //动画设置
            if (preFish != null)
            {
                //f.AniSprite.clipTime = preFish.AniSprite.clipTime;
                //f.AniSprite.Play(preFish.AniSprite.ClipTimeSeconds);
                f.AniSprite.PlayFrom(f.AniSprite.DefaultClip, preFish.AniSprite.ClipTimeSeconds);
            }

            //删除所有其他ai
            f.ClearAI();
            FishAI_Follow aiFollow = f.gameObject.AddComponent <FishAI_Follow>();
            aiFollow.SetTarget(fishLeader);
            distanceToLeader         += (Distance + fishLeader.BoundCircleRadius * 2F);
            aiFollow.DistanceToLeader = distanceToLeader;

            //方位设置
            f.transform.parent        = GameMain.Singleton.FishGenerator.transform;
            localPos                  = transform.localPosition;
            localPos.z                = Defines.GMDepth_Fish + GameMain.Singleton.FishGenerator.ApplyFishDepth();
            f.transform.localPosition = localPos;
            f.transform.localRotation = transform.localRotation;
            s.Go();

            ++generatedNum;

            preFish = f;
        }

        yield return(0);

        if (fishAILeader != null)
        {
            fishAILeader.enabled = true;
        }
        Destroy(gameObject);
    }
    static void Process_FishTypeBomb2(Bullet b, Fish fishFirst)
    {
        if (!fishFirst.Attackable)
        {
            return;
        }

        //Transform bulletTs = b.transform;
        Player bulletOwner      = b.Owner;
        bool   IsLockFishBullet = b.IsLockingFish;


        int numTypeToBomb = fishFirst.Prefab_SameTypeBombAffect.Length;

        Dictionary <int, Fish>[] fishDicts = new Dictionary <int, Fish> [numTypeToBomb];
        for (int i = 0; i != numTypeToBomb; ++i)
        {
            fishDicts[i] = GameMain.Singleton.FishGenerator.FishTypeIndexMap[fishFirst.Prefab_SameTypeBombAffect[i].TypeIndex];
        }


        //计算是否爆炸
        List <Fish> fishAffect = new List <Fish>();

        fishAffect.Add(fishFirst);


        Fish tmpFish = null;

        //FishEx_OddsMulti sameTypeBombOddsMultiComponent = fishFirst.GetComponent<FishEx_OddsMulti>();
        //int oddMulti = sameTypeBombOddsMultiComponent == null ? 1 : sameTypeBombOddsMultiComponent.OddsMulti;
        //List<Fish> fishNeedOddMulti = new List<Fish>();

        fishFirst.OddBonus = GetFishOddBonus(bulletOwner, b, fishFirst, fishFirst);
        int oddTotal = fishFirst.OddBonus;                                                         //fishFirst.Odds * oddMulti;//用于奖励计算的倍率

        int oddTotalForCaclDieratio = GetFishOddForDieRatio(bulletOwner, b, fishFirst, fishFirst); //fishFirst.Odds * oddMulti + GetFishOddForDieRatio(bulletOwner, b, fishFirst);//用于赔率计算

        foreach (Dictionary <int, Fish> fishDict in fishDicts)
        {
            if (fishDict != null)
            {
                foreach (KeyValuePair <int, Fish> fKV in fishDict)
                {
                    tmpFish = fKV.Value;
                    if (tmpFish.Attackable &&
                        tmpFish.HittableTypeS == "Normal")   //自己是HittableType.SameTypeBomb,不包含在内
                    {
                        fishAffect.Add(tmpFish);

                        tmpFish.OddBonus         = GetFishOddBonus(bulletOwner, b, tmpFish, fishFirst);
                        oddTotal                += tmpFish.OddBonus;                                          //tmpFish.Odds * oddMulti;//可以统一相乘,不过在这里牺牲一些效率,让代码更直观
                        oddTotalForCaclDieratio += GetFishOddForDieRatio(bulletOwner, b, tmpFish, fishFirst); //tmpFish.Odds * oddMulti + GetFishOddForDieRatio(bulletOwner, b, tmpFish);//用于赔率计算

                        //if (oddMulti > 1)
                        //{
                        //    fishNeedOddMulti.Add(tmpFish);
                        //}
                    }
                }
            }
        }


        FishOddsData dataBomb = new FishOddsData(0, oddTotalForCaclDieratio);
        //Debug.Log("oddTotalForCaclDieratio = " + oddTotalForCaclDieratio);
        List <FishOddsData> lstBombDie = GameOdds.OneBulletKillFish(b.Score, dataBomb, new List <FishOddsData>());

        if (Evt_Hit != null)
        {
            Evt_Hit(oddTotalForCaclDieratio == 0? true:false, bulletOwner, b, fishFirst);
        }

        if (lstBombDie.Count == 0)
        {
            return;
        }

        //将鱼倍率相乘加入到鱼中,让效果处理正确显示
        //foreach (Fish f in fishNeedOddMulti)
        //{
        //    FishEx_OddsMulti odm = f.gameObject.AddComponent<FishEx_OddsMulti>();//在死的鱼上加入组件,确定死亡倍数,(主要用于显示)
        //    odm.OddsMulti = oddMulti;
        //}

        //炸弹爆炸
        //计算获得分数
        int scoreTotalGetted = oddTotal * b.Score;

        //飞币效果(其他鱼死亡)
        foreach (Fish fDie in fishAffect)
        {
            fDie.Kill(bulletOwner, b, 0F);//0.5秒间隔
        }
        //触发事件
        if (GameMain.EvtSameTypeBombKiled != null)
        {
            GameMain.EvtSameTypeBombKiled(bulletOwner, scoreTotalGetted);
        }

        //BackStageSetting bss = GameMain.Singleton.BSSetting;

        if (scoreTotalGetted != 0)
        {
            bulletOwner.GainScore(scoreTotalGetted);

            if (GameMain.Evt_PlayerGainScoreFromFish != null)
            {
                GameMain.Evt_PlayerGainScoreFromFish(bulletOwner, scoreTotalGetted, fishFirst, b);
            }

            //触发杀死锁定鱼事件
            if (IsLockFishBullet && GameMain.EvtKillLockingFish != null)
            {
                GameMain.EvtKillLockingFish(bulletOwner);
            }
        }

        if (Evt_HitResult != null)
        {
            Evt_HitResult(!fishFirst.Attackable, bulletOwner, b, fishFirst);
        }
    }
Exemple #54
0
        private new void LoopFunc(StateMachineClient smc, Interaction <Sim, Terrain> .LoopData ld)
        {
            try
            {
                WaterTypes waterType = FishingSpot.GetWaterType(Hit.mType);
                EventTracker.SendEvent(new FishingLoopEvent(EventTypeId.kWentFishing, Actor, waterType, ld.mLifeTime));
                Actor.TryGroupTalk();
                //Actor.TrySinging();
                Fishing skill = Actor.SkillManager.GetSkill <Fishing>(SkillNames.Fishing);
                if (mShowTns && (ld.mLifeTime > kTimeToShowFishingTns))
                {
                    string str;
                    if (BaitInUse != null)
                    {
                        str = Common.LocalizeEAString("Gameplay/Objects/Fishing:NoFishWithBait");
                    }
                    else
                    {
                        str = Common.LocalizeEAString("Gameplay/Objects/Fishing:NoFishNoBait");
                    }
                    Actor.ShowTNSIfSelectable(str, StyledNotification.NotificationStyle.kGameMessagePositive, ObjectGuid.InvalidObjectGuid);
                    if ((mLoopLengthForNextFish - ld.mLifeTime) < kTimeToCatchPostTns)
                    {
                        mLoopLengthForNextFish = ld.mLifeTime + kTimeToCatchPostTns;
                    }
                    mShowTns = false;
                }

                if (ld.mLifeTime > mLoopLengthForNextFish)
                {
                    mLoopLengthForNextFish += mFishingData.GetNextFishTimeLength(mIsAngler, skill.IsFisherman());
                    FishType none     = FishType.None;
                    string   baitUsed = null;
                    if (BaitInUse != null)
                    {
                        baitUsed = BaitInUse.Key;
                    }

                    if (!mShowTns)
                    {
                        none = mFishingData.GetFishCaught(Actor, baitUsed);
                    }

                    if ((mSittingInBoatPosture != null) && (none == FishType.Box))
                    {
                        none = FishType.None;
                    }

                    FishType type3 = none;
                    if (type3 == FishType.None)
                    {
                        bool flag = false;
                        if (Actor.TraitManager.HasElement(TraitNames.Clumsy))
                        {
                            flag = RandomUtil.RandomChance01(kChanceOfPlayingLostFishAnimIfClumsy);
                        }
                        else
                        {
                            flag = RandomUtil.RandomChance01(kChanceOfPlayingLostFishAnim);
                        }
                        if (!flag)
                        {
                            return;
                        }
                        AnimateSim("CatchNothing");
                    }
                    else if (type3 == FishType.Box)
                    {
                        int        num = 0x0;
                        WorldType  currentWorldType = GameUtils.GetCurrentWorldType();
                        WorldName  currentWorld     = GameUtils.GetCurrentWorld();
                        List <int> list             = new List <int>();
                        for (int i = 0x0; i < sBoxData.Count; i++)
                        {
                            BoxData data = sBoxData[i];
                            if (((data.AllowedWorldType == WorldType.Undefined) || (data.AllowedWorldType == currentWorldType)) && (((data.AllowedWorlds == null) || (data.AllowedWorlds.Count == 0x0)) || (data.AllowedWorlds.Contains(currentWorld) || data.AllowedWorlds.Contains(WorldName.Undefined))))
                            {
                                num += sBoxChances[i];
                                list.Add(i);
                            }
                        }
                        int chance = RandomUtil.GetInt(num - 0x1);
                        int num4   = 0x0;
                        foreach (int num5 in list)
                        {
                            num4 = num5;
                            if (chance < sBoxChances[num5])
                            {
                                break;
                            }
                            chance -= sBoxChances[num5];
                        }
                        IGameObject obj2 = GlobalFunctions.CreateObject(sBoxData[num4].ItemName, Vector3.OutOfWorld, 0x1, Vector3.UnitZ);
                        if (obj2 == null)
                        {
                            return;
                        }
                        bool happy = sBoxData[num4].Happy;
                        if (Actor.TraitManager.HasElement(TraitNames.Insane))
                        {
                            happy = !happy;
                        }
                        SetSplashAndDripEffects(EffectSize.Small);
                        if (happy)
                        {
                            AnimateSim("CatchBoxHappy");
                            Actor.Inventory.TryToAdd(obj2, false);
                        }
                        else
                        {
                            AnimateSim("CatchBoxSad");
                            Actor.Inventory.TryToAdd(obj2, false);
                        }
                        Actor.ShowTNSIfSelectable(Common.LocalizeEAString(Actor.IsFemale, "Gameplay/Objects/Fishing:CaughtBox", new object[] { Actor, obj2 }), StyledNotification.NotificationStyle.kGameMessagePositive, obj2.ObjectId, Actor.ObjectId);
                    }
                    else
                    {
                        int    num6;
                        string str3;
                        Fish   actor = Fish.CreateFish(none, Actor, skill, BaitInUse, out num6, out str3);
                        actor.UpdateVisualState(CatHuntingComponent.CatHuntingModelState.InInventory);
                        mNumberFishCaught++;
                        SetActor("fish", actor);
                        SetSplashAndDripEffects(actor.EffectSize);
                        PlayFishCatchAnimation(num6);
                        if (str3 != null)
                        {
                            Actor.ShowTNSIfSelectable(str3, StyledNotification.NotificationStyle.kGameMessagePositive, actor.ObjectId, Actor.ObjectId);
                        }

                        EventTracker.SendEvent(new CaughtFishEvent(EventTypeId.kCaughtFish, Actor, actor, baitUsed));
                        Actor.Inventory.TryToAdd(actor, false);
                        if ((BaitInUse != null) && RandomUtil.RandomChance(kPercentChanceBaitLost))
                        {
                            Actor.Inventory.SetNotInUse(BaitInUse);
                            Actor.Inventory.RemoveByForce(BaitInUse);
                            IFishBait baitInUse = BaitInUse;
                            BaitInUse = FindProperBait(new Fishing.BaitInfo(baitInUse));
                            if (BaitInUse == null)
                            {
                                ThoughtBalloonManager.BalloonData bd = new ThoughtBalloonManager.BalloonData(baitInUse.GetThoughtBalloonThumbnailKey());
                                bd.mCoolDown = ThoughtBalloonCooldown.Medium;
                                bd.LowAxis   = ThoughtBalloonAxis.kDislike;
                                Actor.ThoughtBalloonManager.ShowBalloon(bd);
                                Actor.InteractionQueue.FireQueueChanged();
                                string message = Common.LocalizeEAString(Actor.IsFemale, "Gameplay/Objects/Fishing:NoMoreBait", new object[] { Actor, baitInUse.GetLocalizedName() });
                                Actor.ShowTNSIfSelectable(message, StyledNotification.NotificationStyle.kGameMessagePositive, ObjectGuid.InvalidObjectGuid, Actor.ObjectId);
                            }
                            baitInUse.Destroy();
                        }
                    }

                    if (!ActiveStage.IsComplete((InteractionInstance)this))
                    {
                        mCurrentStateMachine.SetParameter("skillLevel", skill.GetSkillLevelParameterForJazzGraph());
                        AnimateSim("Fish");
                    }
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.DebugException(Actor, Target, e);
            }
        }
    static void Process_NormalFish(Bullet b, Fish fishFirst)
    {
        if (!fishFirst.Attackable)
        {
            return;
        }

        Transform bulletTs         = b.transform;
        Player    bulletOwner      = b.Owner;
        bool      IsLockFishBullet = b.IsLockingFish;//是否锁鱼的子弹


        //生成碰撞范围
        RaycastHit[] results = Physics.SphereCastAll(bulletTs.position - Bullet.ColliderOffsetZ, b.RadiusStandardBoom * 0.6F /** useWebScaleRatio.ScaleCollider //将要修正,不同子弹不同大小 */, Vector3.forward);


        List <Fish> fishAll     = new List <Fish>();
        List <Fish> fishOthers  = new List <Fish>();
        List <Fish> fishDieList = new List <Fish>();

        fishAll.Add(fishFirst);
        Fish fishTmp = null;

        for (int i = 0; i != results.Length; ++i)
        {
            fishTmp = results[i].transform.GetComponent <Fish>();

            if (fishTmp != null &&
                fishFirst != fishTmp &&
                fishTmp.Attackable &&
                fishTmp.HittableTypeS == "Normal" &&
                !fishTmp.HitByBulletOnly)
            {
                fishOthers.Add(fishTmp);
                fishAll.Add(fishTmp);
            }
        }

        List <FishOddsData> dataFishOtherList = new List <FishOddsData>();

        foreach (Fish f in fishOthers)
        {
            dataFishOtherList.Add(new FishOddsData(f.ID, GetFishOddForDieRatio(bulletOwner, b, f, fishFirst)));                   //用于赔率计算
        }
        FishOddsData dataFishFirst = new FishOddsData(fishFirst.ID, GetFishOddForDieRatio(bulletOwner, b, fishFirst, fishFirst)); //用于赔率计算


        List <FishOddsData> dataFishDieLst = GameOdds.OneBulletKillFish(b.Score, dataFishFirst, dataFishOtherList);

        foreach (FishOddsData fishDie in dataFishDieLst)
        {
            foreach (Fish f in fishAll)
            {
                if (fishDie.ID == f.ID)
                {
                    fishDieList.Add(f);
                    break;
                }
            }
        }

        int numKilled        = 0;
        int scoreTotalGetted = 0;

        foreach (Fish fDie in fishDieList)
        {
            fDie.OddBonus     = GetFishOddBonus(bulletOwner, b, fDie, fishFirst);//显示赔率
            scoreTotalGetted += fDie.OddBonus * b.Score;

            fDie.Kill(bulletOwner, b, 0.5F * numKilled);//0.5秒间隔
            ++numKilled;
        }

        if (Evt_Hit != null)
        {
            Evt_Hit(dataFishFirst.Odds == 0?true:false, bulletOwner, b, fishFirst);
        }

        //BackStageSetting bss = GameMain.Singleton.BSSetting;

        if (scoreTotalGetted != 0)
        {
            bulletOwner.GainScore(scoreTotalGetted);

            if (GameMain.Evt_PlayerGainScoreFromFish != null)
            {
                GameMain.Evt_PlayerGainScoreFromFish(bulletOwner, scoreTotalGetted, fishFirst, b);
            }

            //触发杀死锁定鱼事件
            if (IsLockFishBullet && GameMain.EvtKillLockingFish != null)
            {
                GameMain.EvtKillLockingFish(bulletOwner);
            }
        }

        if (Evt_HitResult != null)
        {
            Evt_HitResult(!fishFirst.Attackable, bulletOwner, b, fishFirst);
        }
    }
Exemple #56
0
 public void removePhoto(Fish fish)
 {
     _fishPhotos[fish] = false;
 }
Exemple #57
0
 // Use this for initialization
 void Start()
 {
     fish     = GameObject.FindGameObjectWithTag("Fish").GetComponent <Fish>();
     ammoText = GameObject.FindGameObjectWithTag("AmmoText").GetComponent <Text>();
 }
Exemple #58
0
 public FishDetailViewController(UIViewController owner, Fish fish)
 {
     _ownerWeak = new WeakReference <UIViewController>(owner);
     _fish      = fish;
 }
        public async Task <IActionResult> PutFish(int id, Fish fish)
        {
            if (id != fish.fishID)
            {
                return(BadRequest());
            }

            var           sha1  = new SHA1CryptoServiceProvider();
            ASCIIEncoding ascii = new ASCIIEncoding();

            var del = fish.del;

            if (del == null)
            {
                del = "";
            }

            var data     = Encoding.ASCII.GetBytes(del);
            var sha1data = sha1.ComputeHash(data);

            var hashed = ascii.GetString(sha1data);

            var original = await _context.Fish.FindAsync(id);

            if (original == null)
            {
                return(NotFound());
            }

            var password = original.del;

            if (password == null)
            {
                var emptyStr  = Encoding.ASCII.GetBytes("");
                var emptyHash = sha1.ComputeHash(emptyStr);
                password = ascii.GetString(emptyHash);
            }

            if (password == hashed)
            {
                _context.Fish.Remove(original);
                await _context.SaveChangesAsync();

                return(NoContent());
            }
            else
            {
                return(BadRequest());
            }
            // ignore rest of method
            _context.Entry(fish).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FishExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #60
0
 public void ReassignFish(Fish fish)
 {
     StartCoroutine(ReassignFishCoro(fish));
 }