Beispiel #1
0
    public void CollectFish(GameObject fish)
    {
        // find matching matching FishInfo
        FishInfo info = null;
        int      i    = 0;
        int      n    = fishies.Count;

        for (i = 0; i < n; i++)
        {
            if (fishies[i].gameObject == fish)
            {
                info = fishies[i];
                break;
            }
        }
        if (info != null)
        {
            octree.Remove(info);
            // Move last fish to fill space instead of shifting all fish. This might cause
            // a fish to skip an ApplyZones in an interval.
            fishies[i] = fishies[n - 1];
            fishies.RemoveAt(n - 1);
        }
        Destroy(fish);
    }
Beispiel #2
0
    // GElement Override
    public override void Init(GScene a_Scene)
    {
        base.Init(a_Scene);

        // get Fish info
        string fishIndex = (Ref_GScene as StoryGameBossMgr).PCurNodeInfo.m_FishIndex;

        m_BossInfo = DbMgr.s_Instance.GetFishInfo(fishIndex);

        // set Avata off Boss
        (Ref_GScene as StoryGameBossMgr).SetBossAva(fishIndex);
        // set Atk time of Boss
        m_BossAtkTime = Vector2.one * m_BossAtkTimeDesign;
        // set Hp default of Boss
        m_TargetHp = m_BossInfo.m_FishHP.m_CurrentHP = m_BossInfo.m_FishHP.m_MaxHP;
        // update Hp bar
        Vector2 bossHP = new Vector2(m_BossInfo.m_FishHP.m_CurrentHP, m_BossInfo.m_FishHP.m_MaxHP);

        (Ref_GScene as StoryGameBossMgr).UpdateBossHP(bossHP);

        // set State default of Boss = Move
        UpdateBossState(Fish.FishState.Move);

        // set Movement range
        Vector2 camSize   = CameraController.s_Instance.GetWorldUnitSize();
        Vector2 topCamPos = CameraController.s_Instance.GetTopCamPos();

        m_MvmRangeYCoord = new Vector2(topCamPos.y - (m_MvmRangeYWorldUnit.x * camSize.y), topCamPos.y - (m_MvmRangeYWorldUnit.y * camSize.y));

        // set default Position of fish (in mvm range)
        Vector2 pos = transform.position;

        pos.y = Random.RandomRange(m_MvmRangeYCoord.x, m_MvmRangeYCoord.y);
        transform.position = pos;
    }
Beispiel #3
0
    private void GetRepulsionAndOrientation(FishInfo fish, out Vector3 repulsion, out Vector3 orientation)
    {
        Vector3 fishPos = fish.transform.localPosition;

        // sum of vectors from this fish to fish within the repulsion radius
        Vector3 repulsionSum = Vector3.zero;
        // sum of direction vectors of fish within the orientation radius
        Vector3 orientationSum = Vector3.zero;

        float repulsionSq   = radiusOfRepulsion * radiusOfRepulsion;
        float orientationSq = radiusOfOrientation * radiusOfOrientation;

        // Get all fish withing orientation zone. This assumes the radius of repulsion
        // is smaller than the radius of orientation.
        collideBounds.center = fishPos;
        scratchList.Clear();
        octree.GetColliding(ref collideBounds, scratchList);

        foreach (FishInfo otherFish in scratchList)
        {
            Vector3 fishDir = otherFish.transform.localPosition - fishPos;
            float   distSq  = fishDir.sqrMagnitude;
            if (distSq < repulsionSq)
            {
                repulsionSum += fishDir;
            }
            if (distSq < orientationSq)
            {
                orientationSum += otherFish.transform.localRotation * Vector3.forward;
            }
        }

        repulsion   = repulsionSum.normalized;
        orientation = orientationSum.normalized;
    }
Beispiel #4
0
        /// <summary>
        /// プレハブから作成したときにFishInfoや魚影を設定する
        /// </summary>
        /// <param name="fishInfo"></param>
        /// <param name="fishMoveData"></param>
        public void InitData(FishInfo fishInfo, Sprite sprite)
        {
            this.fishInfo = fishInfo;
            fishMove.fish = this;
            fishMoveData  = fishInfo.data;

            var hpbar = HPbar.GetComponent <RectTransform>().sizeDelta;

            hpbar.x = 10 * fishMoveData.status.hpMax;
            HPbar.GetComponent <RectTransform>().sizeDelta = hpbar;
            this.sprite.sprite = sprite;
            HPbar.maxValue     = fishMoveData.status.hpMax;
            if (this.sprite == null)
            {
                //画像が指定されていなければ子供のオブジェクトから画像を得る
                this.sprite = transform.GetComponentInChildren <SpriteRenderer>();
            }

            SetAppear();
            m_damageable = GetComponent <Damageable>();
            m_damageable.Initialize(fishMoveData.status.hpMax, fishMoveData.status.hpMax, fishMoveData.status.hpRegene);
            m_damageable.AddHPChanged((hp) =>
            {
                HPbar.value = hp;
            });
            m_damageable.AddDead(() =>
            {
                //釣られたときの処理
                //SetDisAppear();
                SwitchState(FishState.Caught);
            });
        }
Beispiel #5
0
    private void MakeFishies()
    {
        float halfWidth = schoolWidth / 2;

        foreach (FishType fishType in fishTypes)
        {
            fishType.Verify();
            for (int i = 0; i < fishType.count; i++)
            {
                if (fishType.prefab == null)
                {
                    Debug.LogWarning("One of the FishTypes in FishSchool has a null prefab. Oops! " + gameObject);
                    continue;
                }
                Vector3 startPosition = new Vector3(Random.Range(-halfWidth, halfWidth),
                                                    Random.Range(-halfWidth, halfWidth),
                                                    Random.Range(-halfWidth, halfWidth));

                GameObject fish = Instantiate(fishType.prefab, startPosition, Random.rotation) as GameObject;
                fish.transform.parent = fishContainer.transform;

                FishInfo info = new FishInfo(fish, fishType);
                fishies.Add(info);
//			Color newColor = new Color( Random.value, Random.value, Random.value, 1.0f ); // RANDOM COLOR ADDED
//			fishies[i].GetComponent<MeshRenderer>().material.color = newColor; // RANDOM COLOR APPLIED
                fishBounds.center = fish.transform.localPosition;
                octree.Add(info, fishBounds);
            }
        }
    }
Beispiel #6
0
    public void Move(float xMove, float yMove)
    {
        // 要设置鱼为静止状态
        FishInfo fishInfo = GetCurrentFish();

        m_Rigidbody2D.velocity = new Vector2(xMove * fishInfo.Speed, yMove * fishInfo.Speed);
        if (Mathf.Abs(xMove) < 0.001f && Mathf.Abs(yMove) < 0.001f)
        {
            if (m_IsRunning)
            {
                FishIdeo();
                m_IsRunning = false;
            }
            return;
        }
        if (!m_IsRunning)
        {
            m_IsRunning = true;
            FishRunning();
        }
        float angle = Vector3.Angle(Vector2.up, m_Rigidbody2D.velocity);

        if (xMove > 0)
        {
            angle = -angle;
        }
        transform.DORotate(new Vector3(0, 0, angle), 0.5f);
    }
Beispiel #7
0
        /// <summary>
        /// 创造鱼
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private ResultData OnCreateFish(JsonData data)
        {
            var             uid  = Convert.ToInt64(data["uid"]);
            List <FishInfo> fish = null;

            if (!mFishData.ContainsKey(uid))
            {
                fish = new List <FishInfo>();
                mFishData.Add(uid, fish);
            }
            else
            {
                fish = mFishData[uid];
            }
            var json = new JsonData();

            for (int i = 0; i < 10; i++)
            {
                var fishData = new FishInfo();
                fishData.id     = AppUtil.NewGuidId();
                fishData.type   = AppUtil.Random(0, 10);
                fishData.health = 100;      //鱼的血值,需要配置

                json[i]["id"]   = fishData.id;
                json[i]["type"] = fishData.type;
            }
            return(new ResultData(ResultCode.Success, json));
        }
Beispiel #8
0
    public FishInfo GetRandomFromRank(Fish.FishRank rank)
    {
        int      index = 0;
        FishInfo info  = null;

        switch (rank)
        {
        case Fish.FishRank.Common:
            index = UtilityClass.GetRandomFromRange(0, m_CommonList.Count - 1);
            info  = m_CommonList[index];
            break;

        case Fish.FishRank.Medium:
            index = UtilityClass.GetRandomFromRange(0, m_MediumList.Count - 1);
            info  = m_MediumList[index];
            break;

        case Fish.FishRank.High:
            index = UtilityClass.GetRandomFromRange(0, m_HighList.Count - 1);
            info  = m_HighList[index];
            break;

        case Fish.FishRank.Legend:
            index = UtilityClass.GetRandomFromRange(0, m_LegendList.Count - 1);
            info  = m_LegendList[index];
            break;
        }

        return(info);
    }
Beispiel #9
0
    //public Fish GenerateFish (int id, Transform parent)
    public Fish GenerateFish(string id, Transform parent)
    {
        //Fish fish = new Fish ();
        GameObject obj = Instantiate(FishPrefab, parent) as GameObject;
        //obj.transform.SetParent(transform);

        Fish fish = obj.GetComponent <Fish>();
        //FishInfo info = m_InfoFactory.CloneFishInfo (fishID: id);
        FishInfo info = DbMgr.s_Instance.GetFishInfo(id);

        fish.InitFish(info);
        fish.InitFishUI();

        if (info.m_FishID != "")
        {
            Sprite         newsprite = Resources.Load <Sprite>(AssetPathConstant.FOLDER_FISH_PATH + "/" + info.m_FishID);
            SpriteRenderer render    = obj.GetComponent <SpriteRenderer>();
            render.sprite = newsprite;

            Vector2 pixelSize = render.sprite.rect.size;
            Vector2 units     = pixelSize / render.sprite.pixelsPerUnit;

            fish.SetUIOffetY(units.y / 2 + Constant.FISH_UI_OFFSETY);
        }

        fish.ActivateUI(true);
        return(fish);
        //FishInfo info =
    }
Beispiel #10
0
    // GElement Override
    public override void Init(GScene a_Scene)
    {
        base.Init(a_Scene);

        // set SCALE for mvm zone
        Vector2 camSize   = CameraController.s_Instance.GetWorldUnitSize();
        Vector2 topCamPos = CameraController.s_Instance.GetTopCamPos();

        m_MvmZoneYLimit = new Vector2(topCamPos.y - (m_MovementZoneY.x * camSize.y), topCamPos.y - (m_MovementZoneY.y * camSize.y));

        // Load SPRITEs for Fish
        string fishIndex = (Ref_GScene as StoryGameMgr).PCurNodeInfo.m_FishIndex;

        m_FishInfo = DbMgr.s_Instance.GetFishInfo(fishIndex);

        // load Sprites for fish
        m_FishSpritesMgr.Init(GetComponent <SpriteRenderer>(), m_FishInfo);
        // default fish state = STAND
        m_FishInfo.m_CurFishState = Fish.FishState.Stand;
        // update Sprites for fish (following current state)
        m_FishSpritesMgr.UpdateSprites(m_FishInfo.m_CurFishState);

        // set default POSITION of fish
        Vector2 pos = transform.position;

        pos.y = Random.RandomRange(m_MvmZoneYLimit.x, m_MvmZoneYLimit.y);
        transform.position = pos;
    }
Beispiel #11
0
 private void UpdateOctree(FishInfo fish)
 {
     //Octree is a data structure to efficiently keep track of which fishies are near other fishies. This updates it regularly.
     octree.Remove(fish);
     fishBounds.center = fish.transform.localPosition;
     octree.Add(fish, fishBounds);
 }
        public async Task <IActionResult> Edit(int id, [Bind("FishId,FishName,LegalLength,LegalLimit,SeasonStart,SeasonEnd")] FishInfo fishInfo)
        {
            if (id != fishInfo.FishId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(fishInfo);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FishInfoExists(fishInfo.FishId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(fishInfo));
        }
Beispiel #13
0
        public override Type GetResourceType(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, HarvestResource resource)
        {
            Type type = FishInfo.GetSpecialItem(from, tool, loc, false);

            if (type == null)
                type = base.GetResourceType(from, tool, def, map, loc, resource);

            return type;
        }
Beispiel #14
0
    protected override void Refresh()
    {
        FishInfo info = FishLibrary.instance.GetRandomFish();

        _fishType  = info.type;
        _fishIcon  = info.icon;
        _fishPrice = info.GetRandomPrice();
        _fishCount = info.GetRandomCount();
        _flagRenderer.material.SetTexture("Texture2D_D003A093", info.flagTexture);
    }
Beispiel #15
0
 // ================================== PUBLIC FUNCS ==================================
 #region Public Funcs
 public void Init(FishInfo a_PlayerFishInfo)
 {
     m_PlayerFishInfo         = a_PlayerFishInfo;
     Ref_FishPlayerAva.sprite = Fish.GetFishCard(m_PlayerFishInfo.m_FishID);
     // init hit ball entity
     m_HitBallEntity.Init(Ref_HitBall.GetComponent <Image>());
     // update Hp bar
     m_TargetHp       = m_PlayerFishInfo.m_FishHP.m_CurrentHP = m_PlayerFishInfo.m_FishHP.m_MaxHP;
     Ref_FishHP.value = m_PlayerFishInfo.m_FishHP.m_CurrentHP / m_PlayerFishInfo.m_FishHP.m_MaxHP;
 }
Beispiel #16
0
    public FishHandler(FishInfo info, Transform trans)
    {
        m_Info = info;

        m_HPHandler       = new FishHPHandler(info.m_FishHP);
        m_ShapeHandler    = new FishShapeHandler(info.m_FishShape);
        m_DamHandler      = new FishDamHandler(info.m_FishDam);
        m_MovementHandler = new FishMovementHandler(trans);
        m_MoneyHandler    = new MoneyGenerationHandler(info.m_Money);
    }
Beispiel #17
0
    public override void RemoveFish(FishInfo fishInfo, GameObject fishObj = null)
    {
        //base.RemoveFish(fishInfo);
        if (fishObj != null)
        {
            Destroy(fishObj);
        }

        fishsDic.Remove(fishInfo.Id);
    }
Beispiel #18
0
    public override void RemoveFish(FishInfo fishInfo, GameObject fishObj = null)
    {
        //base.RemoveFish(fishInfo, fishObj);
        if (fishObj != null && PhotonNetwork.isMasterClient)
        {
            PhotonNetwork.Destroy(fishObj);
        }

        fishsDic.Remove(fishInfo.Id);
    }
        public async Task <IActionResult> Create([Bind("FishId,FishName,LegalLength,LegalLimit,SeasonStart,SeasonEnd")] FishInfo fishInfo)
        {
            if (ModelState.IsValid)
            {
                _context.Add(fishInfo);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(fishInfo));
        }
Beispiel #20
0
 public void UpdateFishInfo(string a_FishIndex)
 {
     // Load SPRITEs for Fish
     m_FishInfo = DbMgr.s_Instance.GetFishInfo(a_FishIndex);
     // load Sprites for fish
     m_FishSpritesMgr.Init(GetComponent <SpriteRenderer>(), m_FishInfo);
     // default fish state = STAND
     m_FishInfo.m_CurFishState = Fish.FishState.Stand;
     // update Sprites for fish (following current state)
     m_FishSpritesMgr.UpdateSprites(m_FishInfo.m_CurFishState);
 }
Beispiel #21
0
 /// <summary>
 /// 购买鱼
 /// </summary>
 /// <param name="_coin"></param>
 /// <param name="_info"></param>
 public void OnBuyFish(int _coin, FishInfo _info)
 {
     if (gameData.coinAmount > _coin) //如果可以购买
     {
         OnCoinChanged(-_coin);       //拥有的钱减去价格
         AddFish(_info);              //增加鱼
     }
     else
     {
         no_money.gameObject.SetActive(true); //否则显示没钱的面板
     }
 }
Beispiel #22
0
    public static string GetFishId(FishInfo a_fishInfo)
    {
        // fishes (Key in DB = FishKind_FishRank_FishID_FishSex_ShapeOfFish_FishColor)
        string spriteName = ((int)a_fishInfo.m_FishKind).ToString()
                            + ((int)a_fishInfo.m_FishRank).ToString()
                            + a_fishInfo.m_FishRankID
                            + ((int)a_fishInfo.m_FishSex).ToString()
                            + ((int)a_fishInfo.m_FishShape.m_Shape).ToString()
                            + ((int)a_fishInfo.m_FishShape.m_Color).ToString();

        return(spriteName);
    }
Beispiel #23
0
    public override void CreateFish(FishInfo fishInfo)
    {
        //base.CreateFish(fishInfo);
        GameObject fish = GameManager.Instance.CreateFishByNameOffline(fishInfo.IdFish);

        fish.transform.SetParent(this.fishContainer);
        Move2 move2 = fish.GetComponent <Move2>();

        move2.FishInf    = fishInfo;
        move2.start_game = true;
        fishsDic.Add(fishInfo.Id, fish);
    }
Beispiel #24
0
    protected override void SetInformation(IShipLocation location)
    {
        _fishCount.enabled = !isOver;

        FishInfo info = FishLibrary.instance.GetFishInfo(hold.fishType);

        _background.color      = info.holdBackgroundColor;
        _filled.color          = info.holdFrontColor;
        _filled.fillAmount     = hold.fishCount / (float)hold.capacity;
        _fullIndicator.enabled = (_filled.fillAmount == 1f);
        _fishCount.text        = hold.fishCount.ToString();
        _icon.sprite           = info.icon;
    }
Beispiel #25
0
    public static FishInfo ToFishInfo(string fish)
    {
        FishInfo temp = new FishInfo();

        string[] path = fish.Split(new string[] { "_" }, StringSplitOptions.None);
        temp.Id        = int.Parse(path[0]);
        temp.IdFish    = int.Parse(path[1]);
        temp.IdPath    = int.Parse(path[2]);
        temp.TimeStart = path[3];
        temp.Status    = int.Parse(path[4]);
        temp.NameFish  = path[5];
        return(temp);
    }
Beispiel #26
0
 /// <summary>
 /// 初始化UI
 /// </summary>
 private void SetUI()
 {
     //设置所拥有钱币数目
     coinLabel.text = gameData.coinAmount.ToString();
     //设置购买的fish
     for (int i = 0; i < gameData.fishInfos.Count; i++)
     {
         FishInfo info = gameData.fishInfos[i];
         AddFish(info);
     }
     audioManager.isMute = gameData.mute;
     muteToogle.isOn     = !audioManager.isMute;
 }
Beispiel #27
0
 public static void LoadDictSprites(FishInfo a_FishInfo, ref Dictionary <FishState, Sprite[]> a_dSprites)
 {
     for (int i = 0; i < a_FishInfo.m_lFishStates.Count; i++)
     {
         FishState fishState  = a_FishInfo.m_lFishStates[i];
         string    folderPath = GetFolderSpritesPath(a_FishInfo.m_FishID, fishState);
         Sprite[]  aSprites   = Resources.LoadAll <Sprite>(folderPath);
         if (aSprites.Length > 0)
         {
             a_dSprites.Add(fishState, aSprites);
         }
     }
 }
Beispiel #28
0
    private static int SortDecrementByFishID(FishInfo info1, FishInfo info2)
    {
        if (info1.m_FishRankID > info2.m_FishRankID)
        {
            return(-1);
        }

        if (info1.m_FishRankID == info2.m_FishRankID)
        {
            return(0);
        }

        return(1);
    }
Beispiel #29
0
    /// <summary>
    /// 增加鱼
    /// </summary>
    /// <param name="_info"></param>
    ///
    private void AddFish(FishInfo _info)
    {
        //在不同的位置随机的生成鱼
        int        genPosIndex = Random.Range(0, genPositions.Length);//随机生成鱼的位置
        GameObject fish        = Instantiate(fishPrefabs[_info.fishID]);

        fish.transform.SetParent(fishHolder, false);
        fish.transform.localPosition = genPositions[genPosIndex].localPosition;
        fish.transform.localRotation = genPositions[genPosIndex].localRotation;
        FishCtrl fishCtrl = fish.GetComponent <FishCtrl>();

        fishCtrl.SetFish(_info);
        fishCtrls.Add(fishCtrl);
    }
Beispiel #30
0
    private Vector3 GetLureVector(FishInfo fish)
    {
        //This sums up all the lures with a lureCode that matches this FishSchool, returning a vector with lure weights applied.
        Vector3 lure = Vector3.zero;
        Vector3 toLure;

        foreach (FishLure fishLure in fishLures)
        {
            if (fishLure.enabled && fishLure.IsFishInRange(fish.transform.position, out toLure))
            {
                lure += toLure.normalized * fishLure.GetWeight();
            }
        }
        return(lure);
    }