1
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Characters.Monster;
|
||||
using Assets.MyGame.Scripts.Net;
|
||||
using Assets.MyGame.Scripts.Net.API;
|
||||
using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
|
||||
using Assets.MyGame.Scripts.Net.APIResponses.Enum;
|
||||
@@ -9,6 +10,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
@@ -35,22 +37,26 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
//public GameConfig M_GameConfig { get { return GameManager.Instance.gameConfig; } }
|
||||
#endregion
|
||||
public GameConfig M_GameConfig => GameManager.Instance.gameConfig;
|
||||
|
||||
|
||||
// 缓存字段
|
||||
private Dictionary<GameTypeEnum, RoomFishConfig> roomFishConfig;
|
||||
private Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>> createDic;
|
||||
private Dictionary<string, FishTypeConfig> fishDatas;
|
||||
public Dictionary<string,MonsterContral> fishDatas_hashCodekey=new Dictionary<string, MonsterContral>();
|
||||
public Dictionary<string, FishTypeConfig> FishDatas { get {
|
||||
public Dictionary<string, MonsterContral> fishDatas_hashCodekey = new Dictionary<string, MonsterContral>();
|
||||
public Dictionary<string, FishTypeConfig> FishDatas
|
||||
{
|
||||
get
|
||||
{
|
||||
if (fishDatas != null)
|
||||
return fishDatas;
|
||||
fishDatas =new Dictionary<string, FishTypeConfig>();
|
||||
fishDatas = new Dictionary<string, FishTypeConfig>();
|
||||
foreach (var item in M_GameConfig.fishTypeConfigs)
|
||||
{
|
||||
fishDatas.Add(item.fishNumber, item);
|
||||
}
|
||||
return fishDatas;
|
||||
} }
|
||||
}
|
||||
}
|
||||
#region 初始化鱼生成配置
|
||||
/// <summary>
|
||||
/// 懒加载初始化(只执行一次)
|
||||
@@ -62,7 +68,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
FishYZ.Init();
|
||||
roomFishConfig = new Dictionary<GameTypeEnum, RoomFishConfig>();
|
||||
createDic = new Dictionary<GameTypeEnum, Dictionary<string, RoomFishDetailConfig>>();
|
||||
|
||||
|
||||
|
||||
var list = GameManager.Instance.gameConfig.roomFishConfigs;
|
||||
if (list == null || list.Count == 0)
|
||||
@@ -78,7 +84,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
// 初始化子字典
|
||||
var fishDic = new Dictionary<string, RoomFishDetailConfig>();
|
||||
createDic[gameType] = fishDic;
|
||||
|
||||
|
||||
// 普通鱼
|
||||
if (item.normalFishList != null)
|
||||
{
|
||||
@@ -119,7 +125,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region // 鱼生成计时器相关
|
||||
@@ -129,10 +135,17 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
public GameObject dieFXPrefab;
|
||||
private List<RoomFishDetailConfig> spawnList; // 当前房间的鱼配置
|
||||
private Dictionary<string, RoomFishDetailConfig> spawnDic; // 当前房间的鱼配置
|
||||
Dictionary<FishTypeEnum, List<RoomFishDetailConfig>> fishTypeConfig;//当前房间鱼类型配置列表
|
||||
|
||||
Dictionary<string, List<RoomFishDetailConfig>> yz_FishConfig_Line;//当前房间鱼路线列表
|
||||
Dictionary<string, List<RoomFishDetailConfig>> yz_FishConfig_LineTree;//当前房间鱼路线列表
|
||||
Dictionary<string, List<RoomFishDetailConfig>> yz_FishConfig_LineFalse;//当前房间鱼路线列表
|
||||
|
||||
public void InitSpawnSystem(GameTypeEnum gameType)
|
||||
{
|
||||
EnsureInit();
|
||||
|
||||
fishTypeConfig = new Dictionary<FishTypeEnum, List<RoomFishDetailConfig>>();
|
||||
yz_FishConfig_Line = new Dictionary<string, List<RoomFishDetailConfig>>();
|
||||
var config = RoomFishConfig[gameType];
|
||||
spawnList = new List<RoomFishDetailConfig>();
|
||||
spawnDic = new Dictionary<string, RoomFishDetailConfig>();
|
||||
@@ -140,32 +153,74 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
// 合并普通鱼 + 等级鱼
|
||||
//spawnList.AddRange(config.normalFishList);
|
||||
//spawnList.AddRange(config.roomFishLevelList);
|
||||
|
||||
GameConfig gameConfig = GameManager.Instance.gameConfig;
|
||||
foreach (var item in config.normalFishList)
|
||||
{
|
||||
|
||||
spawnDic.Add(item.fishNumber, item);
|
||||
spawnDic[item.fishNumber] = item;
|
||||
spawnList.Add(item);
|
||||
if (item.type == 1)
|
||||
{
|
||||
FishTypeEnum typeEnum = (FishTypeEnum)FishDatas[item.fishNumber].fishType;
|
||||
if (!fishTypeConfig.ContainsKey(typeEnum))
|
||||
{
|
||||
fishTypeConfig[typeEnum] = new List<RoomFishDetailConfig>();
|
||||
}
|
||||
fishTypeConfig[typeEnum].Add(item);
|
||||
// yz_FishTypeConfig.Add
|
||||
}
|
||||
if (item.type == 2)
|
||||
{
|
||||
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
|
||||
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
|
||||
{
|
||||
|
||||
|
||||
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
|
||||
}
|
||||
yz_FishConfig_Line[yz.arrayNumber].Add(item);
|
||||
}
|
||||
}
|
||||
foreach (var item in config.roomFishLevelList)
|
||||
{
|
||||
if (item.type==2)
|
||||
if (item.roomLevel == GameManager.Instance.gameData.currRoomData.roomLevel)
|
||||
{
|
||||
if (item.roomLevel == GameManager.Instance.gameData.currRoomData.roomLevel)
|
||||
if (item.type == 2)
|
||||
{
|
||||
spawnDic.Add(item.fishNumber, item);
|
||||
spawnList.Add(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item.roomLevel == GameManager.Instance.gameData.currRoomData.roomLevel)
|
||||
{
|
||||
spawnDic.Add(item.fishNumber, item);
|
||||
spawnList.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
spawnDic.Add(item.fishNumber, item);
|
||||
spawnList.Add(item);
|
||||
|
||||
|
||||
|
||||
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == item.fishNumber);
|
||||
if (!yz_FishConfig_Line.ContainsKey(yz.arrayNumber))
|
||||
{
|
||||
|
||||
|
||||
yz_FishConfig_Line[yz.arrayNumber] = new List<RoomFishDetailConfig>();
|
||||
}
|
||||
yz_FishConfig_Line[yz.arrayNumber].Add(item);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var typeEnum = (FishTypeEnum)FishDatas[item.fishNumber].fishType;
|
||||
if (!fishTypeConfig.ContainsKey(typeEnum))
|
||||
{
|
||||
fishTypeConfig[typeEnum] = new List<RoomFishDetailConfig>();
|
||||
}
|
||||
fishTypeConfig[typeEnum].Add(item);
|
||||
if (item.roomLevel == GameManager.Instance.gameData.currRoomData.roomLevel)
|
||||
{
|
||||
spawnDic.Add(item.fishNumber, item);
|
||||
spawnList.Add(item);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int count = spawnList.Count;
|
||||
@@ -178,9 +233,21 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
{
|
||||
timers[i] = 0;
|
||||
frequencies[i] = spawnList[i].fishFrequency;
|
||||
shouldSpawn[i] = 0;
|
||||
shouldSpawn[i] = 1;
|
||||
//shouldSpawn[i] = spawnList[i].isCreate;
|
||||
}
|
||||
yz_FishConfig_LineTree = yz_FishConfig_Line;
|
||||
yz_FishConfig_LineFalse = new Dictionary<string, List<RoomFishDetailConfig>>();
|
||||
foreach (var item in MonsterMoveLine.dic_BezierCurveDatas.Keys)
|
||||
{
|
||||
if (item.Substring(0, 2) == "鱼阵")
|
||||
{
|
||||
yz_LineCount++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
int yz_LineCount = 0;
|
||||
public void CloseSpawnSystem()
|
||||
{
|
||||
spawnList = null;
|
||||
@@ -194,16 +261,19 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
/// </summary>
|
||||
public Transform fishRoot;
|
||||
|
||||
protected void Awake()
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
if (fishRoot == null)
|
||||
{
|
||||
fishRoot = new GameObject("FishRoot").transform;
|
||||
}
|
||||
// CreateSingleFish();
|
||||
new FishResourcesData(); //这里用来测试加载鱼预制体
|
||||
EventCenter.Instance.AddEventListener<SyncGameData>(ConstEventString.SyncGameData_CreateFish, CreateFish);
|
||||
|
||||
yz_Time = (int)Random.Range(2, 6);//2-4鱼阵
|
||||
yzCount = Random.Range(2, 5);//2-4鱼阵
|
||||
ptCount = Random.Range(1, 4);//1-3个
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
@@ -211,6 +281,28 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
public bool fangzhu;
|
||||
|
||||
float boss = 25;
|
||||
float yz_Time;
|
||||
int yzCount;
|
||||
Dictionary<RoomFishDetailConfig, bool> isyzCreate = new Dictionary<RoomFishDetailConfig, bool>();
|
||||
|
||||
float pt = 3;//1-3个
|
||||
int ptCount;
|
||||
|
||||
public static List<int> RandomUniqueNumbers(int count, int min, int max)
|
||||
{
|
||||
HashSet<int> result = new HashSet<int>();
|
||||
System.Random rand = new System.Random();
|
||||
|
||||
while (result.Count < count)
|
||||
{
|
||||
result.Add(rand.Next(min, max)); // max 是开区间
|
||||
}
|
||||
|
||||
return result.ToList();
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (spawnList == null)
|
||||
@@ -224,51 +316,140 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
deltaTime = Time.deltaTime,
|
||||
timers = timers,
|
||||
frequencies = frequencies,
|
||||
shouldSpawn = shouldSpawn
|
||||
shouldSpawn = shouldSpawn,
|
||||
//keyValues
|
||||
};
|
||||
|
||||
JobHandle handle = job.Schedule();
|
||||
handle.Complete();
|
||||
|
||||
boss -= Time.deltaTime;
|
||||
yz_Time -= Time.deltaTime;
|
||||
pt -= Time.deltaTime;
|
||||
if (boss <= 0)
|
||||
{
|
||||
if (fishTypeConfig.ContainsKey(FishTypeEnum.Boss鱼))
|
||||
{
|
||||
|
||||
List<RoomFishDetailConfig> list = new List<RoomFishDetailConfig>();
|
||||
foreach (var item in fishTypeConfig[FishTypeEnum.Boss鱼])
|
||||
{
|
||||
list.Add(item);
|
||||
}
|
||||
list[Random.Range(0, list.Count)].isCreate = 2;
|
||||
}
|
||||
boss = 25;
|
||||
}
|
||||
if (yz_Time <= 0)
|
||||
{
|
||||
|
||||
var list = RandomUniqueNumbers(yzCount, 0, FishYZ.dicfishYZ.Count);
|
||||
for (int i = 0; i < yzCount; i++)
|
||||
{
|
||||
string str = FishYZ.dicfishYZ_list[list[i]].ToString();
|
||||
if (yz_FishConfig_LineTree.ContainsKey(str))
|
||||
{
|
||||
//yz_FishConfig_LineTree[str] = new List<RoomFishDetailConfig>();
|
||||
if (yz_FishConfig_LineTree[str].Count > 0)
|
||||
{
|
||||
var va = yz_FishConfig_LineTree[str][Random.Range(0, yz_FishConfig_LineTree[str].Count)];
|
||||
va.isCreate = 2;
|
||||
//yz_FishConfig_LineTree[str].Remove(va);
|
||||
if (!yz_FishConfig_LineFalse.ContainsKey(str))
|
||||
{
|
||||
yz_FishConfig_LineFalse[str] = new List<RoomFishDetailConfig>();
|
||||
}
|
||||
yz_FishConfig_LineFalse[str].Add(va);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
yz_Time = Random.Range(1, 6);
|
||||
yzCount = Random.Range(1, 5);
|
||||
}
|
||||
if (pt <= 0)
|
||||
{
|
||||
List<RoomFishDetailConfig> list = new List<RoomFishDetailConfig>();
|
||||
foreach (var item in fishTypeConfig[FishTypeEnum.普通鱼])
|
||||
{
|
||||
list.Add(item);
|
||||
}
|
||||
var va = RandomUniqueNumbers(ptCount, 0, fishTypeConfig[FishTypeEnum.普通鱼].Count);
|
||||
foreach (var item in va)
|
||||
{
|
||||
list[item].isCreate = 2;
|
||||
|
||||
}
|
||||
pt = 3;
|
||||
ptCount = Random.Range(1, 4);
|
||||
}
|
||||
|
||||
|
||||
// 主线程执行生成
|
||||
for (int i = 0; i < spawnList.Count; i++)
|
||||
{
|
||||
|
||||
if (shouldSpawn[i] == 1)
|
||||
{
|
||||
|
||||
var fish = spawnList[i];
|
||||
|
||||
|
||||
if (fish.isCreate == 0)
|
||||
{
|
||||
List<int> list;
|
||||
int pathId;
|
||||
if (fish.type==2)
|
||||
fish.isCreate = 1;
|
||||
if (fish.type == 2)
|
||||
{
|
||||
//list = FishYZ.dicfishYZ[GameManager.Instance.gameConfig.fishArrayConfigs. fish.fishNumber];
|
||||
pathId = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
list = FishDatas[fish.fishNumber].pathList;
|
||||
pathId = list[Random.Range(0, list.Count)];
|
||||
}
|
||||
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == fish.fishNumber);
|
||||
|
||||
SyncGameData sgd = new SyncGameData
|
||||
|
||||
yz_FishConfig_LineFalse[yz.arrayNumber].Remove(fish);
|
||||
yz_FishConfig_LineTree[yz.arrayNumber].Add(fish);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
if (fish.isCreate == 2)
|
||||
{
|
||||
{
|
||||
sitPos = GameManager.Instance.gameData.roomJoinNotice.position,
|
||||
frameType = FrameDataType.createFish,
|
||||
time = BeijingTimeManager.Instance.CurrentTimestampMs,
|
||||
frameData = new FrameData_CreateFish
|
||||
List<int> list;
|
||||
int pathId;
|
||||
if (fish.type == 2)
|
||||
{
|
||||
fishNumber = fish.fishNumber,
|
||||
guid = Guid.NewGuid().ToString(),
|
||||
moveLineId = pathId.ToString()
|
||||
//list = FishYZ.dicfishYZ[GameManager.Instance.gameConfig.fishArrayConfigs. fish.fishNumber];
|
||||
pathId = 0;
|
||||
}
|
||||
};
|
||||
else
|
||||
{
|
||||
list = FishDatas[fish.fishNumber].pathList;
|
||||
|
||||
WebSocketSendList.SyncGameData(sgd);
|
||||
pathId = list[Random.Range(0, list.Count)];
|
||||
}
|
||||
|
||||
|
||||
|
||||
SyncGameData sgd = new SyncGameData
|
||||
{
|
||||
sitPos = GameManager.Instance.gameData.roomJoinNotice.position,
|
||||
frameType = FrameDataType.createFish,
|
||||
time = BeijingTimeManager.Instance.CurrentTimestampMs,
|
||||
frameData = new FrameData_CreateFish
|
||||
{
|
||||
fishNumber = fish.fishNumber,
|
||||
guid = Guid.NewGuid().ToString(),
|
||||
moveLineId = pathId.ToString()
|
||||
}
|
||||
};
|
||||
|
||||
WebSocketSendList.SyncGameData(sgd);
|
||||
}
|
||||
fish.isCreate = 0;
|
||||
shouldSpawn[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//SpawnFishMainThread(fish);
|
||||
}
|
||||
}
|
||||
@@ -281,24 +462,24 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
SpawnFishMainThread(rotateData, syncGameData.time);
|
||||
}
|
||||
}
|
||||
private async void SpawnFishMainThread(FrameData_CreateFish createFishData,long time)
|
||||
private async void SpawnFishMainThread(FrameData_CreateFish createFishData, long time)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber] ;
|
||||
if (cfg.type==1)
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
if (cfg.type == 1)
|
||||
{
|
||||
bool flowControl = OnlyFish(createFishData,time);
|
||||
bool flowControl = OnlyFish(createFishData, time);
|
||||
if (!flowControl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (cfg.type==2)
|
||||
else if (cfg.type == 2)
|
||||
{
|
||||
//cfg.fishNumber;3
|
||||
var yz = GameManager.Instance.gameConfig.fishArrayConfigs.Find(a => a.fishArrayNumber == cfg.fishNumber);
|
||||
foreach (var item in GameManager.Instance.gameConfig.fishArrayConfigs)
|
||||
{
|
||||
if (item.arrayNumber==cfg.fishNumber)
|
||||
if (item.arrayNumber == cfg.fishNumber)
|
||||
{
|
||||
Debug.Log(item);
|
||||
}
|
||||
@@ -315,10 +496,11 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
Vector3 pos = new Vector3(
|
||||
9999, 9999, 0
|
||||
);
|
||||
var prefab = FishResourcesData.GetFishPrefab(fishType.fishNumber);
|
||||
var prefab = FishResourcesData.GetFishPrefab(int.Parse(fishType.fishNumber));
|
||||
|
||||
int pathId = 0;
|
||||
int count = 0;
|
||||
count=yz.fishCount;
|
||||
List<int> list = new List<int>();
|
||||
switch (yz.arrayNumber.Substring(0, 3))
|
||||
{
|
||||
@@ -326,74 +508,78 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
case "700":
|
||||
list = FishYZ.dicfishYZ[yz.arrayNumber];
|
||||
|
||||
StartCoroutine( IeShanXing(createFishData, yz, pos, prefab, list,time));
|
||||
StartCoroutine(IeShanXing(createFishData, yz, pos, prefab, list, time,count));
|
||||
|
||||
break;
|
||||
case "701":
|
||||
list = FishYZ.dicfishYZ[yz.arrayNumber];
|
||||
|
||||
foreach (var item in list)
|
||||
Quan(createFishData, yz, pos, prefab, item, 10, time);
|
||||
Quan(createFishData, yz, pos, prefab, item, count, time);
|
||||
break;
|
||||
case "702":
|
||||
list = FishYZ.dicfishYZ[yz.arrayNumber];
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time));
|
||||
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time,count));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case "7007":
|
||||
list = FishYZ.dicfishYZ[yz.arrayNumber];
|
||||
foreach (var item in list)
|
||||
{
|
||||
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time));
|
||||
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, item, time,count));
|
||||
}
|
||||
break;
|
||||
case "710":
|
||||
list = FishYZ.dicfishYZ[yz.arrayNumber];
|
||||
StartCoroutine(YZ7007(createFishData, yz, pos, prefab, list[Random.Range(0,list.Count)], time, count));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//// 4. 实例化
|
||||
//GameObject fish = Instantiate(prefab, pos, Quaternion.identity, fishRoot);
|
||||
//var v = fish.GetComponent<MonsterContral>();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
IEnumerator IeShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, List<int> list, long time)
|
||||
IEnumerator IeShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, List<int> list, long time,int count)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
foreach (var item in list)
|
||||
{
|
||||
ShanXing(createFishData, yz, pos, prefab, item, 10, time);
|
||||
ShanXing(createFishData, yz, pos, prefab, item, count, time);
|
||||
yield return new WaitForSeconds(0.8f);
|
||||
}
|
||||
}
|
||||
|
||||
private void ShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId,int count, long time)
|
||||
private void ShanXing(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, int count, long time)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
for (int i = 1; i <= 16; i++)
|
||||
{
|
||||
|
||||
|
||||
// 4. 实例化
|
||||
|
||||
GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((i * 5 * (i % 2 == 0 ? -1 : 1)) * Vector3.forward+prefab.transform.eulerAngles) , fishRoot);
|
||||
GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((i * 5 * (i % 2 == 0 ? -1 : 1)) * Vector3.forward + prefab.transform.eulerAngles), fishRoot);
|
||||
|
||||
|
||||
|
||||
var v = fish.GetComponent<MonsterContral>();
|
||||
v.monsterData.fishTypeConfig = FishDatas[yz.fishNumber];
|
||||
v.guid = createFishData.guid+i;
|
||||
v.guid = createFishData.guid + i;
|
||||
fishDatas_hashCodekey[v.guid] = v;
|
||||
v.moveTime = (BeijingTimeManager.Instance.CurrentTimestampMs- time)/1000;
|
||||
v.moveTime = (BeijingTimeManager.Instance.CurrentTimestampMs - time) / 1000;
|
||||
//int pathId = list[Random.Range(0, list.Count)];
|
||||
v.Init(pathId.ToString(), cfg.times, true, yz.arrayNumber);
|
||||
}
|
||||
}
|
||||
|
||||
private void Quan(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId,int count, long time)
|
||||
private void Quan(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, int count, long time)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
for (int i = 0; i < count; i++)
|
||||
@@ -413,13 +599,13 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
|
||||
//顺序出
|
||||
IEnumerator YZ7007(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, long time)
|
||||
IEnumerator YZ7007(FrameData_CreateFish createFishData, FishArrayConfig yz, Vector3 pos, GameObject prefab, int pathId, long time,int count)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
List<int> list = FishDatas[yz.fishNumber].pathList;
|
||||
for (int i = 0; i < 8; i++)
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
yield return new WaitForSeconds(1f);
|
||||
|
||||
//// 4. 实例化
|
||||
//GameObject fish = Instantiate(prefab, pos, Quaternion.Euler((360 / 20) * i * Vector3.forward), fishRoot);
|
||||
//var v = fish.GetComponent<MonsterContral>();
|
||||
@@ -429,7 +615,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
////int pathId = list[Random.Range(0, list.Count)];
|
||||
//v.Init(MonsterMoveLine.dic_BezierCurveDatas["鱼阵" + (pathId + 1)], 15, true, cfg.fishNumber);
|
||||
//v.fishType = (FishTypeEnum)FishDatas[yz.fishNumber].fishType;
|
||||
|
||||
|
||||
// 4. 实例化
|
||||
GameObject fish = Instantiate(prefab, pos, prefab.transform.rotation, fishRoot);
|
||||
var v = fish.GetComponent<MonsterContral>();
|
||||
@@ -439,16 +625,16 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
v = fish.AddComponent<MonsterContral>();
|
||||
}
|
||||
v.monsterData.fishTypeConfig = FishDatas[yz.fishNumber];
|
||||
v.guid = createFishData.guid+i;
|
||||
v.moveTime = (BeijingTimeManager.Instance.CurrentTimestampMs - time) / 1000;
|
||||
v.guid = createFishData.guid + i;
|
||||
v.moveTime = ((BeijingTimeManager.Instance.CurrentTimestampMs - time) / 1000) - i;
|
||||
|
||||
fishDatas_hashCodekey[v.guid] = v;
|
||||
v.Init(pathId.ToString(), 10);
|
||||
|
||||
v.Init(pathId.ToString(), cfg.times, true, yz.arrayNumber);
|
||||
yield return new WaitForSeconds(1f);
|
||||
}
|
||||
|
||||
}
|
||||
private bool OnlyFish(FrameData_CreateFish createFishData,long time)
|
||||
private bool OnlyFish(FrameData_CreateFish createFishData, long time)
|
||||
{
|
||||
RoomFishDetailConfig cfg = spawnDic[createFishData.fishNumber];
|
||||
// 1. 找到鱼的基础配置
|
||||
@@ -463,7 +649,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
|
||||
// 2. 加载 Prefab(imageUrl 你可以换成自己的字段)
|
||||
//var prefab = await Addressables.LoadAssetAsync<GameObject>(fishType.imageUrl).Task;
|
||||
var prefab = FishResourcesData.GetFishPrefab(fishType.fishNumber);
|
||||
var prefab = FishResourcesData.GetFishPrefab(int.Parse(fishType.fishNumber));
|
||||
|
||||
// 3. 出生点
|
||||
Vector3 pos = new Vector3(
|
||||
@@ -485,8 +671,8 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
fishDatas_hashCodekey[v.guid] = v;
|
||||
var list = FishDatas[cfg.fishNumber].pathList;
|
||||
string pathId = createFishData.moveLineId;
|
||||
|
||||
v.Init(pathId, 10);
|
||||
|
||||
v.Init(pathId, cfg.times);
|
||||
//v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
|
||||
////初始化
|
||||
//GameObject obj = Instantiate(prefab, Vector3.one * 999, Quaternion.identity);
|
||||
@@ -510,47 +696,47 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
|
||||
// 未来扩展:阵型、路径、Boss、普通鱼
|
||||
//// array.ty.fishNumber
|
||||
//// array.ty.fishNumber
|
||||
|
||||
|
||||
|
||||
// // 2. 加载 Prefab(imageUrl 你可以换成自己的字段)
|
||||
// //var prefab = await Addressables.LoadAssetAsync<GameObject>(fishType.imageUrl).Task;
|
||||
// var prefab = FishResourcesData.CreateFishPrefab(fishType.fishNumber);
|
||||
// // 2. 加载 Prefab(imageUrl 你可以换成自己的字段)
|
||||
// //var prefab = await Addressables.LoadAssetAsync<GameObject>(fishType.imageUrl).Task;
|
||||
// var prefab = FishResourcesData.CreateFishPrefab(fishType.fishNumber);
|
||||
|
||||
// // 3. 随机出生点
|
||||
// Vector3 pos = new Vector3(
|
||||
// Random.Range(-8f, 8f),
|
||||
// Random.Range(-5f, 5f),
|
||||
// 0
|
||||
// );
|
||||
// // 3. 随机出生点
|
||||
// Vector3 pos = new Vector3(
|
||||
// Random.Range(-8f, 8f),
|
||||
// Random.Range(-5f, 5f),
|
||||
// 0
|
||||
// );
|
||||
|
||||
// // 4. 实例化
|
||||
// GameObject fish = Instantiate(prefab, pos, Quaternion.identity, fishRoot);
|
||||
// var v = fish.GetComponent<MonsterContral>();
|
||||
// // 5. 初始化路径
|
||||
// if (v == null)
|
||||
// {
|
||||
// v = fish.
|
||||
//
|
||||
//
|
||||
// <MonsterContral>();
|
||||
// }
|
||||
// v.monsterData.roomFishDetailConfig = cfg;
|
||||
// v.hashCode = v.gameObject.GetHashCode().ToString();
|
||||
// fishDatas_hashCodekey[v.hashCode] = v;
|
||||
// var list = FishDatas[cfg.fishNumber].pathList;
|
||||
// int pathId = list[Random.Range(0, list.Count)];
|
||||
// v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + pathId], 10);
|
||||
// v.fishType = (FishTypeEnum)FishDatas[cfg.fishNumber].fishType;
|
||||
// //v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
|
||||
// ////初始化
|
||||
// //GameObject obj = Instantiate(prefab, Vector3.one * 999, Quaternion.identity);
|
||||
// //var v = obj.GetComponent<MonsterControl>();
|
||||
// ////v.dic_AnimKeyAnimName.Add(CharacterAnimationType.move, "stand2");
|
||||
// // 4. 实例化
|
||||
// GameObject fish = Instantiate(prefab, pos, Quaternion.identity, fishRoot);
|
||||
// var v = fish.GetComponent<MonsterContral>();
|
||||
// // 5. 初始化路径
|
||||
// if (v == null)
|
||||
// {
|
||||
// v = fish.
|
||||
//
|
||||
//
|
||||
// <MonsterContral>();
|
||||
// }
|
||||
// v.monsterData.roomFishDetailConfig = cfg;
|
||||
// v.hashCode = v.gameObject.GetHashCode().ToString();
|
||||
// fishDatas_hashCodekey[v.hashCode] = v;
|
||||
// var list = FishDatas[cfg.fishNumber].pathList;
|
||||
// int pathId = list[Random.Range(0, list.Count)];
|
||||
// v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + pathId], 10);
|
||||
// v.fishType = (FishTypeEnum)FishDatas[cfg.fishNumber].fishType;
|
||||
// //v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
|
||||
// ////初始化
|
||||
// //GameObject obj = Instantiate(prefab, Vector3.one * 999, Quaternion.identity);
|
||||
// //var v = obj.GetComponent<MonsterControl>();
|
||||
// ////v.dic_AnimKeyAnimName.Add(CharacterAnimationType.move, "stand2");
|
||||
|
||||
// //v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
|
||||
// Debug.Log($"生成鱼:{fishType.fishName}");
|
||||
// //v.monsterData.moveLine.Init(MonsterMoveLine.dic_BezierCurveDatas["曲线" + Random.Range(1, 4).ToString()], 10);
|
||||
// Debug.Log($"生成鱼:{fishType.fishName}");
|
||||
|
||||
|
||||
|
||||
@@ -587,32 +773,34 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
|
||||
}
|
||||
}
|
||||
|
||||
public void DesFish(string msg)
|
||||
public void DieFish(string msg)
|
||||
{
|
||||
var killFish = JsonConvert.DeserializeObject<WebSocketResponseBase<RoomKillNotice>>(msg).arguments[0];
|
||||
Debug.Log("时间123:" + (DateTimeOffset.Now.ToUnixTimeSeconds() - killFish.timespan) + "秒");
|
||||
if (fishDatas_hashCodekey.ContainsKey(killFish.fishId))
|
||||
{
|
||||
AudioManager.Instance.PlayerFX(60004);
|
||||
var monster = fishDatas_hashCodekey[killFish.fishId];
|
||||
Instantiate(monster.effect_Die == null ? dieFXPrefab : monster.effect_Die, monster.transform.position, Quaternion.identity, transform.parent);
|
||||
MonsterDieList.Instance.SmallHuangYiHuang(monster.transform.position, monster.monsterData.fishTypeConfig.fishNumber, 1000);
|
||||
Destroy(monster.gameObject);
|
||||
fishDatas_hashCodekey.Remove(killFish.fishId);
|
||||
|
||||
|
||||
//GameManager.Instance.gameData.roomJoinNotice.gold += killFish.gold;
|
||||
var list = UIManager.Instance.Get<GameMainPanel_XJMH>(UIPanel.MainGamePanelXJMH).list_Sits;
|
||||
foreach (var item in list)
|
||||
{
|
||||
if (item.user!=null)
|
||||
if (item.user != null)
|
||||
{
|
||||
if (item.user==killFish.userId)
|
||||
if (item.user == killFish.userId)
|
||||
{
|
||||
item.goldNum +=killFish.gold;
|
||||
item.goldNum += killFish.gold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user