Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
 void Start()
 {
     FenceAreaData   = GameEntry.Database.FenceArea.GetFenceAreaData(FenceAreaId);
     MoveTimePreGrid = 2f;
     Agent           = GetComponent <SceneObject>();
     RandAppear();
     RandMove();
 }
Exemple #3
0
    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);
        }
    }
Exemple #4
0
    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);
        }
    }
Exemple #5
0
 public void AddFenceArea(FenceAreaData data)
 {
     IsDirty  = true;
     data.Uid = ++UniqueId;
     FenceAreaList.Add(data);
 }