示例#1
0
    public FarmObjectSetting.ExtendBuildPositionSearchResult SearchExtendBuildGrid(FarmObject oneBeforeFarmObject)
    {
        FarmScenery scenery = FarmRoot.Instance.Scenery;

        FarmObjectSetting.PriorityDirection priorityDirection = FarmObjectSetting.PriorityDirection.FRONT;
        FarmObject farmObject = null;

        if (2 <= scenery.farmObjects.Count)
        {
            farmObject = scenery.farmObjects[scenery.farmObjects.Count - 2];
        }
        UserFacility userFacility = Singleton <UserDataMng> .Instance.GetUserFacility(oneBeforeFarmObject.userFacilityID);

        if (null != farmObject && farmObject.facilityID == oneBeforeFarmObject.facilityID)
        {
            UserFacility userFacility2 = Singleton <UserDataMng> .Instance.GetUserFacility(farmObject.userFacilityID);

            int  num  = userFacility2.positionX - userFacility.positionX;
            int  num2 = userFacility2.positionY - userFacility.positionY;
            bool flag = Mathf.Abs(num) > Mathf.Abs(num2);
            if (flag)
            {
                priorityDirection = ((0 <= num) ? FarmObjectSetting.PriorityDirection.LEFT : FarmObjectSetting.PriorityDirection.RIGHT);
            }
            else
            {
                priorityDirection = ((0 <= num2) ? FarmObjectSetting.PriorityDirection.REAR : FarmObjectSetting.PriorityDirection.FRONT);
            }
        }
        return(this.GetExtendBuildGrid(oneBeforeFarmObject, userFacility, priorityDirection));
    }
示例#2
0
 private FarmObjectSetting.ExtendBuildPositionSearchResult GetExtendBuildGrid(FarmObject oneBeforeFarmObject, UserFacility oneBeforeUserFacility, FarmObjectSetting.PriorityDirection priorityDirection)
 {
     FarmGrid.GridPosition gridPosition = new FarmGrid.GridPosition
     {
         x = oneBeforeUserFacility.positionX,
         y = oneBeforeUserFacility.positionY
     };
     FarmObjectSetting.ExtendBuildPositionSearchInfo extendBuildPositionSearchInfo = new FarmObjectSetting.ExtendBuildPositionSearchInfo
     {
         farmField           = FarmRoot.Instance.Field,
         field               = FarmRoot.Instance.Field.GetField(),
         oneBeforeFarmObject = oneBeforeFarmObject,
         aroundCount         = 1,
         aroundX             = oneBeforeFarmObject.sizeX,
         aroundY             = oneBeforeFarmObject.sizeY,
         priorityDirection   = priorityDirection,
         originGrid          = gridPosition,
         resultGrid          = gridPosition
     };
     while (!this.SearchExtendBuildGrid(extendBuildPositionSearchInfo))
     {
         if (extendBuildPositionSearchInfo.isOutsideMap)
         {
             break;
         }
         extendBuildPositionSearchInfo.aroundCount++;
         extendBuildPositionSearchInfo.aroundX = oneBeforeFarmObject.sizeX + extendBuildPositionSearchInfo.aroundCount;
         extendBuildPositionSearchInfo.aroundY = oneBeforeFarmObject.sizeY + extendBuildPositionSearchInfo.aroundCount;
     }
     return(new FarmObjectSetting.ExtendBuildPositionSearchResult
     {
         grid = extendBuildPositionSearchInfo.resultGrid,
         isOutsideMap = extendBuildPositionSearchInfo.isOutsideMap
     });
 }
示例#3
0
    private void AddExtendBuildPositionSearchInfo(FarmObjectSetting.ExtendBuildPositionSearchInfo searchInfo, FarmObjectSetting.PriorityDirection priorityDirection)
    {
        searchInfo.startGrid = searchInfo.originGrid;
        searchInfo.endGrid   = searchInfo.originGrid;
        switch (priorityDirection)
        {
        case FarmObjectSetting.PriorityDirection.FRONT:
            searchInfo.startGrid.y   = searchInfo.startGrid.y + searchInfo.aroundY;
            searchInfo.endGrid.x     = searchInfo.endGrid.x - searchInfo.aroundX;
            searchInfo.changeValue.x = -searchInfo.aroundX;
            searchInfo.changeValue.y = -searchInfo.aroundY;
            break;

        case FarmObjectSetting.PriorityDirection.LEFT:
            searchInfo.startGrid.x   = searchInfo.startGrid.x - searchInfo.aroundX;
            searchInfo.endGrid.y     = searchInfo.endGrid.y - searchInfo.aroundY;
            searchInfo.changeValue.x = searchInfo.aroundX;
            searchInfo.changeValue.y = -searchInfo.aroundY;
            break;

        case FarmObjectSetting.PriorityDirection.REAR:
            searchInfo.startGrid.y   = searchInfo.startGrid.y - searchInfo.aroundY;
            searchInfo.endGrid.x     = searchInfo.endGrid.x + searchInfo.aroundX;
            searchInfo.changeValue.x = searchInfo.aroundX;
            searchInfo.changeValue.y = searchInfo.aroundY;
            break;

        case FarmObjectSetting.PriorityDirection.RIGHT:
            searchInfo.startGrid.x   = searchInfo.startGrid.x + searchInfo.aroundX;
            searchInfo.endGrid.y     = searchInfo.endGrid.y + searchInfo.aroundY;
            searchInfo.changeValue.x = -searchInfo.aroundX;
            searchInfo.changeValue.y = searchInfo.aroundY;
            break;
        }
    }