private void RefreshAnimalObject(FenceAreaData data) { if (data.AnimalCounts.Count <= 0) { return; } Dictionary <int, AnimalController> map; if (!AnimalGoMap.TryGetValue(data.Uid, out map)) { map = new Dictionary <int, AnimalController>(); AnimalGoMap.Add(data.Uid, map); } foreach (var countData in data.AnimalCounts) { if (!map.ContainsKey(countData.x)) { var d = new GameObject("Animal"); d.transform.SetParent(GoCharactorList.transform, true); var controller = d.AddComponent <AnimalController>(); controller.AnimalId = countData.x; controller.FenceAreaId = data.Uid; map.Add(countData.x, controller); } } }
void Start() { FenceAreaData = GameEntry.Database.FenceArea.GetFenceAreaData(FenceAreaId); MoveTimePreGrid = 2f; Agent = GetComponent <SceneObject>(); RandAppear(); RandMove(); }
public void AddFenceArea(FenceAreaData data) { foreach (var fence in data.Fences) { BuildData buildData = new BuildData(); buildData.BuildType = (int)EZooObjectType.FenceArea; buildData.BuildId = 1; buildData.BuildUid = 0; buildData.Rotate = 0; buildData.Rect.x = fence.x; buildData.Rect.y = fence.y; buildData.Rect.width = 1; buildData.Rect.height = 1; AddBuildInfo(buildData, ESceneObjectStatus.Builded); } var fenceList = data.GetFences(); foreach (var pos in fenceList) { BuildData buildData = new BuildData(); buildData.BuildType = (int)EZooObjectType.Fence; buildData.BuildId = 1; buildData.BuildUid = 0; buildData.Rotate = 0; buildData.Rect.x = pos.x; buildData.Rect.y = pos.y; buildData.Rect.width = 1; buildData.Rect.height = 1; AddBuildInfo(buildData, ESceneObjectStatus.Builded); } var connectList = data.GetFenceConnects(); foreach (var pos in connectList) { BuildData buildData = new BuildData(); buildData.BuildType = (int)EZooObjectType.FenceConnect; buildData.BuildId = 1; buildData.BuildUid = 0; buildData.Rotate = 0; buildData.Rect.x = (int)(pos.x * 10); buildData.Rect.y = (int)(pos.y * 10); buildData.Rect.width = 1; buildData.Rect.height = 1; AddBuildInfo(buildData, ESceneObjectStatus.Builded); } }
public void AddToFenceList(Vector2Int grid) { FenceObjectList.Add(grid); List <int> connectedList = new List <int>(); foreach (var neighbor in MapHelper.NeighborGrids) { var neighborGrid = neighbor + grid; foreach (var map in FenceAreaMap) { if (map.Value.HasGrid(neighborGrid.x, neighborGrid.y)) { if (!connectedList.Contains(map.Key)) { connectedList.Add(map.Key); } break; } } } if (connectedList.Count <= 0) { var fenceArea = new FenceAreaData(); fenceArea.Fences.Add(grid); FenceAreaMap.Add(++FenceAreaUid, fenceArea); } else if (connectedList.Count == 1) { FenceAreaMap[connectedList[0]].Fences.Add(grid); } else { var fenceArea = new FenceAreaData(); fenceArea.Fences.Add(grid); foreach (var connectedId in connectedList) { foreach (var fence in FenceAreaMap[connectedId].Fences) { fenceArea.Fences.Add(fence); } FenceAreaMap.Remove(connectedId); } FenceAreaMap.Add(++FenceAreaUid, fenceArea); } }
public void AddFenceArea(FenceAreaData data) { IsDirty = true; data.Uid = ++UniqueId; FenceAreaList.Add(data); }