GetNumObjects() public method

public GetNumObjects ( ) : int
return int
示例#1
0
        // Update the boundaries for indexSpinButton (how many objects there are)
        void UpdateBoundaries()
        {
            int origValue = indexSpinButton.ValueAsInt;

            indexSpinButton.Adjustment.Lower = -1;
            int max;

            if (ObjectGroup == null)
            {
                max = -1;
            }
            else
            {
                max = ObjectGroup.GetNumObjects() - 1;
            }

            indexSpinButton.Adjustment.Upper = max;
            if (indexSpinButton.ValueAsInt > max)
            {
                indexSpinButton.Value = max;
            }

            if (origValue != indexSpinButton.ValueAsInt)
            {
                SetObjectDataIndex(indexSpinButton.ValueAsInt);
            }
        }
示例#2
0
        // Constructors

        public ObjectBox(ObjectGroup group) : base()
        {
            this.ObjectGroup = group;

            base.MaxIndex = ObjectGroup.GetNumObjects() - 1;

            ObjectGroup.AddModifiedHandler(OnObjectGroupModified);
        }
示例#3
0
 void SetObjectDataIndex(int i)
 {
     if (ObjectGroup == null || i < 0 || i >= ObjectGroup.GetNumObjects())
     {
         SetObjectData(null);
     }
     else
     {
         SetObjectData(ObjectGroup.GetObjectData(i));
     }
 }
示例#4
0
        public void SetObjectGroup(ObjectGroup group)
        {
            _ObjectGroup = group;
            if (ObjectGroup.GetNumObjects() >= 1)
            {
                indexSpinButton.Value = 0;
                SetObjectDataIndex(0);
            }

            UpdateBoundaries();
        }
示例#5
0
        public void SetObjectGroup(ObjectGroup group)
        {
            _ObjectGroup = group;
            if (ObjectGroup != null && ObjectGroup.GetNumObjects() != 0)
            {
                indexSpinButton.Value = 0;
                SetObjectData(ObjectGroup.GetObjectData(0));
            }
            else
            {
                indexSpinButton.Value = -1;
                SetObjectData(null);
            }

            UpdateBoundaries();
        }
示例#6
0
        public void SelectObject(ObjectGroup group, int index)
        {
            if (!topObjectGroup.GetAllGroups().Contains(group))
            {
                throw new Exception("Tried to select from an invalid object group.");
            }

            index = Math.Min(index, group.GetNumObjects() - 1);

            selectedObjectGroup = group;
            selectedIndex       = index;

            disableBoxCallback = true;

            foreach (ObjectGroup g2 in topObjectGroup.GetAllGroups())
            {
                if (g2 == selectedObjectGroup)
                {
                    objectBoxDict[g2].SetSelectedIndex(index);
                }
                else
                {
                    objectBoxDict[g2].SetSelectedIndex(-1);
                }
            }

            disableBoxCallback = false;

            if (selectedIndex == -1)
            {
                SetObject(null);
            }
            else
            {
                SetObject(selectedObjectGroup.GetObject(selectedIndex));
            }
        }
示例#7
0
        int DrawObjectGroup(Graphics g, int index, ref int cursorX, ref int cursorY, ref int selectedX, ref int selectedY, ObjectGroup group, ObjectGroupEditor editor, ref List <int> objectIndices)
        {
            if (group == null)
            {
                return(index);
            }

            List <int> localObjectIndices = new List <int>(objectIndices);

            bool foundHoveringMatch = false;

            for (int i = 0; i < group.GetNumObjects(); i++)
            {
                ObjectData data = group.GetObjectData(i);
                if (data.GetObjectType() >= ObjectType.Pointer &&
                    data.GetObjectType() <= ObjectType.AntiBossPointer)
                {
                    ObjectGroup nextGroup = data.GetPointedObjectGroup();
                    if (nextGroup != null)
                    {
                        List <int> pointerObjectIndices = new List <int>(objectIndices);
                        pointerObjectIndices.Add(i);
                        if (editor != null && i == editor.SelectedIndex)
                        {
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                                    ref selectedX, ref selectedY, nextGroup, editor.SubEditor, ref pointerObjectIndices);
                        }
                        else
                        {
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                                    ref selectedX, ref selectedY, nextGroup, null, ref pointerObjectIndices);
                        }
                        if (pointerObjectIndices.Count > objectIndices.Count + 1)
                        {
                            localObjectIndices = pointerObjectIndices;
                        }
                    }
                }
                else
                {
                    Color color = data.GetColor();
                    int   x, y;
                    int   width;
                    if (data.HasXY())
                    {
                        x     = data.GetX();
                        y     = data.GetY();
                        width = 16;
                        // Objects with specific positions get
                        // transparency
                        color = Color.FromArgb(0xd0, color.R, color.G, color.B);
                    }
                    else
                    {
                        // No X/Y values exist
                        x = index;
                        y = 0;
                        while (x >= 0xf)
                        {
                            x -= 0xf;
                            y++;
                        }
                        x    *= 16;
                        y    *= 16;
                        x    += 8;
                        y    += 8;
                        width = 8;
                        index++;
                    }

                    if (editor != null && i == editor.SelectedIndex)
                    {
                        selectedX = x - 8;
                        selectedY = y - 8;
                    }
                    if (mouseX >= x - 8 && mouseX < x + 8 &&
                        mouseY >= y - 8 && mouseY < y + 8)
                    {
                        if (localObjectIndices.Count == objectIndices.Count)
                        {
                            if (foundHoveringMatch)
                            {
                                localObjectIndices[localObjectIndices.Count - 1] = i;
                            }
                            else
                            {
                                localObjectIndices.Add(i);
                            }
                            cursorX            = x - 8;
                            cursorY            = y - 8;
                            foundHoveringMatch = true;
                        }
                    }

                    x -= width / 2;
                    y -= width / 2;


                    g.FillRectangle(new SolidBrush(color), x, y, width, width);
                }
            }

            objectIndices = localObjectIndices;
            return(index);
        }
示例#8
0
        int DrawObjectGroup(Graphics g, int index, ref int cursorX, ref int cursorY, ref int selectedX, ref int selectedY, ObjectGroup group, ObjectGroupEditor editor, ref List <int> objectIndices)
        {
            if (group == null)
            {
                return(index);
            }

            List <int> localObjectIndices = new List <int>(objectIndices);

            bool foundHoveringMatch = false;

            for (int i = 0; i < group.GetNumObjects(); i++)
            {
                ObjectData data = group.GetObjectData(i);
                if (data.GetObjectType() >= ObjectType.Pointer &&
                    data.GetObjectType() <= ObjectType.AntiBossPointer)
                {
                    ObjectGroup nextGroup = data.GetPointedObjectGroup();
                    if (nextGroup != null)
                    {
                        List <int> pointerObjectIndices = new List <int>(objectIndices);
                        pointerObjectIndices.Add(i);
                        if (editor != null && i == editor.SelectedIndex)
                        {
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                                    ref selectedX, ref selectedY, nextGroup, editor.SubEditor, ref pointerObjectIndices);
                        }
                        else
                        {
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                                    ref selectedX, ref selectedY, nextGroup, null, ref pointerObjectIndices);
                        }
                        if (pointerObjectIndices.Count > objectIndices.Count + 1)
                        {
                            localObjectIndices = pointerObjectIndices;
                        }
                    }
                }
                else
                {
                    Color color = data.GetColor();
                    int   x, y;
                    int   width;
                    if (data.HasXY())
                    {
                        x     = data.GetX();
                        y     = data.GetY();
                        width = 16;
                        // Objects with specific positions get
                        // transparency
                        color = Color.FromArgb(0xd0, color.R, color.G, color.B);
                    }
                    else
                    {
                        // No X/Y values exist
                        x = index;
                        y = 0;
                        while (x >= 0xf)
                        {
                            x -= 0xf;
                            y++;
                        }
                        x    *= 16;
                        y    *= 16;
                        x    += 8;
                        y    += 8;
                        width = 8;
                        index++;
                    }

                    if (editor != null && i == editor.SelectedIndex)
                    {
                        selectedX = x - 8 + XOffset;
                        selectedY = y - 8 + YOffset;
                    }
                    if (mouseX - XOffset >= x - 8 && mouseX - XOffset < x + 8 &&
                        mouseY - YOffset >= y - 8 && mouseY - YOffset < y + 8)
                    {
                        if (localObjectIndices.Count == objectIndices.Count)
                        {
                            if (foundHoveringMatch)
                            {
                                localObjectIndices[localObjectIndices.Count - 1] = i;
                            }
                            else
                            {
                                localObjectIndices.Add(i);
                            }
                            cursorX            = x - 8 + XOffset;
                            cursorY            = y - 8 + YOffset;
                            foundHoveringMatch = true;
                        }
                    }

                    // x and y are the center coordinates for the object

                    if (ViewObjectBoxes)
                    {
                        g.FillRectangle(new SolidBrush(color), x - width / 2 + XOffset, y - width / 2 + YOffset, width, width);
                    }

                    if (data.GetGameObject() != null)
                    {
                        try {
                            ObjectAnimationFrame o = data.GetGameObject().DefaultAnimation.GetFrame(0);
                            o.Draw(g, x + XOffset, y + YOffset);
                        }
                        catch (NoAnimationException) {
                            // No animation defined
                        }
                        catch (InvalidAnimationException) {
                            // Error parsing an animation; draw a blue X to indicate the error
                            int xPos = x - width / 2 + XOffset;
                            int yPos = y - width / 2 + YOffset;
                            g.DrawLine(new Pen(Color.Blue), xPos, yPos, xPos + width - 1, yPos + width - 1);
                            g.DrawLine(new Pen(Color.Blue), xPos + width - 1, yPos, xPos, yPos + width - 1);
                        }
                    }
                }
            }

            objectIndices = localObjectIndices;
            return(index);
        }
示例#9
0
        int DrawObjectGroup(Graphics g, int index, ref int cursorX, ref int cursorY, ref int selectedX, ref int selectedY, ObjectGroup group, ObjectGroupEditor editor, ref List<int> objectIndices)
        {
            if (group == null) return index;

            List<int> localObjectIndices = new List<int>(objectIndices);

            bool foundHoveringMatch = false;

            for (int i=0; i<group.GetNumObjects(); i++) {
                ObjectData data = group.GetObjectData(i);
                if (data.GetObjectType() >= ObjectType.Pointer &&
                        data.GetObjectType() <= ObjectType.AntiBossPointer) {
                    ObjectGroup nextGroup = data.GetPointedObjectGroup();
                    if (nextGroup != null) {
                        List<int> pointerObjectIndices = new List<int>(objectIndices);
                        pointerObjectIndices.Add(i);
                        if (editor != null && i == editor.SelectedIndex)
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                    ref selectedX, ref selectedY, nextGroup, editor.SubEditor, ref pointerObjectIndices);
                        else
                            index = DrawObjectGroup(g, index, ref cursorX, ref cursorY,
                                    ref selectedX, ref selectedY, nextGroup, null, ref pointerObjectIndices);
                        if (pointerObjectIndices.Count > objectIndices.Count+1)
                            localObjectIndices = pointerObjectIndices;
                    }
                }
                else {
                    Color color = data.GetColor();
                    int x,y;
                    int width;
                    if (data.HasXY()) {
                        x = data.GetX();
                        y = data.GetY();
                        width = 16;
                        // Objects with specific positions get
                        // transparency
                        color = Color.FromArgb(0xd0,color.R,color.G,color.B);
                    }
                    else {
                        // No X/Y values exist
                        x = index;
                        y = 0;
                        while (x >= 0xf) {
                            x -= 0xf;
                            y++;
                        }
                        x *= 16;
                        y *= 16;
                        x += 8;
                        y += 8;
                        width = 8;
                        index++;
                    }

                    if (editor != null && i == editor.SelectedIndex) {
                        selectedX = x-8;
                        selectedY = y-8;
                    }
                    if (mouseX >= x-8 && mouseX < x+8 &&
                            mouseY >= y-8 && mouseY < y+8) {
                        if (localObjectIndices.Count == objectIndices.Count) {
                            if (foundHoveringMatch)
                                localObjectIndices[localObjectIndices.Count-1] = i;
                            else
                                localObjectIndices.Add(i);
                            cursorX = x-8;
                            cursorY = y-8;
                            foundHoveringMatch = true;
                        }
                    }

                    x -= width/2;
                    y -= width/2;

                    g.FillRectangle(new SolidBrush(color), x, y, width, width);
                }
            }

            objectIndices = localObjectIndices;
            return index;
        }