예제 #1
0
        public void LoadForm(HouseDesign design)
        {
            m_Design         = design;
            this.Text        = string.Format("Design Preview - {0} ({1} items)", design.Name, design.FileHeader.RecordCount);
            m_Level          = FloorView.Roof;
            this.WindowState = FormWindowState.Maximized;
            DisplayDesign();

            Show();

            Cursor.Current = Cursors.Default;
        }
예제 #2
0
        private void OpenSelectedDesignInEditor()
        {
            Cursor.Current = Cursors.WaitCursor;

            if (SelectedNode != null)
            {
                if (!SelectedNode.Design.IsLoaded)
                {
                    SelectedNode.Design.Load();
                }

                HouseDesign design = new HouseDesign(SelectedNode.Design);

                HouseDesigner dlg = new HouseDesigner(design);
                dlg.Show();
                dlg.WindowState = FormWindowState.Maximized;
            }

            Cursor.Current = Cursors.Default;
        }
예제 #3
0
        public void LoadForm(ref HouseDesign design, Form parent)
        {
            PopulateCategories();
            SelectCategory(design.Category);

            m_Name             = design.Name;
            m_Category         = design.Category;
            m_Subsection       = design.SubSection;
            txtName.Text       = design.Name;
            cboCategory.Text   = design.Category;
            cboSubSection.Text = design.SubSection;

            this.ShowDialog(parent);

            if (!m_Cancelled)
            {
                design.Name       = m_Name;
                design.Category   = m_Category;
                design.SubSection = m_Subsection;
            }
        }
예제 #4
0
        public DesignImageMaker(HouseDesign design, int MaxZ)
        {
            int   count = design.FileHeader.RecordCount;
            Point point;

            m_Max = point = Point.Empty;
            m_Min = point;

            int index = 0;

            MultiTileEntry2[] multiTileEntrys = new MultiTileEntry2[count];

            for (int i = 0; i < HouseDesign.Levels; ++i)
            {
                for (int x = 0; x < design.Width; ++x)
                {
                    for (int y = 0; y < design.Height; ++y)
                    {
                        ArrayList list = design.Components[x][y][i];

                        foreach (HouseComponent hc in list)
                        {
                            if (MaxZ > 0 && hc.Z >= MaxZ)
                            {
                                continue;
                            }

                            multiTileEntrys[index].m_ItemID  = (short)hc.Index;
                            multiTileEntrys[index].m_OffsetX = (short)x;
                            multiTileEntrys[index].m_OffsetY = (short)y;
                            multiTileEntrys[index].m_OffsetZ = (short)hc.Z;
                            multiTileEntrys[index].m_Flags   = 0;
                            MultiTileEntry2 multiTileEntry = multiTileEntrys[index];

                            if (multiTileEntry.m_OffsetX < m_Min.X)
                            {
                                m_Min.X = multiTileEntry.m_OffsetX;
                            }
                            if (multiTileEntry.m_OffsetY < m_Min.Y)
                            {
                                m_Min.Y = multiTileEntry.m_OffsetY;
                            }
                            if (multiTileEntry.m_OffsetX > m_Max.X)
                            {
                                m_Max.X = multiTileEntry.m_OffsetX;
                            }
                            if (multiTileEntry.m_OffsetY > m_Max.Y)
                            {
                                m_Max.Y = multiTileEntry.m_OffsetY;
                            }

                            index++;
                        }
                    }
                }
            }

            m_Center = new Point(-m_Min.X, -m_Min.Y);
            m_Width  = m_Max.X - m_Min.X + 1;
            m_Height = m_Max.Y - m_Min.Y + 1;
            TileList[][] tileLists = new TileList[m_Width][];
            m_Tiles = new Tile[m_Width][][];

            for (int j1 = 0; j1 < m_Width; j1++)
            {
                tileLists[j1] = new TileList[m_Height];
                m_Tiles[j1]   = new Tile[m_Height][];
                for (int k1 = 0; k1 < m_Height; k1++)
                {
                    tileLists[j1][k1] = new TileList();
                }
            }

            for (int i2 = 0; i2 < (int)multiTileEntrys.Length; i2++)
            {
                int j2 = multiTileEntrys[i2].m_OffsetX + m_Center.X;
                int k2 = multiTileEntrys[i2].m_OffsetY + m_Center.Y;
                tileLists[j2][k2].Add((short)((multiTileEntrys[i2].m_ItemID & 16383) + 16384), (sbyte)multiTileEntrys[i2].m_OffsetZ);
            }

            for (int i3 = 0; i3 < m_Width; i3++)
            {
                for (int j3 = 0; j3 < m_Height; j3++)
                {
                    m_Tiles[i3][j3] = tileLists[i3][j3].ToArray();
                    if ((int)m_Tiles[i3][j3].Length > 1)
                    {
                        Array.Sort(m_Tiles[i3][j3]);
                    }
                }
            }
        }