示例#1
0
        public void ChangeActiveObject(ObjectRegistryEntry obj)
        {
            ActiveObjTable = obj;
            var objd = GameContent.Get.WorldObjects.Get(obj.GUID);

            if (objd == null)
            {
                return;
            }
            SetTargetObject(objd);
        }
示例#2
0
        private void ObjectTree_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            var node = ObjectTree.SelectedNode;

            if (node == null)
            {
                ObjNameLabel.Text      = "No Object Selected.";
                ObjDescLabel.Text      = "";
                ObjMultitileLabel.Text = "";
                SelectedFile           = null;
                SelectedObj            = null;
            }

            ObjectRegistryEntry entry = null;

            SourceNodeToEnt.TryGetValue(node, out entry);

            if (entry == null)
            {
                //chose a filename
                ObjNameLabel.Text      = node.Text + ".iff";
                ObjDescLabel.Text      = "Object File";
                ObjMultitileLabel.Text = "Contains " + ObjectRegistry.MastersByFilename[node.Text].Count + " master objects.";
                SelectedFile           = node.Text;
                SelectedObj            = null;
                ObjThumbnail.ShowObject(0);
            }
            else
            {
                ObjNameLabel.Text = entry.Name;
                SelectedFile      = entry.Filename;
                SelectedObj       = entry;
                ObjThumbnail.ShowObject(entry.GUID);
                ObjDescLabel.Text = "§----";
                if (entry.Group == 0)
                {
                    ObjMultitileLabel.Text = "Single-tile object.";
                }
                else if (entry.SubIndex < 0)
                {
                    ObjMultitileLabel.Text = "Multitile master object.";
                }
                else
                {
                    ObjMultitileLabel.Text = "Multitile part. (" + (entry.SubIndex >> 8) + ", " + (entry.SubIndex & 0xFF) + ")";
                }
            }
            if (SelectedChanged != null)
            {
                SelectedChanged();
            }
        }
示例#3
0
        public bool RegenObjMeta(GameIffResource res)
        {
            var objd    = res.List <OBJD>();
            var entries = new List <ObjectRegistryEntry>();

            foreach (var obj in objd)
            {
                var entry = new ObjectRegistryEntry
                {
                    GUID     = obj.GUID,
                    Filename = res.MainIff.Filename,
                    Name     = obj.ChunkLabel,
                    Group    = (short)obj.MasterID,
                    SubIndex = obj.SubIndex
                };
                entries.Add(entry);
            }

            if (entries.Count == 0)
            {
                return(false);
            }

            entries = entries.OrderBy(x => x.SubIndex).OrderBy(x => x.Group).ToList();

            var GUID = (ActiveObj == null) ? 0 : ActiveObj.OBJ.GUID;

            //populate object selected box with options
            ObjCombo.Items.Clear();
            int i = 0;

            foreach (var item in entries)
            {
                ObjCombo.Items.Add(item);
                if (item.GUID == GUID)
                {
                    ObjCombo.SelectedIndex = i;
                }
                i++;
            }
            if (ObjCombo.SelectedIndex == -1)
            {
                ObjCombo.SelectedIndex = 0;
            }

            Text = "Edit Object - " + ActiveObjTable.Filename;
            return(true);
        }
示例#4
0
 public void ChangeActiveObject(ObjectRegistryEntry obj)
 {
     ActiveObjTable = obj;
     SetTargetObject(Content.Content.Get().WorldObjects.Get(obj.GUID));
 }