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)); }
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 }); }
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; } }