Esempio n. 1
0
        public TrainerPokemonTeamRun(IDataModel model, int start, SortedSpan <int> sources) : base(start, sources)
        {
            this.model = model;

            // trainer format (abbreviated):
            //     0           1       2         3        4-15     16     18      20     22       24          28       32         36          40 total
            // [structType. class. introMusic. sprite. name\"\"12 item1: item2: item3: item4: doubleBattle:: ai:: pokemonCount:: pokemon<>]
            StructType   = 0;
            ElementCount = 1;
            foreach (var source in sources)
            {
                if (!(model.GetNextRun(source) is ITableRun))
                {
                    continue;
                }
                StructType   = model[source - TrainerFormat_PointerOffset];
                ElementCount = model.ReadMultiByteValue(source - TrainerFormat_PointerOffset + TrainerFormat_PokemonCountOffset, 4);
                break;
            }

            var segments = Initialize();

            ElementContent = segments;
            ElementLength  = ElementContent.Sum(segment => segment.Length);
        }
Esempio n. 2
0
 private void ElementContent_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     if (IsEnabled)
     {
         _leftButtonDown = false;
         ElementContent.ReleaseMouseCapture();
     }
 }
Esempio n. 3
0
 /// <summary>
 /// 判断指定位置的元素类型
 /// </summary>
 /// <param name="x">元素所在位置的x</param>
 /// <param name="y">元素所在位置的x</param>
 /// <param name="content">需要比较的类型</param>
 /// <returns>比较结果</returns>
 public bool IsSameContent(int x, int y, ElementContent content)
 {
     if (x >= 0 && x < w && y >= 0 && y < h)
     {
         return(mapArray[x, y].elementContent == content);
     }
     return(false);
 }
Esempio n. 4
0
        private TrainerPokemonTeamRun(IDataModel model, int start, SortedSpan <int> sources, int primarySource) : base(start, sources)
        {
            this.model   = model;
            StructType   = model[primarySource - TrainerFormat_PointerOffset];
            ElementCount = model[primarySource - TrainerFormat_PointerOffset + TrainerFormat_PokemonCountOffset];
            var segments = Initialize();

            ElementContent = segments;
            ElementLength  = ElementContent.Sum(segment => segment.Length);
        }
Esempio n. 5
0
        public IElementContent GetContent(IElementSettings settings, IPageContext pageContext, IUnitOfWork unitOfWork = null)
        {
            // Get album content
            ElementContent content = new ElementContent {
                PartialViewName = "Album"
            };

            // Return result
            return(content);
        }
Esempio n. 6
0
        public ArrayRun GrowBitArraySegment(int bitSegmentIndex, int additionalBytes)
        {
            // all the data has been moved already
            // just return a new ArrayRun with the desired change.
            var content    = ElementContent.ToList();
            var oldSegment = (ArrayRunBitArraySegment)content[bitSegmentIndex];

            content[bitSegmentIndex] = new ArrayRunBitArraySegment(oldSegment.Name, oldSegment.Length + additionalBytes, oldSegment.SourceArrayName);
            return(new ArrayRun(owner, FormatString, LengthFromAnchor, Start, ElementCount, content, PointerSources, PointerSourcesForInnerElements));
        }
Esempio n. 7
0
 private void ElementContent_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     if (IsEnabled)
     {
         IsTabStop = true;
         Focus();
         _leftButtonDown = true;
         ElementContent.CaptureMouse();
         _lastMouseDownPosition = e.GetPosition(ElementRoot);
     }
 }
Esempio n. 8
0
 /// <summary>
 /// Gets the height of the control when expanded
 /// </summary>
 /// <returns>Height</returns>
 private double GetExpandedHeight()
 {
     if (ElementRoot != null)
     {
         return((double)ElementContent.GetValue(Canvas.TopProperty) + (_contentSize.Height + ElementContent.Margin.Top + ElementContent.Margin.Bottom));
     }
     else
     {
         return(0);
     }
 }
Esempio n. 9
0
    /// <summary>
    /// 设置元素类型
    /// </summary>
    /// <param name="index">元素所在位置的一维索引值</param>
    /// <param name="content">需要设置的类型</param>
    /// <returns>设置好的新类型的组件</returns>
    private BaseElement SetElement(int index, ElementContent content)
    {
        int x, y;

        GetPosition(index, out x, out y);
        // 先移除旧的
        GameObject tempGameObject = mapArray[x, y].gameObject;

        Destroy(tempGameObject.GetComponent <BaseElement>());
        // 添加新的游戏物体
        switch (content)
        {
        case ElementContent.Trap:
            mapArray[x, y] = tempGameObject.AddComponent <TrapElement>();
            break;

        case ElementContent.Number:
            mapArray[x, y] = tempGameObject.AddComponent <NumberElement>();
            break;

        case ElementContent.Tool:
            mapArray[x, y] = tempGameObject.AddComponent <ToolElement>();
            break;

        case ElementContent.Gold:
            mapArray[x, y] = tempGameObject.AddComponent <GoldElement>();
            break;

        case ElementContent.Enemy:
            mapArray[x, y] = tempGameObject.AddComponent <EnemyElement>();
            break;

        case ElementContent.Door:
            mapArray[x, y] = tempGameObject.AddComponent <DoorElement>();
            break;

        case ElementContent.BigWall:
            mapArray[x, y] = tempGameObject.AddComponent <BigWallElement>();
            break;

        case ElementContent.SmallWall:
            mapArray[x, y] = tempGameObject.AddComponent <SmallWallElement>();
            break;

        case ElementContent.Exit:
            mapArray[x, y] = tempGameObject.AddComponent <ExitElement>();
            break;

        default:
            break;
        }
        return(mapArray[x, y]);
    }
Esempio n. 10
0
        private string SerializeSingleElementStream()
        {
            Debug.Assert(endStream is FixedLengthStreamStrategy flss && flss.Count == 1);
            var result       = new StringBuilder();
            int offset       = Start;
            var longestLabel = ElementContent.Select(seg => seg.Name.Length).Max();

            for (int i = 0; i < ElementContent.Count; i++)
            {
                var segment  = ElementContent[i];
                var rawValue = model.ReadMultiByteValue(offset, segment.Length);
                var value    = rawValue.ToString();
                if (segment is ArrayRunEnumSegment enumSeg)
                {
                    var options = enumSeg.GetOptions(model).ToList();
                    if (options.Count > rawValue)
                    {
                        value = options[rawValue];
                    }
                }
                else if (segment is ArrayRunTupleSegment tupSeg)
                {
                    value = tupSeg.ToText(model, offset);
                }
                else if (segment is ArrayRunHexSegment hexSeg)
                {
                    value = "0x" + rawValue.ToString("X" + segment.Length * 2);
                }
                else if (segment.Type == ElementContentType.Pointer)
                {
                    var pointerValue = rawValue - BaseModel.PointerOffset;
                    value = $"<{pointerValue:X6}>";
                    if (pointerValue == Pointer.NULL)
                    {
                        value = "<null>";
                    }
                }
                else if (segment.Type == ElementContentType.PCS)
                {
                    value = model.TextConverter.Convert(model, offset, segment.Length);
                }
                var extraWhitespace = new string(' ', longestLabel - segment.Name.Length);
                result.Append($"{segment.Name}:{extraWhitespace} {value}");
                if (i < ElementContent.Count - 1)
                {
                    result.AppendLine();
                }
                offset += segment.Length;
            }
            return(result.ToString());
        }
Esempio n. 11
0
    /// <summary>
    /// 设置元素的类型
    /// </summary>
    /// <param name="index">元素所在位置的一维索引值</param>
    /// <param name="content">需要设置的类型</param>
    /// <returns>设置好的新类型的组件</returns>
    private BaseElement SetElement(int index, ElementContent content)
    {
        int x, y;

        GetPosition(index, out x, out y);
        GameObject tempGo = mapArray[x, y].gameObject; //找到地图里面的物体

        Destroy(tempGo.GetComponent <BaseElement>());  //销毁当前泥土预制体
        switch (content)
        {
        case ElementContent.Number:
            mapArray[x, y] = tempGo.AddComponent <NumberElement>();
            break;

        case ElementContent.Trap:
            mapArray[x, y] = tempGo.AddComponent <TrapElement>();
            break;

        case ElementContent.Tool:
            mapArray[x, y] = tempGo.AddComponent <ToolElement>();
            break;

        case ElementContent.Gold:
            mapArray[x, y] = tempGo.AddComponent <GoldElement>();
            break;

        case ElementContent.Enemy:
            mapArray[x, y] = tempGo.AddComponent <EnemyElement>();
            break;

        case ElementContent.Door:
            mapArray[x, y] = tempGo.AddComponent <DoorElement>();
            break;

        case ElementContent.BigWall:
            mapArray[x, y] = tempGo.AddComponent <BigWallElement>();
            break;

        case ElementContent.SmallWall:
            mapArray[x, y] = tempGo.AddComponent <SmallWallElement>();
            break;

        case ElementContent.Exit:
            mapArray[x, y] = tempGo.AddComponent <ExitElement>();
            break;
        }
        return(mapArray[x, y]);
    }
Esempio n. 12
0
        protected void UpdateVisualState()
        {
            Rect   clipping = new Rect(0, 0, Width, _panelSize.Height);
            double opacity  = (IsEnabled ? 1 : 0.8);

            if (ElementRoot != null)
            {
                ElementBackground.SetValue(Canvas.TopProperty, _panelSize.Height);
                ElementBackground.SetValue(Canvas.LeftProperty, 0d);
                ElementContent.SetValue(Canvas.TopProperty, _panelSize.Height);

                ElementText.Opacity     = opacity;
                ElementCheckBox.Opacity = opacity;
                ElementExpand.IsEnabled = IsEnabled;

                ElementExpand.Cursor = (IsEnabled ? Cursors.Hand : Cursors.Arrow);
                ElementText.Cursor   = ElementExpand.Cursor;

                ElementBackground.Width  = Width;
                ElementBackground.Height = Height - _panelSize.Height;

                clipping = new Rect(0, 0, Width, double.IsNaN(Height) ? _panelSize.Height : Height);
                if (_expanded)
                {
                    ElementBackground.Visibility = Visibility.Visible;
                }
                else if (_expandDirection == 0.0)
                {
                    ElementBackground.Visibility = Visibility.Collapsed;
                }

                ElementClipping.SetValue(RectangleGeometry.RectProperty, clipping);
                ElementText.Text = _text;

                if (_enableCheckbox)
                {
                    ElementCheckBox.IsChecked  = _checked;
                    ElementCheckBox.Visibility = Visibility.Visible;
                }
                else
                {
                    ElementCheckBox.Visibility = Visibility.Collapsed;
                }
            }
        }
 internal XdrBuilder(XmlReader reader, XmlNamespaceManager curmgr, SchemaInfo sinfo, string targetNamspace, XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventhandler)
 {
     this._SchemaInfo = sinfo;
     this._TargetNamespace = targetNamspace;
     this._reader = reader;
     this._CurNsMgr = curmgr;
     this.validationEventHandler = eventhandler;
     this._StateHistory = new HWStack(10);
     this._ElementDef = new ElementContent();
     this._AttributeDef = new AttributeContent();
     this._GroupStack = new HWStack(10);
     this._GroupDef = new GroupContent();
     this._NameTable = nameTable;
     this._SchemaNames = schemaNames;
     this._CurState = S_SchemaEntries[0];
     this.positionInfo = PositionInfo.GetPositionInfo(this._reader);
     this.xmlResolver = new XmlUrlResolver();
 }
Esempio n. 14
0
    private int CreateObstacle(int area, List <int> _avaliableIndex, out ElementContent obstacleType)
    {
        int sx = standAreaW + area * obstacleAreaW;
        int ex = sx + obstacleAreaW - 1;
        int x  = Random.Range(sx, ex);
        int y  = Random.Range(0, h);

        obstacleType = (ElementContent)Random.Range(4, 8);
        switch (obstacleType)
        {
        case ElementContent.Enemy:
            SetElement <EnemyElement>(x, y);
            break;

        case ElementContent.Door:
            SetElement <DoorElement>(x, y);
            break;

        case ElementContent.BigWall:
            SetElement <BigWallElement>(x, y);
            break;

        case ElementContent.SmallWall:
            SetElement <SmallWallElement>(x, y);
            break;
        }
        _avaliableIndex.Remove(GetIndexByPos(x, y));
        for (int j = 0; j < h; j++)
        {
            var index = GetIndexByPos(x, j);
            if (_avaliableIndex.Contains(index))
            {
                SetElement <BigWallElement>(x, j);
                _avaliableIndex.Remove(index);
            }
        }
        return(x);
    }
Esempio n. 15
0
        private IReadOnlyList <AutocompleteItem> GetAutoCompleteOptionsForSingleElementStream(string line, int caretIndex)
        {
            var results = new List <AutocompleteItem>();

            var lineStart = line.Substring(0, caretIndex);
            var lineEnd   = line.Substring(caretIndex);

            if (lineStart.Count(':') != 1)
            {
                return(results);
            }
            var fieldName      = lineStart.Split(':')[0].Trim();
            var currentContent = lineStart.Split(':')[1].Trim();
            var field          = ElementContent.Where(segment => segment.Name == fieldName).FirstOrDefault();

            if (field == null)
            {
                return(null);
            }
            if (field is ArrayRunEnumSegment enumSegment)
            {
                var optionText = enumSegment.GetOptions(model).Where(option => option.MatchesPartial(currentContent));
                results.AddRange(CreateSingleElementEnumAutocompleteOptions(lineEnd, fieldName, optionText));
            }
            else if (field is ArrayRunTupleSegment tupleGroup)
            {
                var tupleTokens = currentContent.Split(" ").ToList();
                Recombine(tupleTokens, "\"", "\"");
                if (tupleTokens[0].StartsWith("("))
                {
                    tupleTokens[0] = tupleTokens[0].Substring(1);
                }
                var visibleTupleElements = tupleGroup.Elements.Where(element => !string.IsNullOrEmpty(element.Name)).ToList();
                if (visibleTupleElements.Count >= tupleTokens.Count)
                {
                    var tupleToken  = visibleTupleElements[tupleTokens.Count - 1];
                    var optionToken = tupleTokens.Last();
                    if (optionToken.StartsWith("\""))
                    {
                        optionToken = optionToken.Substring(1);
                    }
                    if (optionToken.EndsWith("\""))
                    {
                        optionToken = optionToken.Substring(0, optionToken.Length - 1);
                    }
                    tupleTokens = tupleTokens.Take(tupleTokens.Count - 1).ToList();
                    if (!string.IsNullOrEmpty(tupleToken.SourceName))
                    {
                        var optionText = ArrayRunEnumSegment.GetOptions(model, tupleToken.SourceName).Where(option => option.MatchesPartial(optionToken));
                        results.AddRange(CreateTupleEnumSingleElementAutocompleteOptions(fieldName, tupleGroup, tupleTokens, optionText, lineEnd));
                    }
                    else if (tupleToken.BitWidth == 1)
                    {
                        var optionText = new[] { "false", "true" }.Where(option => option.MatchesPartial(optionToken));
                        results.AddRange(CreateTupleEnumSingleElementAutocompleteOptions(fieldName, tupleGroup, tupleTokens, optionText, lineEnd));
                    }
                }
            }

            return(results);
        }
Esempio n. 16
0
        private ArrayRun(IDataModel data, string format, int start, IReadOnlyList <int> pointerSources) : base(start, pointerSources)
        {
            owner        = data;
            FormatString = format;
            SupportsPointersToElements = format.StartsWith(AnchorStart.ToString());
            if (SupportsPointersToElements)
            {
                format = format.Substring(1);
            }
            var closeArray = format.LastIndexOf(ArrayEnd.ToString());

            if (!format.StartsWith(ArrayStart.ToString()) || closeArray == -1)
            {
                throw new ArrayRunParseException($"Array Content must be wrapped in {ArrayStart}{ArrayEnd}.");
            }
            var segments = format.Substring(1, closeArray - 1);
            var length   = format.Substring(closeArray + 1);

            ElementContent = ParseSegments(segments, data);
            if (ElementContent.Count == 0)
            {
                throw new ArrayRunParseException("Array Content must not be empty.");
            }
            ElementLength = ElementContent.Sum(e => e.Length);

            FormatMatchFlags flags = default;

            if (ElementContent.Count == 1)
            {
                flags |= FormatMatchFlags.IsSingleSegment;
            }

            if (length.Length == 0)
            {
                var nextRun = owner.GetNextRun(Start);
                while (nextRun is NoInfoRun && nextRun.Start < owner.Count)
                {
                    nextRun = owner.GetNextRun(nextRun.Start + 1);
                }
                var byteLength   = 0;
                var elementCount = 0;
                while (Start + byteLength + ElementLength <= nextRun.Start && DataMatchesElementFormat(owner, Start + byteLength, ElementContent, flags, nextRun))
                {
                    byteLength += ElementLength;
                    elementCount++;
                }
                LengthFromAnchor = string.Empty;
                ElementCount     = Math.Max(1, elementCount); // if the user said there's a format here, then there is, even if the format it wrong.
            }
            else if (int.TryParse(length, out int result))
            {
                // fixed length is easy
                LengthFromAnchor = string.Empty;
                ElementCount     = Math.Max(1, result);
            }
            else
            {
                LengthFromAnchor = length;
                ElementCount     = Math.Max(1, ParseLengthFromAnchor());
            }

            Length = ElementLength * ElementCount;
        }
Esempio n. 17
0
        protected override void Seed(NeuCMS.Repositories.EntityFramework.ContentRepository context)
        {
            var nameSpace = new NameSpace()
            {
                Id            = 1,
                Description   = "Sample NeuCMS Content Data",
                NameSpaceName = "NeuCMS.Samples"
            };

            context.NameSpaces.AddOrUpdate(
                n => n.Id,
                nameSpace);

            var contentDef1 = new ContentDefinition()
            {
                Id                  = 1,
                Name                = "Message",
                NameSpace           = nameSpace,
                AvailableOnAllViews = false
            };

            var contentDef2 = new ContentDefinition()
            {
                Id                  = 2,
                Name                = "Image",
                NameSpace           = nameSpace,
                AvailableOnAllViews = false
            };

            var view = new View()
            {
                Id                 = 1,
                NameSpace          = nameSpace,
                ViewName           = "Home",
                ContentDefinitions = new List <ContentDefinition>()
                {
                    contentDef1,
                    contentDef2
                }
            };

            var dimDef = new DimensionDefinition()
            {
                Id = 1, DimensionName = "Language", NameSpace = nameSpace
            };

            var elementContent = new ElementContent()
            {
                Id      = 1,
                Content = "Hello World!",
                ContentElementDefinition = view.ContentDefinitions[0],
                Dimensions = new List <DimensionValue>()
                {
                    new DimensionValue()
                    {
                        Id = 1,
                        DimensionDefinition = dimDef,
                        Value = "English"
                    }
                }
            };

            var converter = new ImageConverter();
            var imgBytes  = (byte[])converter.ConvertTo(TestData.Test, typeof(byte[]));

            var mediaContent = new MediaContent()
            {
                Id = 2,
                ContentElementDefinition = view.ContentDefinitions[1],
                Dimensions = new List <DimensionValue>()
                {
                    new DimensionValue()
                    {
                        Id = 1,
                        DimensionDefinition = dimDef,
                        Value = "English"
                    }
                },
                DigitalAsset = new DigitalAsset()
                {
                    Id          = 1,
                    ContentType = "image/jpeg",
                    Data        = imgBytes
                }
            };

            context.Views.AddOrUpdate(v => v.Id, view);
            context.ContentDefinitions.AddOrUpdate(c => c.Name, contentDef1);
            context.DimensionDefinitions.AddOrUpdate(d => d.DimensionName, dimDef);
            context.Contents.AddOrUpdate(c => c.Id, elementContent);
            context.Contents.AddOrUpdate(c => c.Id, mediaContent);
        }
Esempio n. 18
0
 //=========================================================================================
 public SingleElement(ElementContent content)
     : base(null)
 {
     this.Content = content;
     this.Text    = string.Empty;
 }
Esempio n. 19
0
 //=========================================================================================
 public SingleElement(string text)
     : base(null)
 {
     this.Content = ElementContent.Specified;
     this.Text    = text;
 }
Esempio n. 20
0
    private void CreateTool(int _area, List <int> _avaliableIndex, ElementContent _elementContent)
    {
        int sx, ex;

        _area -= 1;
        if (_area < 0)
        {
            sx = 0;
            ex = standAreaW - 1;
        }
        else
        {
            sx = standAreaW + _area * obstacleAreaW;
            ex = sx + obstacleAreaW - 1;
        }

        int index = -1;

        for (int i = 0; i < 10; i++)
        {
            int ranX      = Random.Range(sx, ex + 1);
            int ranY      = Random.Range(0, h);
            int tempIndex = GetIndexByPos(ranX, ranY);
            if (_avaliableIndex.Contains(tempIndex))
            {
                index = tempIndex;
                break;
            }
        }

        if (index < 0)
        {
            List <int> randomList = new List <int>();
            for (int y = 0; y < h; y++)
            {
                for (int x = sx; x < ex; x++)
                {
                    int tempIndex = GetIndexByPos(x, y);
                    if (_avaliableIndex.Contains(tempIndex))
                    {
                        randomList.Add(tempIndex);
                    }
                }
            }
            if (randomList.Count <= 0)
            {
                CreateTool(_area, _avaliableIndex, _elementContent);
                return;
            }
            else
            {
                index = randomList[Random.Range(0, randomList.Count)];
            }
        }

        if (index >= 0)
        {
            _avaliableIndex.Remove(index);
            ToolType    tt   = (ToolType)_elementContent;
            ToolElement tool = SetElement <ToolElement>(index);
            tool.ReOnInit(tt);
        }
    }
Esempio n. 21
0
		//=========================================================================================
		public SingleElement(string text)
			: base(null)
		{
			this.Content = ElementContent.Specified;
			this.Text = text;
		}
Esempio n. 22
0
		//=========================================================================================
		public SingleElement(ElementContent content)
			: base(null)
		{
			this.Content = content;
			this.Text = string.Empty;
		}
Esempio n. 23
0
 public bool DependsOn(string anchorName)
 {
     return(ElementContent.OfType <ArrayRunEnumSegment>().Any(segment => segment.EnumName == anchorName));
 }
Esempio n. 24
-1
 internal XdrBuilder(
                    XmlReader reader,
                    XmlNamespaceManager curmgr,
                    SchemaInfo sinfo,
                    string targetNamspace,
                    XmlNameTable nameTable,
                    SchemaNames schemaNames,
                    ValidationEventHandler eventhandler
                    )
 {
     _SchemaInfo = sinfo;
     _TargetNamespace = targetNamspace;
     _reader = reader;
     _CurNsMgr = curmgr;
     _validationEventHandler = eventhandler;
     _StateHistory = new HWStack(StackIncrement);
     _ElementDef = new ElementContent();
     _AttributeDef = new AttributeContent();
     _GroupStack = new HWStack(StackIncrement);
     _GroupDef = new GroupContent();
     _NameTable = nameTable;
     _SchemaNames = schemaNames;
     _CurState = s_schemaEntries[0];
     _positionInfo = PositionInfo.GetPositionInfo(_reader);
     _xmlResolver = null;
 }