105 lines
3.6 KiB
C#
105 lines
3.6 KiB
C#
using Firebird2D.SceneSystem;
|
|
using SFML.Graphics;
|
|
using SFML.System;
|
|
using SFML.Window;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Firebird2D.Core
|
|
{
|
|
public class MainWindow
|
|
{
|
|
private RenderWindow renderWindow;
|
|
|
|
private Clock clock = new Clock();
|
|
|
|
private List<uint> joyStickMovement = new List<uint>();
|
|
|
|
public Vector2u mainWindowSize { get; private set; }
|
|
|
|
internal I_Scene? ActiveSecene { set; get; }
|
|
|
|
public MainWindow(VideoMode resolution, string GameName, Styles style = Styles.Default)
|
|
{
|
|
renderWindow = new RenderWindow(resolution, GameName, style);
|
|
|
|
renderWindow.Closed += (sender, e) => renderWindow.Close();
|
|
|
|
renderWindow.Resized += RenderWindow_Resized;
|
|
|
|
mainWindowSize = renderWindow.Size;
|
|
renderWindow.KeyPressed += RenderWindow_KeyPressed;
|
|
renderWindow.JoystickButtonPressed += RenderWindow_JoystickButtonPressed;
|
|
renderWindow.MouseButtonPressed += RenderWindow_MouseButtonPressed;
|
|
renderWindow.MouseMoved += RenderWindow_MouseMoved;
|
|
renderWindow.JoystickMoved += RenderWindow_JoystickMoved;
|
|
}
|
|
|
|
private void RenderWindow_JoystickMoved(object? sender, JoystickMoveEventArgs e)
|
|
{
|
|
if(!joyStickMovement.Contains(e.JoystickId)) joyStickMovement.Add(e.JoystickId);
|
|
}
|
|
|
|
private void RenderWindow_MouseMoved(object? sender, MouseMoveEventArgs e)
|
|
{
|
|
Vector2i mousposition = new Vector2i(e.X, e.Y);
|
|
InputMapper.HandleMouseMovement(mousposition);
|
|
}
|
|
|
|
private void RenderWindow_MouseButtonPressed(object? sender, MouseButtonEventArgs e)
|
|
{
|
|
InputMapper.HandleMouseInput(e.Button);
|
|
}
|
|
|
|
private void RenderWindow_JoystickButtonPressed(object? sender, JoystickButtonEventArgs e)
|
|
{
|
|
InputMapper.HandleJoystickButtonInput(e.JoystickId, e.Button);
|
|
}
|
|
|
|
private void RenderWindow_KeyPressed(object? sender, KeyEventArgs e)
|
|
{
|
|
InputMapper.HandleKeyboardInput(e.Code);
|
|
}
|
|
|
|
private void RenderWindow_Resized(object? sender, SizeEventArgs e)
|
|
{
|
|
//throw new NotImplementedException();
|
|
}
|
|
|
|
public void Gameloop()
|
|
{
|
|
while (renderWindow.IsOpen)
|
|
{
|
|
int delteMiliseconds = clock.Restart().AsMilliseconds();
|
|
|
|
renderWindow.DispatchEvents();
|
|
|
|
renderWindow.Clear();
|
|
|
|
if (ActiveSecene != null)
|
|
{
|
|
foreach (uint joystickId in joyStickMovement)
|
|
InputMapper.HandleJoytickMove(joystickId
|
|
,Joystick.GetAxisPosition(joystickId,Joystick.Axis.X)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.Y)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.Z)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.R)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.U)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.V)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.PovX)
|
|
, Joystick.GetAxisPosition(joystickId, Joystick.Axis.PovY));
|
|
ActiveSecene.TickScene(delteMiliseconds);
|
|
ActiveSecene.RenderScene(renderWindow);
|
|
}
|
|
|
|
renderWindow.Display();
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|