Advertisement
StormWingDelta

SFMLCPPToCSharpExample

Apr 7th, 2014
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.50 KB | None | 0 0
  1. //What's below is an example of how to turn the C++ Examples for SFML into C# ones.  I'll be working on this so don't think it is finished. :p
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using SFML;
  8. using SFML.Graphics;
  9. using SFML.Audio;
  10. using SFML.Window;
  11. using System.IO;
  12. //using System.Drawing;
  13.  
  14.  
  15.  
  16. namespace CSharpSFMLTest1
  17. {
  18.     class SFMLMainTest2
  19.     {
  20.         RenderWindow window;
  21.         Font exfont;
  22.         Text extext2, extext3, extextmouse1, extextmouse2, extextmouse3, extextmouse4, extextmouse5, extextmouse6;
  23.         public SFMLMainTest2()
  24.         {
  25.             exfont = new Font("Fonts/00Starmap/00TT.TTF");
  26.             extext2 = new Text("Key Pressed: ", exfont, 30);
  27.             extext3 = new Text("Key Released: ", exfont, 30);
  28.             extextmouse1 = new Text("Mouse Pressed: ", exfont, 30);
  29.             extextmouse2 = new Text("Mouse Released: ", exfont, 30);
  30.             extextmouse3 = new Text("Mouse Wheel: ", exfont, 30);
  31.             extextmouse4 = new Text("Mouse At: ", exfont, 30);
  32.             extextmouse5 = new Text("Mouse Entered At: ", exfont, 30);
  33.             extextmouse6 = new Text("Mouse Exited At: ", exfont, 30);
  34.  
  35.         }
  36.  
  37.         public void StartSFMLProgram2()
  38.         {
  39.             window = new RenderWindow(new VideoMode(800, 600), "SFML C# Test 1");
  40.            
  41.             Image image = new Image((uint)TestImages.ClosedGridLone1Side.Width,
  42.                 (uint)TestImages.ClosedGridLone1Side.Height,
  43.                 GetRGBValues(TestImages.ClosedGridLone1Side));
  44.             //Sprite exsprite = new Sprite(new Texture("Images/ClosedGridCorner.png"));
  45.             Sprite exsprite = new Sprite(new Texture(image));
  46.  
  47.             //Font exfont = new Font("Fonts/ancientrunes.ttf");
  48.            
  49.  
  50.             Text extext = new Text("My Font!!!", exfont, 30);
  51.            
  52.             extext2.Position = new Vector2f(0,100);
  53.             extext3.Position = new Vector2f(0, 140);
  54.             extextmouse1.Position = new Vector2f(0, 180);
  55.             extextmouse2.Position = new Vector2f(0, 220);
  56.             extextmouse3.Position = new Vector2f(0, 260);
  57.             extextmouse4.Position = new Vector2f(0, 300);
  58.             extextmouse5.Position = new Vector2f(0, 340);
  59.             extextmouse6.Position = new Vector2f(0, 380);
  60.  
  61.             window.Closed += new EventHandler(OnClosed);
  62.             window.KeyPressed += new EventHandler<KeyEventArgs>(KeyEventPressed);
  63.             window.KeyReleased += new EventHandler<KeyEventArgs>(KeyEventReleased);
  64.             window.MouseButtonPressed += new EventHandler<MouseButtonEventArgs>(MouseEventPressed);
  65.             window.MouseButtonReleased += new EventHandler<MouseButtonEventArgs>(MouseEventReleased);
  66.             window.MouseWheelMoved += new EventHandler<MouseWheelEventArgs>(MouseEventWheelChange);
  67.             window.MouseMoved += new EventHandler<MouseMoveEventArgs>(MouseEventMoved);
  68.             window.MouseEntered += new EventHandler(MouseEventEntered);
  69.             window.MouseLeft += new EventHandler(MouseEventExited);
  70.  
  71.             while (window.IsOpen())
  72.             {
  73.                
  74.                
  75.                 window.DispatchEvents();
  76.                 window.Clear();
  77.                 window.Draw(exsprite);
  78.                 window.Draw(extext);
  79.                 window.Draw(extext2);
  80.                 window.Draw(extext3);
  81.  
  82.                 window.Draw(extextmouse1);
  83.                 window.Draw(extextmouse2);
  84.                 window.Draw(extextmouse3);
  85.                 window.Draw(extextmouse4);
  86.                 window.Draw(extextmouse5);
  87.                 window.Draw(extextmouse6);
  88.  
  89.                 window.Display();
  90.             }
  91.  
  92.         }
  93.  
  94.         void OnClosed(object sender, EventArgs e)
  95.         {
  96.             window.Close();
  97.         }
  98.  
  99.         void KeyEventPressed(object sender, KeyEventArgs e)
  100.         {
  101.             extext2.DisplayedString = "Key Pressed: " + e.Code;
  102.  
  103.         }
  104.         void KeyEventReleased(object sender, KeyEventArgs e)
  105.         {
  106.             extext3.DisplayedString = "Key Released: " + e.Code;
  107.  
  108.         }
  109.         void MouseEventPressed(object sender, MouseButtonEventArgs e)
  110.         {
  111.             extextmouse1.DisplayedString = "Mouse Pressed: " + e.Button + " At: ("+e.X+","+e.Y+")";
  112.         }
  113.         void MouseEventReleased(object sender, MouseButtonEventArgs e)
  114.         {
  115.             extextmouse2.DisplayedString = "Mouse Released: " + e.Button + " At: (" + e.X + "," + e.Y + ")";
  116.         }
  117.         void MouseEventWheelChange(object sender, MouseWheelEventArgs e)
  118.         {
  119.             extextmouse3.DisplayedString = "Mouse Wheel: " + e.Delta + " At: (" + e.X + "," + e.Y + ")";
  120.         }
  121.  
  122.         void MouseEventMoved(object sender, MouseMoveEventArgs e)
  123.         {
  124.             extextmouse4.DisplayedString = "Mouse At: (" + e.X + "," + e.Y + ")";
  125.         }
  126.         void MouseEventEntered(object sender, EventArgs e)
  127.         {
  128.             extextmouse5.DisplayedString = "Mouse Entered At: (" + Mouse.GetPosition().X + "," + Mouse.GetPosition().Y + ")";
  129.         }
  130.         void MouseEventExited(object sender, EventArgs e)
  131.         {
  132.             extextmouse6.DisplayedString = "Mouse Exited At: (" + Mouse.GetPosition().X + "," + Mouse.GetPosition().Y + ")";
  133.         }
  134.  
  135.         //http://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array-in-c
  136.         private static byte[] ImageToByteArray(System.Drawing.Image resourceimage)
  137.         {
  138.             System.Drawing.ImageConverter imgcon = new System.Drawing.ImageConverter();
  139.             return (byte[])imgcon.ConvertTo(resourceimage, typeof(byte[]));
  140.         }
  141.  
  142.         // Yes Straight up C&P from here:
  143.         //http://social.msdn.microsoft.com/Forums/vstudio/en-US/47c5a003-1d26-4213-9370-fba3aa170c21/fastest-method-to-convert-bitmap-object-to-byte-array?forum=csharpgeneral
  144.         // A Case of either use full quantified names for SFML or C#. >.>
  145.         private static byte[] GetRGBValues(System.Drawing.Bitmap bmp)
  146.         {
  147.  
  148.             // Lock the bitmap's bits.
  149.             System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);
  150.             System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
  151.  
  152.             // Get the address of the first line.
  153.             IntPtr ptr = bmpData.Scan0;
  154.  
  155.             // Declare an array to hold the bytes of the bitmap.
  156.             int bytes = bmpData.Stride * bmp.Height;
  157.             byte[] rgbValues = new byte[bytes];
  158.  
  159.             // Copy the RGB values into the array.
  160.             System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
  161.             bmp.UnlockBits(bmpData);
  162.  
  163.             return rgbValues;
  164.         }
  165.  
  166.     }
  167.  
  168.     class MySFMLProgram
  169.     {
  170.         RenderWindow _window;
  171.         public void StartSFMLProgram()
  172.         {
  173.             _window = new RenderWindow(new VideoMode(800, 600), "SFML window");
  174.             _window.SetVisible(true);
  175.             _window.Closed += new EventHandler(OnClosed);
  176.             while (_window.IsOpen())
  177.             {
  178.                 _window.DispatchEvents();
  179.                 _window.Clear(Color.Red);
  180.                 _window.Display();
  181.             }
  182.         }
  183.         void OnClosed(object sender, EventArgs e)
  184.         {
  185.             _window.Close();
  186.         }
  187.     }
  188.  
  189.  
  190.     /*
  191.      */
  192.     //http://hongouru.blogspot.com/2010/10/c-how-to-add-fonts-ttf-true-type-fonts.html
  193.     public class MovingSprite : Sprite
  194.     {
  195.  
  196.         public MovingSprite() : base()
  197.         {}
  198.         public MovingSprite(Texture texture)
  199.             : base(texture)
  200.         {
  201.  
  202.             CenterOrigin();
  203.         }
  204.         public MovingSprite(Texture texture, IntRect intrect)
  205.             : base(texture, intrect)
  206.         {
  207.             CenterOrigin();
  208.         }
  209.         public MovingSprite(MovingSprite copy)
  210.             : base(copy)
  211.         { }
  212.  
  213.         public void CenterOrigin()
  214.         {
  215.             if(this.Texture != null && !this.TextureRect.Equals(null))
  216.             {
  217.                 this.Origin = new Vector2f(this.TextureRect.Width / 2, this.TextureRect.Height / 2);
  218.                
  219.             }
  220.         }
  221.  
  222.         public void MoveSprite(float xvec, float yvec)
  223.         {
  224.             this.Position += new Vector2f(xvec,yvec);
  225.         }
  226.         public void MoveSpriteByDirection(float angledirection, float speed)
  227.         {
  228.             //MoveSprite();
  229.         }
  230.  
  231.     }
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement