예제 #1
0
        /// <summary>
        /// Called when a selection of the station has changed.
        /// </summary>
        private void onStationChanged(object sender, EventArgs e)
        {
            // Builds a new preview bitmap and set it to the picture box
            PreviewDrawer drawer;

            if (selectedStation == null)
            {
                drawer = new PreviewDrawer(stationPicture.ClientSize, new Distance());
            }
            else
            {
                drawer = new PreviewDrawer(stationPicture.ClientSize, selectedStation.Size);
                drawer.DrawCenter(selectedStation.Sprites);
            }

            if (stationPreviewBitmap != null)
            {
                stationPreviewBitmap.Dispose();
            }
            stationPicture.Image = stationPreviewBitmap = drawer.CreateBitmap();

            drawer.Dispose();

            updateAlphaSprites();
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pixelSize"></param>
        /// <returns></returns>
        public override PreviewDrawer CreatePreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, size);

            drawer.DrawCenter(sprites);
            return(drawer);
        }
예제 #3
0
        private void onAmountChanged(object sender, EventArgs e)
        {
            if (count.Value != 0 && selectedTrain != null)
            {
                TrainCarContribution[] cars = selectedTrain.Create((int)length.Value);
                if (cars != null)
                {
                    buttonOK.Enabled = true;

                    // TODO: non-linear price support
                    totalPrice.Text = getTotalPrice().ToString();

                    int p = 0;
                    foreach (TrainCarContribution car in cars)
                    {
                        p += car.Capacity;
                    }

                    passenger.Text = p.ToString() + " passengers/set";
                    //! passenger.Text = p.ToString()+" 人/編成";

                    using (PreviewDrawer pd = selectedTrain.CreatePreview(preview.ClientSize, (int)length.Value))
                    {
                        preview.Image = pd.CreateBitmap();
                    }

                    return;
                }
            }

            buttonOK.Enabled = false;
            totalPrice.Text  = "---";
            passenger.Text   = "---";
        }
        protected void redrawPreview()
        {
            if (current.current is VarHeightBuildingContribution)
            {
                using (PreviewDrawer drawer = ((VarHeightBuildingContribution)current.current).createPreview(previewBox.Size, (int)numHeight.Value))
                {
                    if (previewBitmap != null)
                    {
                        previewBitmap.Dispose();
                    }
                    previewBox.Image = previewBitmap = drawer.createBitmap();
                }
            }
            else
            {
                using (PreviewDrawer drawer = current.current.createPreview(previewBox.Size))
                {
                    if (previewBitmap != null)
                    {
                        previewBitmap.Dispose();
                    }
                    previewBox.Image = previewBitmap = drawer.createBitmap();
                }
            }
            updateAlphaSprites();
            if (bShowDetail)
            {
                labelInfo.Text = getDetailText();
            }

            //描画異常がおこるため
            Invalidate();
            Update();
        }
예제 #5
0
        /// <inheritdoc/>
        public override void Setup(IInspectorDrawer drawer, InspectorPreferences setPreferences, Object[] inspected, Vector2 scrollPos, bool viewIsLocked)
        {
                        #if DEV_MODE && DEBUG_SETUP_TIME
            var timer = new ExecutionTimeLogger();
            timer.Start(GetType().Name + ".Setup");
                        #endif

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(setPreferences != null);
                        #endif

            previewDrawer = new PreviewDrawer(this);

            // Call base.Setup before calling Setup for the toolbar, so that the Preferences field gets assigned first
            base.Setup(drawer, setPreferences, inspected, scrollPos, viewIsLocked);

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(Preferences != null);
            Debug.Assert(Preferences == setPreferences);
                        #endif

                        #if DEV_MODE && DEBUG_SETUP_TIME
            timer.FinishAndLogResults();
                        #endif
        }
예제 #6
0
        public override void updatePreview()
        {
            RailPattern rp = RailPattern.get(currentDirection, currentDirection.opposite);

            using (PreviewDrawer drawer = new PreviewDrawer(preview.Size, new Size(1, 1), 0)) {
                // draw the rail
                for (int i = -5; i < 5; i++)
                {
                    if (currentDirection.isParallelToX)
                    {
                        drawer.draw(rp, i, 0);
                    }
                    else
                    {
                        drawer.draw(rp, 0, i);
                    }
                }

                // draw the signal
                drawer.draw(rp, 0, 0);
                drawer.draw(currentType.getSprite(currentDirection), 0, 0);

                // draw the arrow
                currentDirection.drawArrow(drawer.surface,
                                           drawer.getPoint(-currentDirection.offsetX, -currentDirection.offsetY));

                preview.Image = drawer.createBitmap();
            }
        }
예제 #7
0
        public PreviewDrawer createPreview(Size pixelSize, int height)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, size, maxHeight /*middle*/);
            int           mh     = height - 2;
            int           z      = 0;

            for (int i = bottoms.Length - 1; i >= 0; i--)
            {
                drawer.draw(bottoms[i], 0, 0, z++);
            }
            if (overlay)
            {
                z--;
                mh++;
            }
            for (int i = 0; i < mh; i++)
            {
                drawer.draw(middle, 0, 0, z++);
            }
            for (int i = tops.Length - 1; i >= 0; i--)
            {
                drawer.draw(tops[i], 0, 0, z++);
            }

            return(drawer);
        }
        public override void updatePreview()
        {
            PreviewDrawer drawer;

            // TODO: locations of the previews are uttely incorrect. fix them

            // direction N
            using (drawer = new PreviewDrawer(pictureN.ClientSize, new Size(2, 4), 0)) {
                drawer.draw(RailPattern.getSlope(Direction.NORTH, 3), 1, -1);
                drawer.draw(RailPattern.getSlope(Direction.NORTH, 2), 1, 0);
                drawer.draw(RailPattern.getSlope(Direction.NORTH, 1), 0, 2);
                drawer.draw(RailPattern.getSlope(Direction.NORTH, 0), 0, 3);
                if (pictureN.Image != null)
                {
                    pictureN.Image.Dispose();
                }
                pictureN.Image = drawer.createBitmap();
            }

            // direction S
            using (drawer = new PreviewDrawer(pictureS.ClientSize, new Size(2, 4), 0)) {
                drawer.draw(RailPattern.getSlope(Direction.SOUTH, 0), 0, 0);
                drawer.draw(RailPattern.getSlope(Direction.SOUTH, 1), 0, 1);
                drawer.draw(RailPattern.getSlope(Direction.SOUTH, 2), 1, 1);
                drawer.draw(RailPattern.getSlope(Direction.SOUTH, 3), 1, 2);
                if (pictureS.Image != null)
                {
                    pictureS.Image.Dispose();
                }
                pictureS.Image = drawer.createBitmap();
            }

            // direction E
            using (drawer = new PreviewDrawer(pictureE.ClientSize, new Size(4, 2), 0)) {
                drawer.draw(RailPattern.getSlope(Direction.EAST, 3), 3, 0);
                drawer.draw(RailPattern.getSlope(Direction.EAST, 2), 2, 0);
                drawer.draw(RailPattern.getSlope(Direction.EAST, 1), 0, 1);
                drawer.draw(RailPattern.getSlope(Direction.EAST, 0), -1, 1);
                if (pictureE.Image != null)
                {
                    pictureE.Image.Dispose();
                }
                pictureE.Image = drawer.createBitmap();
            }

            // direction W
            using (drawer = new PreviewDrawer(pictureW.ClientSize, new Size(4, 2), 0)) {
                drawer.draw(RailPattern.getSlope(Direction.WEST, 3), 1, 0);
                drawer.draw(RailPattern.getSlope(Direction.WEST, 2), 2, 0);
                drawer.draw(RailPattern.getSlope(Direction.WEST, 1), 2, 1);
                drawer.draw(RailPattern.getSlope(Direction.WEST, 0), 3, 1);
                if (pictureW.Image != null)
                {
                    pictureW.Image.Dispose();
                }
                pictureW.Image = drawer.createBitmap();
            }
        }
예제 #9
0
 /// <summary>
 /// Called when a selection of the structure has changed.
 /// </summary>
 protected virtual void updatePreview()
 {
     using (PreviewDrawer drawer = currentContrib.createPreview(preview.Size)) {
         if (previewBitmap != null)
         {
             previewBitmap.Dispose();
         }
         preview.Image = previewBitmap = drawer.createBitmap();
     }
 }
예제 #10
0
        /// <summary>
        /// Builds a nice preview of a train.
        /// </summary>
        public PreviewDrawer CreatePreview(Size pixelSize, int trainlength)
        {
            PreviewDrawer pd = new PreviewDrawer(pixelSize, new Size(1, 3), 0);

            // build up rail like
            //
            //     /~~~~~
            //    /
            for (int x = -10; x < 0; x++)
            {
                pd.Draw(RailPattern.get(Direction.WEST, Direction.EAST), x, 0);
            }
            pd.Draw(RailPattern.get(Direction.WEST, Direction.SOUTHEAST), 0, 0);
            for (int x = 1; x <= 10; x++)
            {
                pd.Draw(RailPattern.get(Direction.NORTHWEST, Direction.SOUTHEAST), x, x);
            }

            TrainCarContribution[] cars = Create(trainlength);

            /*if( cars==null ) {
             *  for( int i=6; cars==null && i<15; i++ )
             *      cars = create(i);
             *  for( int i=4; cars==null && i>0; i-- )
             *      cars = create(i);
             *  if( cars==null )
             *      return pd;	// no preview
             * }*/

            if (cars == null)
            {
                return(pd);                     // no preview
            }
            int[] pos    = new int[] { -2, 0, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 };
            int[] angle  = new int[] { 12, 12, 13, 14, 14, 14, 14, 14 };
            int[] offset = new int[] { 0, 0, 0, 0, 4, +2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

            using (DrawContext dc = new DrawContext(pd.Surface))
            {
                for (int i = 7; i >= 0; i--)
                {
                    if (cars.Length <= i)
                    {
                        continue;               // no car
                    }

                    Point pt = pd.GetPoint(pos[i * 2], pos[i * 2 + 1]);
                    cars[i].Draw(pd.Surface,
                                 new Point(pt.X + offset[i * 2], pt.Y + offset[i * 2 + 1] - 9), angle[i]);
                }
            }

            return(pd);
        }
예제 #11
0
 /// <summary>
 /// Called when a selection of the structure has changed.
 /// </summary>
 public override void UpdatePreview()
 {
     using (PreviewDrawer drawer = currentContrib.CreatePreview(preview.Size))
     {
         if (previewBitmap != null)
         {
             previewBitmap.Dispose();
         }
         preview.Image = previewBitmap = drawer.CreateBitmap();
     }
 }
예제 #12
0
        /// <summary>
        /// Called when a selection of the structure has changed.
        /// </summary>
        protected virtual void onTypeChanged(object sender, System.EventArgs e)
        {
            ElectricPoleContribution contrib = (ElectricPoleContribution)typeBox.SelectedItem;

            using (PreviewDrawer drawer = contrib.createPreview(preview.Size)) {
                if (previewBitmap != null)
                {
                    previewBitmap.Dispose();
                }
                preview.Image = previewBitmap = drawer.createBitmap();
            }
            recreateController();
        }
예제 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pixelSize"></param>
        /// <returns></returns>
        public override PreviewDrawer CreatePreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(7, 1), 1);

            drawer.Draw(sprites[currentColor][Direction.WEST, PlaceSide.Fore], 3, 1);
            drawer.Draw(sprites[currentColor][Direction.EAST, PlaceSide.Back], 2, 0);
            if (hilights != null)
            {
                drawer.Draw(hilights[currentHighlight][Direction.WEST, PlaceSide.Fore], 3, 1);
                drawer.Draw(hilights[currentHighlight][Direction.EAST, PlaceSide.Back], 2, 0);
            }
            return(drawer);
        }
예제 #14
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(1, 8), 0);

            Sprite sp = getSprite(Dir.N | Dir.S);

            for (int y = -4; y <= 4; y++)
            {
                drawer.draw(sp, 0, y);
            }

            return(drawer);
        }
예제 #15
0
        public override void updatePreview()
        {
            using (PreviewDrawer drawer = selectedType.createPreview(preview.Size))
            {
                if (previewBitmap != null)
                {
                    previewBitmap.Dispose();
                }
                preview.Image = previewBitmap = drawer.createBitmap();
            }

            updateAlphaSprites();
        }
예제 #16
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(10, 10), 0);

            for (int y = 0; y < 10; y++)
            {
                for (int x = 0; x < 10; x++)
                {
                    drawer.draw(getLand().sprite, x, y);
                }
            }

            return(drawer);
        }
예제 #17
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(3, 3), 0);

            for (int y = 0; y < 3; y++)
            {
                for (int x = 2; x >= 0; x--)
                {
                    drawer.draw(sprites[getSpriteIndex(x, y, 0, 2, 0, 2)], x, y);
                }
            }

            return(drawer);
        }
예제 #18
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(3, 3), 0);

            for (int y = 0; y < 3; y++)
            {
                for (int x = 0; x < 3; x++)
                {
                    drawer.draw(sprites[getIndex(0, x, 2), getIndex(0, y, 2)], x, y);
                }
            }

            return(drawer);
        }
예제 #19
0
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(10, 1), 0);

            for (int x = 9; x >= 0; x--)
            {
                if (x == 5)
                {
                    drawer.draw(sprites[currentColor, 0], x, 0);
                }
                //drawer.draw( RoadPattern.get((byte)Direction.EAST), x,0 );
            }
            return(drawer);
        }
예제 #20
0
        public override void updatePreview()
        {
            LandBuilderContribution builder = (LandBuilderContribution)indexSelector.currentItem;

            using (PreviewDrawer drawer = builder.createPreview(preview.Size))
            {
                if (previewBitmap != null)
                {
                    previewBitmap.Dispose();
                }
                preview.Image = previewBitmap = drawer.createBitmap();
            }

            currentController = builder.createBuilder(new ControllerSiteImpl(this));
        }
예제 #21
0
 public override void updatePreview()
 {
     using (PreviewDrawer drawer = new PreviewDrawer(picture.Size, new Size(1, 10), 0))
     {
         for (int i = 0; i < 10; i++)
         {
             drawer.draw(RailPattern.get(Direction.NORTH, Direction.SOUTH), 0, i);
         }
         if (picture.Image != null)
         {
             picture.Image.Dispose();
         }
         picture.Image = drawer.createBitmap();
     }
 }
예제 #22
0
        private void buttonOK_Click(object sender, System.EventArgs e)
        {
            string dir = output.Text;

            if (!Directory.Exists(dir))
            {
                MessageBox.Show(this, "The output directory does not exist");
                //! MessageBox.Show(this,"指定された出力先は存在しません");
                return;
            }

            // initialize the progress bar
            progressBar.Minimum = 0;
            progressBar.Maximum = Core.plugins.trains.Length;
            progressBar.Value   = 0;

            // prepare the XML writer
            TextWriter xml = new StreamWriter(
                new FileStream(Path.Combine(dir, "index.xml"), FileMode.Create));

            xml.WriteLine("<?xml version='1.0'?>");
            xml.WriteLine("<trainList>");

            xml.WriteLine("<companies>");
            foreach (string company in listCompanies())
            {
                writeElement(xml, company, "company");
            }
            xml.WriteLine("</companies>");

            foreach (TrainContribution contrib in Core.plugins.trains)
            {
                using (PreviewDrawer pd = contrib.createPreview(new Size(150, 75))) {
                    using (Bitmap bmp = pd.createBitmap()) {
                        string fileName = Path.Combine(dir, contrib.id + ".png");
                        bmp.Save(fileName, ImageFormat.Png);
                    }
                }
                outputManifest(contrib, xml);

                progressBar.Value++;
                Application.DoEvents();
            }

            xml.WriteLine("</trainList>");
            xml.Close();
        }
예제 #23
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(3, 3), 0);

            for (int x = 0; x <= 3; x++)
            {
                drawer.draw(sprites[Direction.NORTH.index / 2], x, 0);
                drawer.draw(sprites[Direction.SOUTH.index / 2], x, 3);
            }
            for (int y = 0; y <= 3; y++)
            {
                drawer.draw(sprites[Direction.WEST.index / 2], 0, y);
                drawer.draw(sprites[Direction.EAST.index / 2], 3, y);
            }

            return(drawer);
        }
예제 #24
0
 /// <summary>
 ///
 /// </summary>
 public override void UpdatePreview()
 {
     using (PreviewDrawer drawer = new PreviewDrawer(preview.Size, new Size(3, 3), 0))
     {
         for (int x = 0; x < 3; x++)
         {
             for (int y = 0; y < 3; y++)
             {
                 drawer.Draw(LandPropertyVoxel.sprite, x, y);
             }
         }
         if (preview.Image != null)
         {
             preview.Image.Dispose();
         }
         preview.Image = drawer.CreateBitmap();
     }
 }
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(10, 1), 0);

            for (int x = 9; x >= 0; x--)
            {
                if (x == 5)
                {
                    drawer.draw(sprites[0, 0], x, 0);
                }
                drawer.draw(RailPattern.get(Direction.EAST, Direction.WEST), x, 0);
                if (x == 5)
                {
                    drawer.draw(sprites[0, 1], x, 0);
                }
            }
            return(drawer);
        }
예제 #26
0
        /// <summary>
        /// Called when a selection of the structure has changed.
        /// </summary>
        protected virtual void UpdatePreview(DummyCarContribution builder)
        {
            //DummyCarContribution builder = (DummyCarContribution)typeBox.SelectedItem;
            using (PreviewDrawer drawer = new PreviewDrawer(preview.Size, new Size(10, 1), 0))
            {
                drawer.Draw(builder.GetSprites(), 5, 0);

                if (previewBitmap != null)
                {
                    previewBitmap.Dispose();
                }
                preview.Image = previewBitmap = drawer.CreateBitmap();
            }
            //if (isPlacing)
            //currentController = builder.createBuilder(this.siteImpl);
            //else
            //currentController = builder.createRemover(this.siteImpl);
        }
예제 #27
0
        /// <summary>
        /// Called when a selection of the structure has changed.
        /// </summary>
        protected virtual void OnTypeChanged(object sender, System.EventArgs e)
        {
            RoadAccessoryContribution builder = (RoadAccessoryContribution)typeBox.SelectedItem;

            if (builder != null)
            {
                using (PreviewDrawer drawer = builder.CreatePreview(preview.Size))
                {
                    if (previewBitmap != null)
                    {
                        previewBitmap.Dispose();
                    }
                    preview.Image = previewBitmap = drawer.CreateBitmap();
                }
                //if (isPlacing)
                //    currentController = builder.createBuilder(this.siteImpl);
                //else
                //    currentController = builder.createRemover(this.siteImpl);
            }
        }
예제 #28
0
        /// <summary>
        ///
        /// </summary>
        public void updatePreview()
        {
            length.Enabled = count.Enabled = buttonOK.Enabled = (selectedTrain != null);

            Image im = preview.Image;

            if (im != null)
            {
                preview.Image = null;
                im.Dispose();
            }

            if (selectedTrain != null)
            {
                name.Text        = selectedTrain.Name;
                author.Text      = selectedTrain.Author;
                description.Text = selectedTrain.Description;
                speed.Text       = selectedTrain.SpeedDisplayName;
                length.Maximum   = selectedTrain.MaxLength;
                length.Minimum   = selectedTrain.MinLength;
                //if (length.Value > selectedTrain.maxLength) length.Value = selectedTrain.maxLength;
                using (PreviewDrawer pd = selectedTrain.CreatePreview(preview.ClientSize, (int)length.Value))
                {
                    preview.Image = pd.CreateBitmap();
                }

                if (count.Value == 0)
                {
                    // if the user changes the type, s/he is going to buy another train.
                    // thus change the value to 1.
                    count.Value = 1;
                }

                onAmountChanged(null, null);
            }
            else
            {
                name.Text = author.Text = description.Text = speed.Text = "";
            }
        }
예제 #29
0
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, size, tops.Length + bottoms.Length + 1 /*middle*/);

            int z = 0;

            for (int i = bottoms.Length - 1; i >= 0; i--)
            {
                drawer.draw(bottoms[i], 0, 0, z++);
            }
            if (overlay)
            {
                drawer.draw(middle, 0, 0, z - 1);
            }
            drawer.draw(middle, 0, 0, z++);
            for (int i = tops.Length - 1; i >= 0; i--)
            {
                drawer.draw(tops[i], 0, 0, z++);
            }

            return(drawer);
        }
예제 #30
0
        /// <summary>
        /// Creates the preview image of the land builder.
        /// </summary>
        public override PreviewDrawer createPreview(Size pixelSize)
        {
            const int     r      = 8;
            PreviewDrawer drawer = new PreviewDrawer(pixelSize, new Size(r, r), 0);

            for (int y = 0; y < r; y++)
            {
                for (int x = 0; x < r; x++)
                {
                    Point  pt   = drawer.getPoint(x, y, 0);
                    byte[] tree = createRandomTrees();

                    for (int i = 0; i < tree.Length; i += 3)
                    {
                        sprites[tree[i + 2]].draw(drawer.surface,
                                                  new Point(pt.X + tree[i + 0], pt.Y + tree[i + 1]));
                    }
                }
            }

            return(drawer);
        }