コード例 #1
0
    public APIRequestTask SaveFarmObjectPosition(Action <int> complated)
    {
        RequestFA_FacilityBuild request = new RequestFA_FacilityBuild
        {
            SetSendData = delegate(FacilityBuild param)
            {
                FarmRoot              instance     = FarmRoot.Instance;
                FarmField             field        = instance.Field;
                FarmObjectSetting     component    = this.GetComponent <FarmObjectSetting>();
                FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(component.farmObject.GetBaseGridPosition3D());
                param.facilityId = component.farmObject.facilityID;
                param.positionX  = gridPosition.x;
                param.positionY  = gridPosition.y;
            },
            OnReceived = delegate(FacilityBuildResult response)
            {
                this.SaveResponseToFacilityBuild(response.userFacilityId);
                if (complated != null)
                {
                    complated(response.userFacilityId);
                }
            }
        };

        return(new APIRequestTask(request, true));
    }
コード例 #2
0
    public IEnumerator AppearanceNormal(GameObject digimon, Action completed)
    {
        FarmRoot  farmRoot  = FarmRoot.Instance;
        FarmField farmField = farmRoot.Field;
        int       gridIndex = FarmDigimonUtility.GetPassableGridIndex();

        if (gridIndex == -1)
        {
            digimon.SetActive(false);
        }
        else
        {
            base.transform.position      = farmField.Grid.GetPositionGridCenter(gridIndex, false);
            base.transform.localScale    = Vector3.zero;
            base.transform.localRotation = Quaternion.identity;
            Vector3 angles = base.transform.localEulerAngles;
            angles.y = farmRoot.Camera.transform.localEulerAngles.y + 180f;
            base.transform.localEulerAngles = angles;
            float scale = 0.99f;
            while (1f > scale)
            {
                scale += Time.deltaTime;
                scale  = Mathf.Clamp01(scale);
                float adjScale = scale * 2f;
                base.transform.localScale = new Vector3(adjScale, adjScale, adjScale);
                yield return(null);
            }
        }
        if (completed != null)
        {
            completed();
        }
        yield break;
    }
コード例 #3
0
    private int[] GetPassGridIndexs(int targetGridIndex)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(base.transform.localPosition);
        int gridIndex = field.Grid.GetGridIndex(gridPosition);
        List <FarmDigimonUtility.PathInfo> path = FarmDigimonUtility.GetPath(gridIndex, targetGridIndex);

        if (path != null)
        {
            FarmDigimonUtility.PathInfo pathInfo = path.SingleOrDefault((FarmDigimonUtility.PathInfo x) => x.gridIndex == targetGridIndex);
            int        startGridIndex            = pathInfo.gridIndex;
            int        num  = pathInfo.checkPoint - 1;
            List <int> list = new List <int>();
            while (0 <= num && this.ChoosePath(field.Grid, path, startGridIndex, num, list))
            {
                num--;
                startGridIndex = list.Last <int>();
            }
            if (0 < list.Count)
            {
                return(list.ToArray());
            }
        }
        return(null);
    }
コード例 #4
0
    public void DeleteFarmObject(int userFacilityID)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        instance.ClearSettingFarmObject();
        Singleton <UserDataMng> .Instance.DeleteUserFacility(userFacilityID);

        bool flag = false;

        for (int i = 0; i < this.farmObjects.Count; i++)
        {
            if (userFacilityID == this.farmObjects[i].userFacilityID)
            {
                flag = (this.farmObjects[i].facilityID == 11);
                GameObject gameObject = this.farmObjects[i].gameObject;
                field.SetGridPutFlag(this.farmObjects[i], false);
                this.farmObjects.Remove(this.farmObjects[i]);
                UnityEngine.Object.Destroy(gameObject);
                break;
            }
        }
        if (flag)
        {
            FarmRoot.Instance.ResetSetteingFence();
        }
    }
コード例 #5
0
        public ActionResult <FarmFieldDto> Create(FarmFieldDto targetValue)
        {
            var userDimensions = targetValue.Dimensions;
            var dimensions     = new Dimensions {
            };

            dimensions.Width  = userDimensions.Width;
            dimensions.Height = userDimensions.Height;
            dynamic farmfield = null;

            if (userDimensions != null)
            {
                farmfield = new FarmField {
                    Name        = targetValue.Name,
                    Active      = targetValue.Active,
                    Dimensions  = dimensions,
                    Description = targetValue.Description
                };
            }
            if (farmfield == null)
            {
                return(BadRequest("Farmfield is null, AHHHHHH"));
            }

            var data = context.Set <FarmField>().Add(farmfield);

            context.SaveChanges();
            targetValue.Id = data.Entity.Id;

            return(Created($"/api/farm-field/{data.Entity.Id}", targetValue));
        }
コード例 #6
0
    public void SetSelectMark(FarmField farmField, FarmSelectMark mark)
    {
        mark.gameObject.SetActive(true);
        mark.SetParent(base.gameObject);
        Vector2 gridSize = new Vector2(farmField.gridHorizontal, farmField.gridVertical);

        mark.SetSize(this.sizeX, this.sizeY, gridSize);
    }
コード例 #7
0
    protected override void Start()
    {
        base.Start();

        // Utility AI setup

        // ****** VALUES ******
        UAIV_AgentHealth       agentHealth       = new UAIV_AgentHealth(this, _AgentController._AgentStats.HealthPoints);
        UAIV_AgentFood         agentFood         = new UAIV_AgentFood(this, _AgentController._AgentStats.FoodPoints);
        UAIV_AgentEnergy       agentEnergy       = new UAIV_AgentEnergy(this, _AgentController._AgentStats.EnergyPoints);
        UAIV_FarmPlaced        farmPlaced        = new UAIV_FarmPlaced(this, 1);
        UAIV_DistanceTo        distanceToHQ      = new UAIV_DistanceTo(_AgentController._PlayerOwner.GetBuilding_ByTag(GameCache._Cache.GetData("Headquarters").tag), this, 20);
        UAIV_InventorySize     inventorySize     = new UAIV_InventorySize(this, _AgentController._Inventory._MaxInventorySize);
        UAIV_SoldierEnemyCount enemySoldierCount = new UAIV_SoldierEnemyCount(this, 3.0f);

        // ****** SCORERS ******
        UtilityScorer scorer_AgentHealth             = new UtilityScorer(agentHealth, _HealthCurve);
        UtilityScorer scorer_AgentFood               = new UtilityScorer(agentFood, _FoodCurve);
        UtilityScorer scorer_AgentEnergy             = new UtilityScorer(agentEnergy, _EnergyCurve);
        UtilityScorer scorer_FarmBoolCheck           = new UtilityScorer(farmPlaced, _FarmPlacedCurve);
        UtilityScorer scorer_DistanceToHQ            = new UtilityScorer(distanceToHQ, _DistanceToHQCurve);
        UtilityScorer scorer_InventorySize           = new UtilityScorer(inventorySize, _InventorySizeCurve);
        UtilityScorer scorer_enemySoldierThreatLevel = new UtilityScorer(enemySoldierCount, _EnemySoldierThreatCurve);

        // ****** ACTIONS ******
        RoamAround roamAction_SearchFarmSpot = new RoamAround(this, 0.0f);

        roamAction_SearchFarmSpot.AddScorer(scorer_DistanceToHQ);
        roamAction_SearchFarmSpot.AddScorer(scorer_FarmBoolCheck);

        FarmField farmFieldAction = new FarmField(this, 0.5f);

        DeliverResources deliverResourceAction = new DeliverResources(GameCache._Cache.GetData("Headquarters").tag, this, 0.0f);

        deliverResourceAction.AddScorer(scorer_InventorySize);

        EatFood eatFoodAction = new EatFood(this, 0.0f);

        eatFoodAction.AddScorer(scorer_AgentFood);
        eatFoodAction.SetWeight(2);

        SleepAndRest sleepRestAction = new SleepAndRest("Field", this, 0.0f);

        sleepRestAction.AddScorer(scorer_AgentEnergy);

        Hide hideAction = new Hide("Headquarters", this, 0.0f);

        hideAction.AddScorer(scorer_enemySoldierThreatLevel);
        hideAction.SetWeight(3);

        // ****** REGISTER ACTIONS ******
        _AgentActions.Add(roamAction_SearchFarmSpot);
        _AgentActions.Add(farmFieldAction);
        _AgentActions.Add(deliverResourceAction);
        _AgentActions.Add(eatFoodAction);
        _AgentActions.Add(sleepRestAction);
        _AgentActions.Add(hideAction);
    }
コード例 #8
0
    private int GetGridIndexOfScreenCenter()
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;
        Vector3   position = this.farmCamera.transform.localPosition + FarmUtility.GetDistanceToGround();

        FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(position);
        return(field.Grid.GetGridIndex(gridPosition));
    }
コード例 #9
0
    public void CancelMove()
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        this.farmObject.DisplayedInFront(false);
        this.farmObject.ResetPosition();
        field.SetGridPutFlag(this.farmObject, true);
        this.EndSetting(false);
    }
コード例 #10
0
    public IEnumerator Walk()
    {
        FarmRoot      farmRoot  = FarmRoot.Instance;
        FarmField     farmField = farmRoot.Field;
        FarmDigimonAI ai        = base.GetComponent <FarmDigimonAI>();

        FarmDigimonAI.ActionParam param = ai.GetActionParam();
        float speed = 1.6f;

        if (param.pathGridIndexs != null && 0 < param.pathGridIndexs.Length)
        {
            int nowIndex   = param.pathGridIndexs.Length;
            int checkIndex = 0;
            while (checkIndex < nowIndex)
            {
                Vector3 digimonPos3D = base.transform.localPosition;
                digimonPos3D.y = 0f;
                int     gridIndex = param.pathGridIndexs[checkIndex];
                Vector3 gridPos3D = farmField.Grid.GetPositionGridCenter(gridIndex, false);
                gridPos3D.y = 0f;
                Vector3 rayDirection = gridPos3D - digimonPos3D;
                digimonPos3D.y = farmRoot.transform.localPosition.y + 0.1f;
                gridPos3D.y    = farmRoot.transform.localPosition.y + 0.1f;
                if (!Physics.Raycast(digimonPos3D, rayDirection, rayDirection.magnitude, this.MASK_LAYER))
                {
                    digimonPos3D.y = 0f;
                    gridPos3D.y    = 0f;
                    Vector3 digimonDirection      = Quaternion.AngleAxis(base.transform.localEulerAngles.y, Vector3.up) * Vector3.forward;
                    float   angle                 = Vector3.Angle(digimonDirection, rayDirection);
                    Vector3 digimonRightDirection = Quaternion.AngleAxis(90f, Vector3.up) * digimonDirection;
                    if (0f > Vector3.Dot(digimonRightDirection, rayDirection))
                    {
                        angle *= -1f;
                    }
                    this.enumerator = this.Turn(angle, speed);
                    Coroutine coroutine = base.StartCoroutine(this.enumerator);
                    if (40f <= Mathf.Abs(angle))
                    {
                        yield return(coroutine);
                    }
                    this.enumerator = this.Movement(digimonPos3D, gridPos3D, speed);
                    yield return(base.StartCoroutine(this.enumerator));

                    this.enumerator = null;
                    nowIndex        = checkIndex;
                    checkIndex      = 0;
                }
                else
                {
                    checkIndex += Mathf.Max(1, (nowIndex - checkIndex) / 2);
                }
            }
        }
        yield break;
    }
コード例 #11
0
    public virtual void SetSettingMark(FarmField farmField, FarmSettingMark mark)
    {
        mark.SetParent(base.gameObject);
        Vector2 gridSize = new Vector2(farmField.gridHorizontal, farmField.gridVertical);

        mark.SetSize(this.sizeX, this.sizeY, gridSize);
        if (null != this.floorObject)
        {
            this.floorObject.SetActive(false);
        }
    }
コード例 #12
0
    public IEnumerator SaveEdit(Action <bool> completed)
    {
        FarmRoot  farmRoot  = FarmRoot.Instance;
        FarmField farmField = farmRoot.Field;
        List <FacilityPosition> facilityPositions = new List <FacilityPosition>();

        for (int i = 0; i < this.farmObjects.Count; i++)
        {
            FarmObject            farmObject   = this.farmObjects[i];
            FarmGrid.GridPosition gridPosition = farmField.Grid.GetGridPosition(farmObject.GetBaseGridPosition3D());
            FacilityPosition      item         = new FacilityPosition
            {
                userFacilityId = farmObject.userFacilityID,
                positionX      = gridPosition.x,
                positionY      = gridPosition.y
            };
            facilityPositions.Add(item);
        }
        RestrictionInput.StartLoad(RestrictionInput.LoadType.LARGE_IMAGE_MASK_ON);
        RequestFA_FacilityAllArrangement request = new RequestFA_FacilityAllArrangement
        {
            SetSendData = delegate(FacilityAllArrangement param)
            {
                param.userFacilityList = facilityPositions.ToArray();
            },
            OnReceived = delegate(WebAPI.ResponseData response)
            {
                for (int j = 0; j < facilityPositions.Count; j++)
                {
                    FacilityPosition facilityPosition = facilityPositions[j];
                    UserFacility     userFacility     = Singleton <UserDataMng> .Instance.GetUserFacility(facilityPosition.userFacilityId);

                    if (userFacility != null)
                    {
                        userFacility.positionX = facilityPosition.positionX;
                        userFacility.positionY = facilityPosition.positionY;
                    }
                }
                if (completed != null)
                {
                    completed(true);
                }
            }
        };
        RequestBase request2 = request;

        if (FarmScenery.< > f__mg$cache0 == null)
        {
            FarmScenery.< > f__mg$cache0 = new Action(RestrictionInput.EndLoad);
        }
        yield return(base.StartCoroutine(request2.Run(FarmScenery.< > f__mg$cache0, null, null)));

        yield break;
    }
コード例 #13
0
    public APIRequestTask SaveStockFarmObjectPosition(int userFacilityId, Action <int> complated)
    {
        RequestFA_FacilityStock request = new RequestFA_FacilityStock
        {
            SetSendData = delegate(FacilityStock param)
            {
                param.userFacilityId = userFacilityId;
                param.stockFlg       = 0;
            },
            OnReceived = delegate(FacilityStockResult response)
            {
                UserFacility userStockFacility = Singleton <UserDataMng> .Instance.GetUserStockFacility(userFacilityId);

                Singleton <UserDataMng> .Instance.DeleteUserStockFacility(userFacilityId);

                Singleton <UserDataMng> .Instance.AddUserFacility(userStockFacility);
            }
        };
        RequestFA_FacilityMoving request2 = new RequestFA_FacilityMoving
        {
            SetSendData = delegate(FacilityMoving param)
            {
                FarmRoot              instance     = FarmRoot.Instance;
                FarmField             field        = instance.Field;
                FarmObjectSetting     component    = this.GetComponent <FarmObjectSetting>();
                FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(component.farmObject.GetBaseGridPosition3D());
                param.userFacilityId = userFacilityId;
                param.positionX      = gridPosition.x;
                param.positionY      = gridPosition.y;
            },
            OnReceived = delegate(WebAPI.ResponseData response)
            {
                FarmRoot              instance     = FarmRoot.Instance;
                FarmField             field        = instance.Field;
                FarmObjectSetting     component    = this.GetComponent <FarmObjectSetting>();
                FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(component.farmObject.GetBaseGridPosition3D());
                UserFacility          userFacility = Singleton <UserDataMng> .Instance.GetUserFacility(userFacilityId);

                userFacility.positionX = gridPosition.x;
                userFacility.positionY = gridPosition.y;
                this.SaveResponseToStockToFarmFacility(userFacilityId);
                if (complated != null)
                {
                    complated(userFacilityId);
                }
            }
        };
        APIRequestTask apirequestTask = new APIRequestTask(request, true);
        APIRequestTask task           = new APIRequestTask(request2, true);

        apirequestTask.Add(task);
        return(apirequestTask);
    }
コード例 #14
0
    public static int GetPassableGridIndex()
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        int[] passableGridIndexs = field.Grid.GetPassableGridIndexs();
        if (0 < passableGridIndexs.Length)
        {
            int num = UnityEngine.Random.Range(0, passableGridIndexs.Length);
            return(passableGridIndexs[num]);
        }
        return(-1);
    }
コード例 #15
0
    public FarmGrid.GridPosition ComplatedSetting()
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        this.farmObject.DisplayedInFront(false);
        FarmGrid.GridPosition result = field.SetGridPutFlag(this.farmObject, true);
        if (this.farmObject.facilityID == 11)
        {
            FarmRoot.Instance.ResetSetteingFence();
        }
        this.EndSetting(false);
        return(result);
    }
コード例 #16
0
    public void SetMoveFarmObject(FarmObject farmObject)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        this.farmObject  = farmObject;
        this.settingMode = FarmObjectSetting.SettingMode.MOVE;
        this.farmObject.SetSettingMark(field, instance.SettingMark);
        this.farmObject.SetPlaceable(true);
        farmObject.BackupPosition();
        field.SetGridPutFlag(this.farmObject, false);
        this.farmObject.DisplayedInFront(true);
        instance.Input.AddTouchDragEvent(new Func <InputControll, bool>(this.OnDrag));
    }
コード例 #17
0
    public bool IsInvalidGrid(FarmField farmField, int[] gridIndexs)
    {
        bool result = false;

        FarmField.Field field = farmField.GetField();
        foreach (int num in gridIndexs)
        {
            if (0 > num || field.grids.Count <= num || field.grids[num].invalid)
            {
                result = true;
                break;
            }
        }
        return(result);
    }
コード例 #18
0
    private Vector3 GetGridPosition3D(Vector3 pos)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;
        float     num      = field.gridHorizontal * (float)this.baseGridPositionX + 0.5f * field.gridHorizontal;
        float     num2     = field.gridVertical * (float)this.baseGridPositionY + 0.5f * field.gridVertical;
        float     num3     = 0.5f * (float)this.sizeX * field.gridHorizontal;
        float     num4     = 0.5f * (float)this.sizeY * field.gridVertical;
        Vector3   result   = pos;

        result.x -= num3 - num;
        result.y  = 0f;
        result.z += num4 - num2;
        return(result);
    }
コード例 #19
0
    public static int ChooseAroundGridIndex(FarmObject farmObject)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(farmObject.transform.localPosition);
        int[] gridIndexs         = farmObject.GetGridIndexs(field.GetField(), field.Grid.GetGridIndex(gridPosition));
        int[] aroundGridIndexs   = FarmDigimonUtility.GetAroundGridIndexs(gridIndexs);
        int[] passableGridIndexs = field.Grid.GetPassableGridIndexs(aroundGridIndexs);
        if (0 < passableGridIndexs.Length)
        {
            int num = UnityEngine.Random.Range(0, passableGridIndexs.Length);
            return(passableGridIndexs[num]);
        }
        return(-1);
    }
コード例 #20
0
    public override void SetSettingMark(FarmField farmField, FarmSettingMark mark)
    {
        mark.SetParent(base.gameObject);
        Vector2 gridSize = new Vector2(farmField.gridHorizontal, farmField.gridVertical);

        mark.SetSize(this.sizeX, this.sizeY, gridSize);
        if (null != this.floorObject)
        {
            Transform transform = this.floorObject.transform;
            this.originalScale = transform.localScale;
            Vector3 localScale = new Vector3(this.originalScale.x * this.movingScale.x, this.originalScale.y * this.movingScale.y, this.originalScale.z * this.movingScale.z);
            transform.localScale    = localScale;
            this.originalPosition   = transform.localPosition;
            transform.localPosition = this.movingPos;
        }
    }
コード例 #21
0
    public IEnumerator InitializeFarmObjectParallelRead()
    {
        FarmRoot  farmRoot  = FarmRoot.Instance;
        FarmField farmField = farmRoot.Field;

        farmField.ClearPutFlag();
        List <UserFacility> userFacilitys = Singleton <UserDataMng> .Instance.GetUserFacilityList();

        int num = userFacilitys.Count / 6;

        if (0 < userFacilitys.Count - 6 * num)
        {
            num++;
        }
        List <UserFacility[]> readFacility = new List <UserFacility[]>();

        for (int j = 0; j < 6; j++)
        {
            readFacility.Add(new UserFacility[num]);
        }
        int parallelIndex = 0;
        int dataIndex     = 0;

        for (int k = 0; k < userFacilitys.Count; k++)
        {
            UserFacility[] array = readFacility[parallelIndex];
            array[dataIndex] = userFacilitys[k];
            parallelIndex++;
            if (6 <= parallelIndex)
            {
                parallelIndex = 0;
                dataIndex++;
            }
        }
        Coroutine[] coroutineList = new Coroutine[6];
        for (int l = 0; l < 6; l++)
        {
            coroutineList[l] = base.StartCoroutine(this.ReadFacility(readFacility[l]));
        }
        for (int i = 0; i < 6; i++)
        {
            yield return(coroutineList[i]);
        }
        farmRoot.ResetSetteingFence();
        yield break;
    }
コード例 #22
0
    private IEnumerator HitCheckBuild()
    {
        FarmRoot             farmRoot  = FarmRoot.Instance;
        FarmField            farmField = farmRoot.Field;
        List <FarmGrid.Grid> grids     = farmField.GetField().grids;

        while (base.gameObject.activeSelf)
        {
            while (!this.digimon.activeSelf)
            {
                yield return(new WaitForSeconds(1f));
            }
            while (!this.CheckHitBuild(farmField.Grid, grids))
            {
                yield return(new WaitForSeconds(0.5f));
            }
        }
        yield break;
    }
コード例 #23
0
    public void ResumeFarmObject()
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        field.ClearPutFlag();
        List <UserFacility> userFacilityList = Singleton <UserDataMng> .Instance.GetUserFacilityList();

        for (int i = 0; i < userFacilityList.Count; i++)
        {
            UserFacility userFacility = userFacilityList[i];
            FarmObject   farmObject   = this.FindFarmObjectByUserFacilityId(userFacility.userFacilityId);
            if (null != farmObject)
            {
                this.SetFarmObjectParam(farmObject, userFacility);
            }
        }
        instance.ResetSetteingFence();
    }
コード例 #24
0
    private void SetFarmObjectParam(FarmObject farmObject, UserFacility userFacility)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        FarmGrid.GridPosition gridPosition = new FarmGrid.GridPosition
        {
            x = userFacility.positionX,
            y = userFacility.positionY
        };
        int     gridIndex          = field.Grid.GetGridIndex(gridPosition);
        Vector3 positionGridCenter = field.Grid.GetPositionGridCenter(gridIndex, false);

        farmObject.SetPosition(field.gridHorizontal, field.gridVertical, positionGridCenter);
        field.SetPutFlag(farmObject, gridPosition.x, gridPosition.y, true);
        if (!string.IsNullOrEmpty(userFacility.completeTime))
        {
            this.StartConstruction(userFacility.userFacilityId);
        }
    }
コード例 #25
0
    private IEnumerator SaveFarmObjectMove()
    {
        FarmRoot          farmRoot          = FarmRoot.Instance;
        FarmField         farmField         = farmRoot.Field;
        FarmObjectSetting farmObjectSetting = base.GetComponent <FarmObjectSetting>();

        FarmGrid.GridPosition gridPosition       = farmField.Grid.GetGridPosition(this.farmObject.GetBaseGridPosition3D());
        FarmGrid.GridPosition gridBackupPosition = farmField.Grid.GetGridPosition(this.farmObject.GetBackupGridPosition3D());
        if (gridPosition.x != gridBackupPosition.x || gridPosition.y != gridBackupPosition.y)
        {
            RestrictionInput.StartLoad(RestrictionInput.LoadType.SMALL_IMAGE_MASK_OFF);
            RequestFA_FacilityMoving request = new RequestFA_FacilityMoving
            {
                SetSendData = delegate(FacilityMoving param)
                {
                    param.userFacilityId = this.farmObject.userFacilityID;
                    param.positionX      = gridPosition.x;
                    param.positionY      = gridPosition.y;
                },
                OnReceived = delegate(WebAPI.ResponseData response)
                {
                    UserFacility userFacility = Singleton <UserDataMng> .Instance.GetUserFacility(this.farmObject.userFacilityID);

                    userFacility.positionX = gridPosition.x;
                    userFacility.positionY = gridPosition.y;
                }
            };
            yield return(base.StartCoroutine(request.Run(delegate()
            {
                RestrictionInput.EndLoad();
                this.MoveComplate(farmRoot, farmObjectSetting);
            }, null, null)));
        }
        else
        {
            this.MoveComplate(farmRoot, farmObjectSetting);
        }
        yield break;
    }
コード例 #26
0
 public bool OnDrag(InputControll inputControll)
 {
     if (this.farmObject.gameObject == inputControll.rayHitColliderObject)
     {
         FarmRoot  instance = FarmRoot.Instance;
         FarmField field    = instance.Field;
         if (field.Grid.isSelectedGrid)
         {
             FarmField.Field field2     = field.GetField();
             int[]           gridIndexs = this.farmObject.GetGridIndexs(field2, field.Grid.selectedGridIndex);
             if (!this.farmObject.IsInvalidGrid(field, gridIndexs))
             {
                 this.farmObject.SetPosition(field.gridHorizontal, field.gridVertical, field.Grid.GetPositionGridCenter(field.Grid.selectedGridIndex, false));
                 this.farmObject.DisplayedInFront(true);
                 bool placeable = false == this.farmObject.IsPutGrid(field2, gridIndexs);
                 this.farmObject.SetPlaceable(placeable);
             }
         }
         return(true);
     }
     return(false);
 }
コード例 #27
0
    public static int[] GetAroundGridIndexs(int[] gridIndexs)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;
        List <FarmGrid.GridPosition> list = new List <FarmGrid.GridPosition>();
        List <int> list2 = new List <int>();

        for (int i = 0; i < gridIndexs.Length; i++)
        {
            FarmGrid.GridPosition item = field.Grid.IndexToPosition(gridIndexs[i]);
            list.Add(item);
        }
        for (int j = 0; j < list.Count; j++)
        {
            FarmGrid.GridPosition gridPosition = list[j];
            int index = field.Grid.GetGridIndex(gridPosition.x - 1, gridPosition.y);
            if (index != -1 && !gridIndexs.Any((int x) => x == index) && !list2.Any((int x) => x == index))
            {
                list2.Add(index);
            }
            index = field.Grid.GetGridIndex(gridPosition.x + 1, gridPosition.y);
            if (index != -1 && !gridIndexs.Any((int x) => x == index) && !list2.Any((int x) => x == index))
            {
                list2.Add(index);
            }
            index = field.Grid.GetGridIndex(gridPosition.x, gridPosition.y - 1);
            if (index != -1 && !gridIndexs.Any((int x) => x == index) && !list2.Any((int x) => x == index))
            {
                list2.Add(index);
            }
            index = field.Grid.GetGridIndex(gridPosition.x, gridPosition.y + 1);
            if (index != -1 && !gridIndexs.Any((int x) => x == index) && !list2.Any((int x) => x == index))
            {
                list2.Add(index);
            }
        }
        return(list2.ToArray());
    }
コード例 #28
0
    public bool SetEditFarmObject(FarmObject farmObject, Vector3 basePos3D)
    {
        FarmRoot  instance = FarmRoot.Instance;
        FarmField field    = instance.Field;

        FarmField.Field field2 = field.GetField();
        this.farmObject  = farmObject;
        this.settingMode = FarmObjectSetting.SettingMode.EDIT;
        FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(basePos3D);
        bool flag = field.IsOutsideField(gridPosition);

        if (flag)
        {
            gridPosition = field.Grid.GetGridPosition(Vector3.zero);
        }
        int     gridIndex          = field.Grid.GetGridIndex(gridPosition);
        Vector3 positionGridCenter = field.Grid.GetPositionGridCenter(gridIndex, false);

        this.farmObject.SetPosition(field.gridHorizontal, field.gridVertical, positionGridCenter);
        this.farmObject.DisplayedInFront(true);
        int[] gridIndexs = this.farmObject.GetGridIndexs(field2, gridIndex);
        this.farmObject.isPlaceable = (!this.farmObject.IsInvalidGrid(field, gridIndexs) && !this.farmObject.IsPutGrid(field2, gridIndexs));
        return(flag);
    }
コード例 #29
0
    public bool SetFarmObject(FarmObject farmObject, Vector3 basePos3D)
    {
        FarmField field = FarmRoot.Instance.Field;

        this.farmObject  = farmObject;
        this.settingMode = FarmObjectSetting.SettingMode.BUILD;
        this.farmObject.SetSettingMark(field, FarmRoot.Instance.SettingMark);
        FarmGrid.GridPosition gridPosition = field.Grid.GetGridPosition(basePos3D);
        bool flag = field.IsOutsideField(gridPosition);

        if (flag)
        {
            gridPosition = field.Grid.GetGridPosition(Vector3.zero);
        }
        int     gridIndex          = field.Grid.GetGridIndex(gridPosition);
        Vector3 positionGridCenter = field.Grid.GetPositionGridCenter(gridIndex, false);

        this.farmObject.SetPosition(field.gridHorizontal, field.gridVertical, positionGridCenter);
        this.farmObject.DisplayedInFront(true);
        FarmField.Field field2 = field.GetField();
        this.farmObject.SetMarkColor(field2, gridIndex);
        FarmRoot.Instance.Input.AddTouchDragEvent(new Func <InputControll, bool>(this.OnDrag));
        return(flag);
    }
コード例 #30
0
 public FarmGrid(FarmField farmField)
 {
     this.farmField = farmField;
 }