コード例 #1
0
        public void RemoveInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv    = c.Cell.ToMPos(map);
                var layer = influence[c.Cell.Layer];
                if (!layer.Contains(uv))
                {
                    continue;
                }

                var temp = layer[uv];
                RemoveInfluenceInner(ref temp, self);
                layer[uv] = temp;

                if (cellTriggerInfluence.TryGetValue(c.Cell, out var triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                CellUpdated?.Invoke(c.Cell);
            }
        }
コード例 #2
0
        public void AddInfluence(Actor self, IOccupySpace ios)
        {
            foreach (var c in ios.OccupiedCells())
            {
                var uv    = c.Cell.ToMPos(map);
                var layer = influence[c.Cell.Layer];
                if (!layer.Contains(uv))
                {
                    continue;
                }

                layer[uv] = new InfluenceNode {
                    Next = layer[uv], SubCell = c.SubCell, Actor = self
                };

                if (cellTriggerInfluence.TryGetValue(c.Cell, out var triggers))
                {
                    foreach (var t in triggers)
                    {
                        t.Dirty = true;
                    }
                }

                CellUpdated?.Invoke(c.Cell);
            }
        }
コード例 #3
0
        /// <summary>
        ///     Online clients cell edit listener
        /// </summary>
        /// <param name="c">CellUpdated Json object</param>
        private void OnlineCellEdited(CellUpdated c)
        {
            Invoke(new MethodInvoker(
                       () =>
            {
                try
                {
                    var updated = _spreadsheet.SetContentsOfCell(c.GetCellName(), c.GetContents());
                    foreach (string cell in updated)
                    {
                        UpdateCell(cell);
                    }

                    if (c.GetCellName() == _selection)
                    {
                        CellSelectionChange(spreadsheetPanel);
                    }
                }
                catch (Exception exception)
                {
                    LabelError.Text    = exception.Message;
                    LabelError.Visible = true;
                }
            }
                       ));
        }
コード例 #4
0
 protected virtual void OnCellUpdated(CellDto e)
 {
     CellUpdated?.Invoke(this, e);
 }