Esempio n. 1
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static string Restore(SiteSettings ss)
 {
     if (ss.CanManageSite())
     {
         var selector = new GridSelector();
         var count    = 0;
         if (selector.All)
         {
             count = Restore(ss, selector.Selected, negative: true);
         }
         else
         {
             if (selector.Selected.Any())
             {
                 count = Restore(ss, selector.Selected);
             }
             else
             {
                 return(Messages.ResponseSelectTargets().ToJson());
             }
         }
         Summaries.Synchronize(ss);
         return("");
     }
     else
     {
         return(Messages.ResponseHasNotPermission().ToJson());
     }
 }
Esempio n. 2
0
    private bool PlantAction(Inventory userInventory)
    {
        GridSelector gridSelector      = userInventory.GetComponent <GridSelector>();
        Vector3Int   selectionLocation = gridSelector.GetGridSelectionPosition();

        Vector3 loc = gridSelector.GetGridWorldSelectionPosition();

        RaycastHit2D[] findObjects = Physics2D.BoxCastAll(loc, gridManager.Grid.cellSize * 0.5f, 0, Vector2.zero, 50);

        // In case there is already a crop on this location, return.
        for (int i = 0; i < findObjects.Length; i++)
        {
            if (findObjects[i].transform.CompareTag("Crop"))
            {
                return(false);
            }
        }

        if (gridManager.HasDirtHole(selectionLocation))
        {
            GameObject gameObject = plantablePrefab.Retrieve <GameObject>();
            gameObject.transform.position = gridManager.GetWorldLocation(selectionLocation);
            return(true);
        }
        else
        {
            return(false);
        }
    }
Esempio n. 3
0
    public override IEnumerator ItemUseAction(Inventory userInventory, int itemIndex)
    {
        GridSelector gridSelector = userInventory.GetComponent <GridSelector>();

        if (gridManager == null)
        {
            gridManager = gridManagerReference.Reference?.GetComponent <GridManager>();
        }

        if (gridManager != null)
        {
            if (weatherEvent.HasParameter)
            {
                currentWeather = weatherEvent.LastParameter;
            }
        }

        if (gridSelector != null && gridManager != null)
        {
            Vector3Int selectionLocation = gridSelector.GetGridSelectionPosition();

            userInventory.GetComponent <Aimer>().LookAt(gridManager.Grid.CellToWorld(selectionLocation));

            Mover getMover = userInventory.GetComponent <Mover>();
            getMover?.FreezeMovement(true);

            BodyAnimation[] getEntityAnimator = userInventory.GetComponentsInChildren <BodyAnimation>();

            float animationTime = 0;

            for (int i = 0; i < getEntityAnimator.Length; i++)
            {
                animationTime = getEntityAnimator[i].ApplySmashAnimation(speed, userInventory.GetItem(itemIndex).Data.Icon);
            }

            gridSelector.SetFrozen(true);

            yield return(new WaitForSeconds(animationTime * 0.5f));

            if (!gridManager.HasDirtHole(selectionLocation) && !gridManager.HasWater(selectionLocation) && gridManager.HasDirt(selectionLocation))
            {
                gridManager.SetDirtHoleTile(selectionLocation);

                if (currentWeather == EWeather.Rainy)
                {
                    gridManager.SetWateredDirtTile(selectionLocation);
                }

                onSuccess.Invoke();
            }

            yield return(new WaitForSeconds(animationTime * 0.5f));

            getMover.FreezeMovement(false);
            gridSelector.SetFrozen(false);
        }
    }
    private void Awake()
    {
        localFillTimeout = .1f;
        elapsed          = fillTimeout;

        colorScheme    = ColorScheme.instance;
        gameController = GameController.instance;
        colorPicker    = GetComponent <ColorPicker>();

        gridSelector = new GridSelector(grid);
        gridSelector.bombSelected += makeBoom;
    }
Esempio n. 5
0
 public static string DeleteHistory(IContext context, SiteSettings ss, long wikiId)
 {
     if (!Parameters.History.PhysicalDelete)
     {
         return(Error.Types.InvalidRequest.MessageJson(context: context));
     }
     if (context.CanManageSite(ss: ss))
     {
         var selector = new GridSelector(context: context);
         var selected = selector
                        .Selected
                        .Select(o => o.ToInt())
                        .ToList();
         var count = 0;
         if (selector.All)
         {
             count = DeleteHistory(
                 context: context,
                 ss: ss,
                 wikiId: wikiId,
                 selected: selected,
                 negative: true);
         }
         else
         {
             if (selector.Selected.Any())
             {
                 count = DeleteHistory(
                     context: context,
                     ss: ss,
                     wikiId: wikiId,
                     selected: selected);
             }
             else
             {
                 return(Messages.ResponseSelectTargets(context: context).ToJson());
             }
         }
         return(Histories(
                    context: context,
                    ss: ss,
                    wikiId: wikiId,
                    message: Messages.HistoryDeleted(
                        context: context,
                        data: count.ToString())));
     }
     else
     {
         return(Messages.ResponseHasNotPermission(context: context).ToJson());
     }
 }
Esempio n. 6
0
 public static HtmlBuilder GridRows(
     this HtmlBuilder hb,
     Context context,
     SiteSettings ss,
     IEnumerable <Column> columns,
     EnumerableRowCollection <DataRow> dataRows,
     FormDataSet formDataSet   = null,
     GridSelector gridSelector = null,
     bool editRow  = false,
     bool checkRow = true)
 {
     dataRows.ForEach(dataRow =>
                      hb.Tr(
                          context: context,
                          ss: ss,
                          dataRow: dataRow,
                          columns: columns,
                          gridSelector: new GridSelector(context),
                          editRow: editRow,
                          checkRow: checkRow,
                          idColumn: Rds.IdColumn(ss.ReferenceType),
                          formDataSet: formDataSet));
     return(hb);
 }
Esempio n. 7
0
    public override IEnumerator ItemUseAction(Inventory userInventory, int itemIndex)
    {
        InventoryItem getInventoryItem = userInventory.GetItem(itemIndex);

        GridSelector gridSelector = userInventory.GetComponent <GridSelector>();

        if (gridManager == null)
        {
            gridManager = gridManagerReference.Reference?.GetComponent <GridManager>();
        }

        if (gridSelector != null && gridManager != null)
        {
            Vector3Int location = gridSelector.GetGridSelectionPosition();

            userInventory.GetComponent <Aimer>().LookAt(gridManager.Grid.CellToWorld(location));

            Mover getMover = userInventory.GetComponent <Mover>();
            getMover?.FreezeMovement(true);

            BodyAnimation[] getEntityAnimator = userInventory.GetComponentsInChildren <BodyAnimation>();

            float animationTime = 0;

            for (int i = 0; i < getEntityAnimator.Length; i++)
            {
                animationTime = getEntityAnimator[i].ApplyDropAnimation(speed, userInventory.GetItem(itemIndex).Data.Icon);
            }

            gridSelector.SetFrozen(true);

            yield return(new WaitForSeconds(animationTime * 0.5f));

            if (!gridManager.HasWater(location))
            {
                if (!gridManager.HasWateredDirt(location) && gridManager.HasDirtHole(location))
                {
                    ItemEnergy currentItemEnergy = getInventoryItem.Energy;

                    if (currentItemEnergy.current >= energyCost)
                    {
                        gridManager.SetWateredDirtTile(location);

                        float newEnergy = currentItemEnergy.current - energyCost;
                        if (newEnergy < energyCost)
                        {
                            newEnergy = 0;
                        }

                        getInventoryItem.Energy = new ItemEnergy()
                        {
                            min     = currentItemEnergy.min,
                            max     = currentItemEnergy.max,
                            current = newEnergy
                        };

                        // Also do a sphere cast to ensure that any Day Count Listener is no longer frozen
                        // It becomes frozen when there is no watered ground, meaning the plant growth will stagnate.

                        Vector3 loc = gridSelector.GetGridWorldSelectionPosition();

                        RaycastHit2D[] findObjects = Physics2D.BoxCastAll(loc, gridManager.Grid.cellSize * 0.5f, 0, Vector2.zero, 50);

                        for (int i = 0; i < findObjects.Length; i++)
                        {
                            if (findObjects[i].transform.CompareTag("Crop"))
                            {
                                findObjects[i].transform?.GetComponent <DayCountDownListener>()?.FreezeCountDown(false);
                            }
                        }

                        OnWateredGround.Invoke();

                        userInventory.ReloadItemSlot(itemIndex);
                    }
                }
            }
            else
            {
                ItemEnergy currentItemEnergy = getInventoryItem.Energy;

                getInventoryItem.Energy = new ItemEnergy()
                {
                    min     = currentItemEnergy.min,
                    max     = currentItemEnergy.max,
                    current = Mathf.Clamp(currentItemEnergy.current + waterEnergyRecovery, currentItemEnergy.min, currentItemEnergy.max)
                };

                OnObtainedWater.Invoke();

                userInventory.ReloadItemSlot(itemIndex);
            }

            yield return(new WaitForSeconds(animationTime * 0.5f));

            getMover.FreezeMovement(false);
            gridSelector.SetFrozen(false);
        }
    }
Esempio n. 8
0
        public static HtmlBuilder Tr(
            this HtmlBuilder hb,
            Context context,
            SiteSettings ss,
            DataRow dataRow,
            IEnumerable <Column> columns,
            bool editRow,
            bool checkRow,
            string idColumn,
            GridSelector gridSelector = null,
            FormDataSet formDataSet   = null)
        {
            var dataId      = dataRow.Long(idColumn);
            var dataVersion = dataRow.Int("Ver");
            var isHistory   = dataRow.Bool("IsHistory");
            var EditColumns = !isHistory
                ? columns.ToDictionary(
                column => column.ColumnName,
                column => EditColumn(
                    context: context,
                    column: column))
                : new Dictionary <string, bool>();

            return(hb.Tr(
                       attributes: new HtmlAttributes()
                       .Class("grid-row")
                       .DataId(dataId.ToString())
                       .DataVer(dataVersion)
                       .DataLatest(1, _using: !isHistory)
                       .Add(name: "data-history", value: "1", _using: isHistory),
                       action: () =>
            {
                if (editRow)
                {
                    hb.Td(action: () => hb
                          .Button(
                              title: Displays.Reload(context: context),
                              controlCss: "button-icon",
                              onClick: $"$p.getData($(this)).Id={dataId};$p.send($(this));",
                              icon: "ui-icon-refresh",
                              action: "ReloadRow",
                              method: "post",
                              _using: !isHistory)
                          .Button(
                              title: Displays.Copy(context: context),
                              controlCss: "button-icon",
                              onClick: $"$p.getData($(this)).OriginalId={dataId};$p.send($(this));",
                              icon: "ui-icon-copy",
                              action: "CopyRow",
                              method: "post",
                              _using: !isHistory && context.CanCreate(ss: ss))
                          .Hidden(
                              controlId: $"{ss.ReferenceType}_Timestamp_{ss.SiteId}_{dataId}",
                              css: "timestamp",
                              value: dataRow
                              .Field <DateTime>("UpdatedTime")
                              .ToString("yyyy/M/d H:m:s.fff")));
                }
                else if (checkRow)
                {
                    hb.Td(action: () => hb
                          .CheckBox(
                              controlCss: "grid-check",
                              _checked: gridSelector.Checked(dataId),
                              dataId: dataId.ToString(),
                              _using: !isHistory));
                }
                var depts = new Dictionary <string, DeptModel>();
                var groups = new Dictionary <string, GroupModel>();
                var registrations = new Dictionary <string, RegistrationModel>();
                var users = new Dictionary <string, UserModel>();
                var sites = new Dictionary <string, SiteModel>();
                var issues = new Dictionary <string, IssueModel>();
                var results = new Dictionary <string, ResultModel>();
                columns.ForEach(column =>
                {
                    var key = column.TableName();
                    switch (column.SiteSettings?.ReferenceType)
                    {
                    case "Depts":
                        var deptModel = depts.Get(key);
                        if (deptModel == null)
                        {
                            deptModel = new DeptModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                tableAlias: column.TableAlias);
                            depts.Add(key, deptModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: deptModel.Mine(context: context));
                        }
                        hb.TdValue(
                            context: context,
                            ss: column.SiteSettings,
                            column: column,
                            deptModel: deptModel);
                        break;

                    case "Groups":
                        var groupModel = groups.Get(key);
                        if (groupModel == null)
                        {
                            groupModel = new GroupModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                tableAlias: column.TableAlias);
                            groups.Add(key, groupModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: groupModel.Mine(context: context));
                        }
                        hb.TdValue(
                            context: context,
                            ss: column.SiteSettings,
                            column: column,
                            groupModel: groupModel);
                        break;

                    case "Registrations":
                        var registrationModel = registrations.Get(key);
                        if (registrationModel == null)
                        {
                            registrationModel = new RegistrationModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                tableAlias: column.TableAlias);
                            registrations.Add(key, registrationModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: registrationModel.Mine(context: context));
                        }
                        hb.TdValue(
                            context: context,
                            ss: column.SiteSettings,
                            column: column,
                            registrationModel: registrationModel);
                        break;

                    case "Users":
                        var userModel = users.Get(key);
                        if (userModel == null)
                        {
                            userModel = new UserModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                tableAlias: column.TableAlias);
                            users.Add(key, userModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: userModel.Mine(context: context));
                        }
                        hb.TdValue(
                            context: context,
                            ss: column.SiteSettings,
                            column: column,
                            userModel: userModel);
                        break;

                    case "Sites":
                        var siteModel = sites.Get(key);
                        if (siteModel == null)
                        {
                            siteModel = new SiteModel(
                                context: context,
                                dataRow: dataRow,
                                formData: editRow
                                            ? formDataSet?.FirstOrDefault(o =>
                                                                          o.Id == dataRow.Long("SiteId"))?.Data
                                            : null,
                                tableAlias: column.TableAlias);
                            sites.Add(key, siteModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: siteModel.Mine(context: context));
                        }
                        hb.TdValue(
                            context: context,
                            ss: column.SiteSettings,
                            column: column,
                            siteModel: siteModel);
                        break;

                    case "Issues":
                        var issueModel = issues.Get(key);
                        if (issueModel == null)
                        {
                            issueModel = new IssueModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                formData: editRow
                                            ? formDataSet?.FirstOrDefault(o =>
                                                                          o.Id == dataRow.Long("IssueId"))?.Data
                                            : null,
                                tableAlias: column.TableAlias);
                            issues.Add(key, issueModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: issueModel.Mine(context: context));
                        }
                        if (EditColumns.Get(column.ColumnName))
                        {
                            hb.Td(action: () => hb.Field(
                                      context: context,
                                      column: column,
                                      issueModel: issueModel,
                                      ss: column.SiteSettings,
                                      controlOnly: true,
                                      idSuffix: issueModel.IdSuffix()));
                        }
                        else
                        {
                            hb.TdValue(
                                context: context,
                                ss: column.SiteSettings,
                                column: column,
                                issueModel: issueModel);
                        }
                        break;

                    case "Results":
                        var resultModel = results.Get(key);
                        if (resultModel == null)
                        {
                            resultModel = new ResultModel(
                                context: context,
                                ss: column.SiteSettings,
                                dataRow: dataRow,
                                formData: editRow
                                            ? formDataSet?.FirstOrDefault(o =>
                                                                          o.Id == dataRow.Long("ResultId"))?.Data
                                            : null,
                                tableAlias: column.TableAlias);
                            results.Add(key, resultModel);
                            ss.SetColumnAccessControls(
                                context: context,
                                mine: resultModel.Mine(context: context));
                        }
                        if (EditColumns.Get(column.ColumnName))
                        {
                            hb.Td(action: () => hb.Field(
                                      context: context,
                                      column: column,
                                      resultModel: resultModel,
                                      ss: column.SiteSettings,
                                      controlOnly: true,
                                      idSuffix: resultModel.IdSuffix()));
                        }
                        else
                        {
                            hb.TdValue(
                                context: context,
                                ss: column.SiteSettings,
                                column: column,
                                resultModel: resultModel);
                        }
                        break;
                    }
                });
            }));
        }
Esempio n. 9
0
	// Use this for initialization
	void Start () {
		overlay = this.GetComponent<GridOverlay>();
		REF = this;
		terrain = GameObject.FindGameObjectWithTag("Terrain").GetComponent<Terrain>();
	}
Esempio n. 10
0
	// Use this for initialization
	void Start () {
		overlay = this.GetComponent<GridOverlay>();
		REF = this;
	}