Exemple #1
0
        static void Main(String[] args)
        {
            AbstractWindow gameWindow;

            Game.Initialize();	// creates a game object pathed to the
                                // executable root

            using (Stream imgStream = File.OpenRead(Game.PathTo("curses_640x300.png")))
            {
                // create the glyph palette; specifies how many rows/cols there are
                GlyphPalette glyphPalette = new GlyphPalette(imgStream, 16, 16);

                // the size, in pixels, of the game window
                WindowDimensions = new Size(glyphPalette.GlyphDimensions.Width * WindowSize.Width,
                                                 glyphPalette.GlyphDimensions.Height * WindowSize.Height);
            #if !DEBUG
                try
                {
            #endif
                    Game.SetRenderSystem("OpenTK"); // no other render systems exist
                    gameWindow = Game.RenderSystem.CreateWindow(WindowDimensions, glyphPalette);
                    Game.SetInputSystem("OpenTK");
            //					Game.SetAudioSystem("OpenTK"); // audio still has trouble starting
            #if !DEBUG
                }
                catch (NullReferenceException e)
                {
                    Console.WriteLine("Exception in startup: " + e.ToString());
                    Console.ReadLine();
                    return;
                }
            #endif
            }

            // load the INI file with proper game configuration...
            Game.InputSystem.LoadConfiguration(Game.PathTo("commands.ini"));

            gameWindow.Clear();

            // Creates the core game state machine, and gives it the MainMenuState as a start state.
            // When we invoke the state machine, that will be the first state that pops up. The state
            // machine is one of Sharplike's most powerful concepts, and will save you a boatload of
            // time during development.
            StateMachine gameState = new StateMachine(new State.MainMenuState());

            StepwiseGameLoop gameLoop = new StepwiseGameLoop(gameState);
            Game.Run(gameLoop); // and off we go!
        }
Exemple #2
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="displayDimensions">
        /// The dimensions of the render screen, in pixels.
        /// </param>
        /// <param name="palette">
        /// The GlyphPalette for the Window.
        /// </param>
        public AbstractWindow(Size displayDimensions, GlyphPalette palette)
            : base(new Size(displayDimensions.Width / palette.GlyphDimensions.Width, 
                displayDimensions.Height / palette.GlyphDimensions.Height), new Point(0, 0))
        {
            this.GlyphPalette = palette;
            this.WindowSize = displayDimensions;

            this.tiles = new DisplayTile[this.Size.Width, this.Size.Height];
            for (Int32 x = 0; x < this.Size.Width; x++)
            {
                for (Int32 y = 0; y < this.Size.Height; y++)
                {
                    this.tiles[x, y] = new DisplayTile(this.GlyphPalette, this, new Point(x, y));
                    this.tiles[x, y].MakeStackDirty();
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="displayDimensions">
        /// The dimensions of the render screen, in pixels.
        /// </param>
        /// <param name="palette">
        /// The GlyphPalette for the Window.
        /// </param>
        public AbstractWindow(Size displayDimensions, GlyphPalette palette)
            : base(new Size(displayDimensions.Width / palette.GlyphDimensions.Width,
                            displayDimensions.Height / palette.GlyphDimensions.Height), new Point(0, 0))
        {
            this.GlyphPalette = palette;
            this.WindowSize   = displayDimensions;

            this.tiles = new DisplayTile[this.Size.Width, this.Size.Height];
            for (Int32 x = 0; x < this.Size.Width; x++)
            {
                for (Int32 y = 0; y < this.Size.Height; y++)
                {
                    this.tiles[x, y] = new DisplayTile(this.GlyphPalette, this, new Point(x, y));
                    this.tiles[x, y].MakeStackDirty();
                }
            }
        }
Exemple #4
0
        public TKWindow(Size displayDimensions, GlyphPalette palette, Control context)
            : base(displayDimensions, palette)
        {
            if (context == null)
            {
                form = new TKForm();
                form.ClientSize = displayDimensions;
                form.FormClosing += new FormClosingEventHandler(Form_FormClosing);
                form.Show();

                context = form;
            }

            context.SuspendLayout();
            Control.Dock = DockStyle.Fill;
            Control.BackColor = Color.Blue;
            Control.VSync = false;
            Control.Resize += new EventHandler(Control_Resize);
            Control.Paint += new PaintEventHandler(Control_Paint);

            Control.Location = new Point(0, 0);
            Control.Size = context.ClientSize;

            context.Controls.Add(Control);
            context.ResumeLayout(false);

            paletteId = GL.GenTexture();
            Bitmap bmp = palette.SourceBitmap;
            GL.BindTexture(TextureTarget.Texture2D, paletteId);
            BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0,
                OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0);

            bmp.UnlockBits(bmp_data);

            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            base.Resize += new EmptyDelegate(TKWindow_Resize);
            this.WindowSize = Control.Size;

            GL.ClearColor(0.1f, 0.2f, 0.5f, 0.0f);
            GL.Disable(EnableCap.DepthTest);
            GL.Disable(EnableCap.CullFace);
        }
Exemple #5
0
        static void Main()
        {
            Game.Initialize();

            AbstractWindow gwin;
            Assembly ea = Assembly.GetExecutingAssembly();

            using (Stream imgstream = ea.GetManifestResourceStream("Sharplike.Tests.TKTest.curses_640x300.png"))
            {
                GlyphPalette pal = new GlyphPalette(imgstream, 16, 16);

                Int32 width = 80 * pal.GlyphDimensions.Width;
                Int32 height = 25 * pal.GlyphDimensions.Height;

                try
                {
                    //game.SetAudioSystem("OpenTK");
                    Game.SetRenderSystem("OpenTK");
                    gwin = Game.RenderSystem.CreateWindow(new Size(width, height), pal);
                    Game.SetInputSystem("OpenTK");
                }
                catch (System.NullReferenceException e)
                {
                    Console.WriteLine("Error when loading plugin: " + e.Message + "\n" + e.Source);
                    return;
                }

            }

            //Game.Scripting.Run(Game.PathTo("Test.py"));
            //game.Scripting.Run(game.PathTo("Test.rb"));

            Game.InputSystem.LoadConfiguration(Game.PathTo("commands.ini"));
            Game.InputSystem.SaveConfiguration(Game.PathTo("commands.out.ini"));

            gwin.Clear();

            //ac.Play();
            Game.GameProcessing += new EventHandler<EventArgs>(game_GameProcessing);
            StepwiseGameLoop loop = new StepwiseGameLoop(RunGame);
            Game.Run(loop);

            Game.Terminate();
        }
Exemple #6
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="p">The GlyphPalette to use.</param>
 internal DisplayTile(GlyphPalette p, AbstractRegion root, Point loc)
 {
     palette = p;
     rootregion = root;
     location = loc;
 }
 public AbstractWindow CreateWindow(Size displayDimensions, GlyphPalette palette)
 {
     return CreateWindow(displayDimensions, palette, null);
 }
 public abstract AbstractWindow CreateWindow(Size displayDimensions, GlyphPalette palette, Object context);
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="p">The GlyphPalette to use.</param>
 internal DisplayTile(GlyphPalette p, AbstractRegion root, Point loc)
 {
     palette    = p;
     rootregion = root;
     location   = loc;
 }
Exemple #10
0
        void Main_Load(object sender, EventArgs e)
        {
            Game.Initialize();
            Game.SetRenderSystem("OpenTK");

            String glyphPath = Game.PathTo("curses_640x300.png");
            using (Stream imgstream = File.OpenRead(glyphPath))
            {
                GlyphPalette pal = new GlyphPalette(imgstream, 16, 16);

                window = Game.RenderSystem.CreateWindow(SharplikeView.Size, pal, SharplikeView);
            }

            SharplikeView.Controls[0].MouseDown += new MouseEventHandler(SharplikeView_MouseDown);
            SharplikeView.Controls[0].MouseUp += new MouseEventHandler(SharplikeView_MouseUp);
            SharplikeView.Controls[0].MouseMove += new MouseEventHandler(SharplikeView_MouseMove);

            EntityList.ItemDrag += new ItemDragEventHandler(EntityList_ItemDrag);
            SharplikeView.Controls[0].AllowDrop = true;
            SharplikeView.Controls[0].DragDrop += new DragEventHandler(Main_DragDrop);
            SharplikeView.Controls[0].DragOver += new DragEventHandler(Main_DragOver);
            SharplikeView.Controls[0].DragEnter += new DragEventHandler(Main_DragEnter);
            SharplikeView.Controls[0].DragLeave += new EventHandler(Main_DragLeave);

            //Game.SetInputSystem("OpenTK");

            window.Clear();

            ReplaceMap(new MapStack(window.Size, 20, 15, "EditorMap"));
            Map.ViewFrom(new Vector3(0, 0, 0), true);

            Bitmap glyphs = Game.RenderSystem.Window.GlyphPalette.SourceBitmap;
            ImageList il = new ImageList();
            Size glyphSize = Game.RenderSystem.Window.GlyphPalette.GlyphDimensions;

            for (int y = 0; y < Game.RenderSystem.Window.GlyphPalette.RowCount; ++y)
            {
                for (int x = 0; x < Game.RenderSystem.Window.GlyphPalette.ColumnCount; ++x)
                {
                    Rectangle area = new Rectangle(x * glyphSize.Width, y * glyphSize.Height,
                        glyphSize.Width, glyphSize.Height);
                    Bitmap b = new Bitmap(glyphSize.Width, glyphSize.Height, glyphs.PixelFormat);
                    using (Graphics bg = Graphics.FromImage(b))
                    {
                        bg.Clear(Color.Black);
                        bg.DrawImageUnscaled(glyphs.Clone(area, glyphs.PixelFormat), new Point(0, 0));
                    }
                    il.Images.Add(b);
                }
            }
            EntityList.LargeImageList = il;
            EntityList.SmallImageList = il;

            SquareList.LargeImageList = il;
            SquareList.SmallImageList = il;

            foreach (EditorExtensionNode node in AddinManager.GetExtensionNodes("/Sharplike/Entities"))
            {
                ListViewItem i = new ListViewItem();
                i.Text = node.Id;
                i.ToolTipText = node.TooltipText;
                i.Tag = node;
                i.ImageIndex = node.GlyphID;

                EntityList.Items.Add(i);
            }

            foreach (EditorExtensionNode node in AddinManager.GetExtensionNodes("/Sharplike/Squares"))
            {
                ListViewItem i = new ListViewItem();
                i.Text = node.Id;
                i.ToolTipText = node.TooltipText;
                i.Tag = node;
                i.ImageIndex = node.GlyphID;

                SquareList.Items.Add(i);
            }

            foreach (ToolGroupExtensionNode node in AddinManager.GetExtensionNodes("/Sharplike/Editlike/Tools"))
            {
                foreach (ExtensionNode mapnode in node.ChildNodes)
                {
                    if (mapnode.GetType() == typeof(MapToolExtensionNode))
                    {
                        ToolStripButton btn = new ToolStripButton();
                        BuildButton(mapnode as MapToolExtensionNode, btn);
                        EditorTools.Items.Add(btn);
                    }
                    else
                    {
                        ToolStripDropDownButton ddbtn = new ToolStripDropDownButton();
                        ddbtn.DropDown.Width = 200;
                        foreach (MapToolExtensionNode mnode in mapnode.ChildNodes)
                        {

                            ToolStripButton btn = new ToolStripButton();
                            BuildButton(mnode, btn);
                            if (btn.DisplayStyle == ToolStripItemDisplayStyle.Image)
                                btn.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;

                            Image i = mnode.Icon;
                            btn.Click += delegate(object send, EventArgs ea)
                            {
                                ddbtn.Image = i;
                                ddbtn.Tag = btn;
                            };

                            ddbtn.DropDownItems.Add(btn);

                            if (ddbtn.Tag == null)
                            {
                                ddbtn.Tag = btn;
                                ddbtn.Image = mnode.Icon;
                            }
                        }

                        ddbtn.Click += delegate(object send, EventArgs ea)
                        {
                            btn_Click(ddbtn.Tag, ea);
                        };

                        EditorTools.Items.Add(ddbtn);
                    }
                }
                EditorTools.Items.Add(new ToolStripSeparator());
            }

            viewTool = new ViewportTool();
            viewTool.SetActive(this, "");

            Game.Run();
        }
Exemple #11
0
 public override AbstractWindow CreateWindow(Size displayDimensions, GlyphPalette palette, Object context)
 {
     if (win == null)
         win = new TKWindow(displayDimensions, palette, context as Control);
     return win;
 }
Exemple #12
0
        static void Main()
        {
            Game.Initialize(".");

            AbstractWindow gwin;

            String glyphPath = Game.PathTo("curses_640x300.png");
            using (Stream imgstream = File.OpenRead(glyphPath))
            {
                GlyphPalette pal = new GlyphPalette(imgstream, 16, 16);

                Int32 width = 80 * pal.GlyphDimensions.Width;
                Int32 height = 25 * pal.GlyphDimensions.Height;

                try
                {
                    Game.SetRenderSystem("OpenTK");
                    gwin = Game.RenderSystem.CreateWindow(new Size(width, height), pal);

                    Game.SetInputSystem("OpenTK");
                }
                catch (System.NullReferenceException e)
                {
                    Console.WriteLine("Error when loading plugin: " + e.Message + "\n" + e.Source);
                    return;
                }

            }

            Game.InputSystem.LoadConfiguration(Game.PathTo("commands.ini"));

            gwin.Clear();

            map = new MapStack(Game.RenderSystem.Window.WindowSize, 20, 15, "SandboxMap");
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(0, 0, 0));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(1, 0, 0));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(0, 1, 0));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(1, 1, 0));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(-1, 0, 0));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(1, 1, 1));
            map.AddPage(new YellowWallPage(map.PageSize), new Vector3(-1, 0, 1));

            cache = new ZColdCachingAlgorithm(map);

            ent = new WanderingEntity();
            ent.Location = new Vector3(2, 2, 0);
            ent.Map = map;

            gwin.AddRegion(map);

            Sharplike.UI.Controls.Label l = new UI.Controls.Label(new Size(50, 1), new Point(0, 0));
            l.Text = "Label on the map.";
            map.AddRegion(l);

            Sharplike.UI.Controls.Window win = new UI.Controls.Window(new Size(20, 10), new Point(5, 5));
            win.Title = "Dialog Window";
            win.BackgroundColor = Color.FromArgb(100, 0, 0, 200);
            map.AddRegion(win);

            Game.OnGameInitialization += new EventHandler<EventArgs>(game_OnGameInitialization);
            Game.GameProcessing += new EventHandler<EventArgs>(game_GameProcessing);
            StepwiseGameLoop loop = new StepwiseGameLoop(RunGame);
            Game.Run(loop);

            Game.Terminate();
        }
 public AbstractWindow CreateWindow(Size displayDimensions, GlyphPalette palette)
 {
     return(CreateWindow(displayDimensions, palette, null));
 }
 public abstract AbstractWindow CreateWindow(Size displayDimensions, GlyphPalette palette, Object context);