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); }
// 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; }
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; }
/// <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); }); }
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); } } }
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); }
/// <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)); }
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); }
//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 = }
// 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; }
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)); }
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; }
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); }
// ================================== 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; }
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); }
public override void RemoveFish(FishInfo fishInfo, GameObject fishObj = null) { //base.RemoveFish(fishInfo); if (fishObj != null) { Destroy(fishObj); } fishsDic.Remove(fishInfo.Id); }
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)); }
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); }
/// <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); //否则显示没钱的面板 } }
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); }
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); }
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; }
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); }
/// <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; }
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); } } }
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); }
/// <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); }
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); }