Skip to content

Commit e70fc89

Browse files
Resolve constructors
1 parent 18e9448 commit e70fc89

File tree

3 files changed

+49
-39
lines changed

3 files changed

+49
-39
lines changed

src/SFML.Graphics/RenderWindow.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ public class RenderWindow : Window.Window, RenderTarget
2121
/// </summary>
2222
/// <param name="mode">Video mode to use</param>
2323
/// <param name="title">Title of the window</param>
24+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
2425
////////////////////////////////////////////////////////////
25-
public RenderWindow(VideoMode mode, string title) :
26-
this(mode, title, Styles.Default, new ContextSettings(0, 0))
26+
public RenderWindow(VideoMode mode, string title, IEventMan manager = null) :
27+
this(mode, title, Styles.Default, new ContextSettings(0, 0), manager)
2728
{
2829
}
2930

@@ -34,9 +35,10 @@ public RenderWindow(VideoMode mode, string title) :
3435
/// <param name="mode">Video mode to use</param>
3536
/// <param name="title">Title of the window</param>
3637
/// <param name="style">Window style (Resize | Close by default)</param>
38+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
3739
////////////////////////////////////////////////////////////
38-
public RenderWindow(VideoMode mode, string title, Styles style) :
39-
this(mode, title, style, new ContextSettings(0, 0))
40+
public RenderWindow(VideoMode mode, string title, Styles style, IEventMan manager = null) :
41+
this(mode, title, style, new ContextSettings(0, 0), manager)
4042
{
4143
}
4244

@@ -48,9 +50,10 @@ public RenderWindow(VideoMode mode, string title, Styles style) :
4850
/// <param name="title">Title of the window</param>
4951
/// <param name="style">Window style (Resize | Close by default)</param>
5052
/// <param name="settings">Creation parameters</param>
53+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
5154
////////////////////////////////////////////////////////////
52-
public RenderWindow(VideoMode mode, string title, Styles style, ContextSettings settings) :
53-
base(IntPtr.Zero, 0)
55+
public RenderWindow(VideoMode mode, string title, Styles style, ContextSettings settings, IEventMan manager = null) :
56+
base(manager, IntPtr.Zero)
5457
{
5558
// Copy the string to a null-terminated UTF-32 byte array
5659
byte[] titleAsUtf32 = Encoding.UTF32.GetBytes(title + '\0');
@@ -70,9 +73,10 @@ public RenderWindow(VideoMode mode, string title, Styles style, ContextSettings
7073
/// Create the window from an existing control with default creation settings
7174
/// </summary>
7275
/// <param name="handle">Platform-specific handle of the control</param>
76+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
7377
////////////////////////////////////////////////////////////
74-
public RenderWindow(IntPtr handle) :
75-
this(handle, new ContextSettings(0, 0))
78+
public RenderWindow(IntPtr handle, IEventMan manager = null) :
79+
this(handle, new ContextSettings(0, 0), manager)
7680
{
7781
}
7882

@@ -82,9 +86,10 @@ public RenderWindow(IntPtr handle) :
8286
/// </summary>
8387
/// <param name="handle">Platform-specific handle of the control</param>
8488
/// <param name="settings">Creation parameters</param>
89+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
8590
////////////////////////////////////////////////////////////
86-
public RenderWindow(IntPtr handle, ContextSettings settings) :
87-
base(sfRenderWindow_createFromHandle(handle, ref settings), 0)
91+
public RenderWindow(IntPtr handle, ContextSettings settings, IEventMan manager = null) :
92+
base(manager, sfRenderWindow_createFromHandle(handle, ref settings))
8893
{
8994
Initialize();
9095
}

src/SFML.Window/Window.cs

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,17 @@ namespace SFML.Window
1313
////////////////////////////////////////////////////////////
1414
public class Window : WindowBase
1515
{
16-
////////////////////////////////////////////////////////////
17-
/// <summary>
18-
/// Create the window with default style and creation settings
19-
/// </summary>
20-
/// <param name="mode">Video mode to use</param>
21-
/// <param name="title">Title of the window</param>
22-
////////////////////////////////////////////////////////////
23-
public Window(VideoMode mode, string title) :
24-
this(mode, title, Styles.Default, new ContextSettings(0, 0))
25-
{
26-
}
27-
2816
////////////////////////////////////////////////////////////
2917
/// <summary>
3018
/// Create the window with default creation settings
3119
/// </summary>
3220
/// <param name="mode">Video mode to use</param>
3321
/// <param name="title">Title of the window</param>
3422
/// <param name="style">Window style (Resize | Close by default)</param>
23+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
3524
////////////////////////////////////////////////////////////
36-
public Window(VideoMode mode, string title, Styles style) :
37-
this(mode, title, style, new ContextSettings(0, 0))
25+
public Window(VideoMode mode, string title, Styles style = Styles.Default, IEventMan manager = null) :
26+
this(mode, title, style, new ContextSettings(0, 0), manager)
3827
{
3928
}
4029

@@ -46,9 +35,10 @@ public Window(VideoMode mode, string title, Styles style) :
4635
/// <param name="title">Title of the window</param>
4736
/// <param name="style">Window style (Resize | Close by default)</param>
4837
/// <param name="settings">Creation parameters</param>
38+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
4939
////////////////////////////////////////////////////////////
50-
public Window(VideoMode mode, string title, Styles style, ContextSettings settings) :
51-
base(IntPtr.Zero)
40+
public Window(VideoMode mode, string title, Styles style, ContextSettings settings, IEventMan manager = null) :
41+
base(IntPtr.Zero, manager)
5242
{
5343
// Copy the title to a null-terminated UTF-32 byte array
5444
byte[] titleAsUtf32 = Encoding.UTF32.GetBytes(title + '\0');
@@ -79,9 +69,10 @@ public Window(IntPtr handle) :
7969
/// </summary>
8070
/// <param name="Handle">Platform-specific handle of the control</param>
8171
/// <param name="settings">Creation parameters</param>
72+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
8273
////////////////////////////////////////////////////////////
83-
public Window(IntPtr Handle, ContextSettings settings) :
84-
base(sfWindow_createFromHandle(Handle, ref settings))
74+
public Window(IntPtr Handle, ContextSettings settings, IEventMan manager = null) :
75+
base(sfWindow_createFromHandle(Handle, ref settings), manager)
8576
{
8677
}
8778

@@ -379,14 +370,12 @@ public override string ToString()
379370
/// <summary>
380371
/// Constructor for derived classes
381372
/// </summary>
373+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
382374
/// <param name="cPointer">Pointer to the internal object in the C API</param>
383-
/// <param name="dummy">Internal hack :)</param>
384375
////////////////////////////////////////////////////////////
385-
protected Window(IntPtr cPointer, int dummy) :
386-
base(cPointer, 0)
387-
{
388-
// TODO : find a cleaner way of separating this constructor from Window(IntPtr handle)
389-
}
376+
protected Window(IEventMan manager, IntPtr cPointer) :
377+
base(manager, cPointer)
378+
{ }
390379

391380
////////////////////////////////////////////////////////////
392381
/// <summary>

src/SFML.Window/WindowBase.cs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ public class WindowBase : ObjectBase
5757
/// <param name="mode">Video mode to use</param>
5858
/// <param name="title">Title of the window</param>
5959
/// <param name="style">Window style (Resize | Close by default)</param>
60+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
6061
////////////////////////////////////////////////////////////
61-
public WindowBase(VideoMode mode, string title, Styles style) :
62+
public WindowBase(VideoMode mode, string title, Styles style = Styles.Default, IEventMan manager = null) :
6263
base(IntPtr.Zero)
6364
{
6465
// Copy the title to a null-terminated UTF-32 byte array
@@ -71,17 +72,28 @@ public WindowBase(VideoMode mode, string title, Styles style) :
7172
CPointer = sfWindowBase_createUnicode(mode, (IntPtr)titlePtr, style);
7273
}
7374
}
75+
if (manager == null)
76+
{
77+
manager = new SubscribeManager() { Parent = this };
78+
}
79+
SfmlEventManager = manager;
7480
}
7581

7682
////////////////////////////////////////////////////////////
7783
/// <summary>
7884
/// Create the window from an existing control
7985
/// </summary>
8086
/// <param name="Handle">Platform-specific handle of the control</param>
87+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
8188
////////////////////////////////////////////////////////////
82-
public WindowBase(IntPtr Handle) :
89+
public WindowBase(IntPtr Handle, IEventMan manager = null) :
8390
base(sfWindowBase_createFromHandle(Handle))
8491
{
92+
if (manager == null)
93+
{
94+
manager = new SubscribeManager() { Parent = this };
95+
}
96+
SfmlEventManager = manager;
8597
}
8698

8799
////////////////////////////////////////////////////////////
@@ -346,13 +358,17 @@ public override string ToString()
346358
/// <summary>
347359
/// Constructor for derived classes
348360
/// </summary>
361+
/// <param name="manager">A custom event manager. By default, a SubscribeManager object is created</param>
349362
/// <param name="cPointer">Pointer to the internal object in the C API</param>
350-
/// <param name="dummy">Internal hack :)</param>
351363
////////////////////////////////////////////////////////////
352-
protected WindowBase(IntPtr cPointer, int dummy) :
364+
protected WindowBase(IEventMan manager, IntPtr cPointer) :
353365
base(cPointer)
354366
{
355-
// TODO : find a cleaner way of separating this constructor from WindowBase(IntPtr handle)
367+
if (manager == null)
368+
{
369+
manager = new SubscribeManager() { Parent = this };
370+
}
371+
SfmlEventManager = manager;
356372
}
357373

358374
////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)