Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • v-lafeychine/prog-2
1 result
Show changes
package SFML.Wrapper
import scalanative.unsafe.*
trait SFMLBind[T]:
def bind(implicit z: Zone): Ptr[T]
package SFML.Wrapper
package Window
enum Event:
case Closed()
case Resized(val width: Int, val height: Int)
case LostFocus()
case GainedFocus()
case TextEntered(val unicode: Int)
case KeyPressed(val code: Keyboard.Key) // , val alt: Boolean, val control: Boolean, val shift: Boolean, val system: Boolean)
case KeyReleased(val code: Keyboard.Key) // , val alt: Boolean, val control: Boolean, val shift: Boolean, val system: Boolean)
case MouseWheelScrolled(val wheel: Mouse.Wheel) // , val delta: Float, val x: Int, val y: Int)
case MouseButtonPressed(val button: Mouse.Button, val x: Int, val y: Int)
case MouseButtonReleased(val button: Mouse.Button, val x: Int, val y: Int)
case MouseMoved(val x: Int, val y: Int)
case MouseEntered()
case MouseLeft()
case JoystickButtonPressed(val joystickId: Int, val button: Int)
case JoystickButtonReleased(val joystickId: Int, val button: Int)
case JoystickMoved(val joystickId: Int, val axis: Joystick.Axis) // , val position: Float)
case JoystickConnected(val joystickId: Int)
case JoystickDisconnected(val joystickId: Int)
case TouchBegan(val finger: Int, val x: Int, val y: Int)
case TouchMoved(val finger: Int, val x: Int, val y: Int)
case TouchEnded(val finger: Int, val x: Int, val y: Int)
case SensorChanged(val sensor: Sensor.Type) // , val x: Float, val y: Float, val z: Float)
object FactoryEvent:
import SFML.Bindings.Window.Event.*
def apply(event: sfEvent): Option[Event] =
sfEventType.fromOrdinal(event._1) match
case sfEventType.sfEvtClosed => Some(Event.Closed())
case sfEventType.sfEvtResized => Some(Event.Resized(event._2, event._3))
case sfEventType.sfEvtLostFocus => Some(Event.LostFocus())
case sfEventType.sfEvtGainedFocus => Some(Event.GainedFocus())
case sfEventType.sfEvtTextEntered => Some(Event.TextEntered(event._2))
case sfEventType.sfEvtKeyPressed => Some(Event.KeyPressed(Keyboard.Key.fromOrdinal(event._2 + 1))) // , event._3, event._4, event._5, event._6))
case sfEventType.sfEvtKeyReleased => Some(Event.KeyReleased(Keyboard.Key.fromOrdinal(event._2 + 1))) // , event._3, event._4, event._5, event._6))
case sfEventType.sfEvtMouseWheelScrolled => Some(Event.MouseWheelScrolled(Mouse.Wheel.fromOrdinal(event._2)))
case sfEventType.sfEvtMouseButtonPressed => Some(Event.MouseButtonPressed(Mouse.Button.fromOrdinal(event._2), event._3, event._4))
case sfEventType.sfEvtMouseButtonReleased => Some(Event.MouseButtonReleased(Mouse.Button.fromOrdinal(event._2), event._3, event._4))
case sfEventType.sfEvtMouseMoved => Some(Event.MouseMoved(event._2, event._3))
case sfEventType.sfEvtMouseEntered => Some(Event.MouseEntered())
case sfEventType.sfEvtMouseLeft => Some(Event.MouseLeft())
case sfEventType.sfEvtJoystickButtonPressed => Some(Event.JoystickButtonPressed(event._2, event._2))
case sfEventType.sfEvtJoystickButtonReleased => Some(Event.JoystickButtonReleased(event._2, event._3))
case sfEventType.sfEvtJoystickMoved => Some(Event.JoystickMoved(event._2, Joystick.Axis.fromOrdinal(event._2)))
case sfEventType.sfEvtJoystickConnected => Some(Event.JoystickConnected(event._2))
case sfEventType.sfEvtJoystickDisconnected => Some(Event.JoystickDisconnected(event._2))
case sfEventType.sfEvtTouchBegan => Some(Event.TouchBegan(event._2, event._3, event._4))
case sfEventType.sfEvtTouchMoved => Some(Event.TouchMoved(event._2, event._3, event._4))
case sfEventType.sfEvtTouchEnded => Some(Event.TouchEnded(event._2, event._3, event._4))
case sfEventType.sfEvtSensorChanged => Some(Event.SensorChanged(Sensor.Type.fromOrdinal(event._2)))
case _ => None
package SFML.Wrapper
package Window
object Joystick:
enum Axis:
case X
case Y
case Z
case R
case U
case V
case PovX
case PovY
package SFML.Wrapper
package Window
object Keyboard:
enum Key(val value: Int):
case KeyUnknown extends Key(-1)
case KeyA extends Key(0)
case KeyB extends Key(1)
case KeyC extends Key(2)
case KeyD extends Key(3)
case KeyE extends Key(4)
case KeyF extends Key(5)
case KeyG extends Key(6)
case KeyH extends Key(7)
case KeyI extends Key(8)
case KeyJ extends Key(9)
case KeyK extends Key(10)
case KeyL extends Key(11)
case KeyM extends Key(12)
case KeyN extends Key(13)
case KeyO extends Key(14)
case KeyP extends Key(15)
case KeyQ extends Key(16)
case KeyR extends Key(17)
case KeyS extends Key(18)
case KeyT extends Key(19)
case KeyU extends Key(20)
case KeyV extends Key(21)
case KeyW extends Key(22)
case KeyX extends Key(23)
case KeyY extends Key(24)
case KeyZ extends Key(25)
case KeyNum0 extends Key(26)
case KeyNum1 extends Key(27)
case KeyNum2 extends Key(28)
case KeyNum3 extends Key(29)
case KeyNum4 extends Key(30)
case KeyNum5 extends Key(31)
case KeyNum6 extends Key(32)
case KeyNum7 extends Key(33)
case KeyNum8 extends Key(34)
case KeyNum9 extends Key(35)
case KeyEscape extends Key(36)
case KeyLControl extends Key(37)
case KeyLShift extends Key(38)
case KeyLAlt extends Key(39)
case KeyLSystem extends Key(40)
case KeyRControl extends Key(41)
case KeyRShift extends Key(42)
case KeyRAlt extends Key(43)
case KeyRSystem extends Key(44)
case KeyMenu extends Key(45)
case KeyLBracket extends Key(46)
case KeyRBracket extends Key(47)
case KeySemicolon extends Key(48)
case KeyComma extends Key(49)
case KeyPeriod extends Key(50)
case KeyQuote extends Key(51)
case KeySlash extends Key(52)
case KeyBackslash extends Key(53)
case KeyTilde extends Key(54)
case KeyEqual extends Key(55)
case KeyHyphen extends Key(56)
case KeySpace extends Key(57)
case KeyEnter extends Key(58)
case KeyBackspace extends Key(59)
case KeyTab extends Key(60)
case KeyPageUp extends Key(61)
case KeyPageDown extends Key(62)
case KeyEnd extends Key(63)
case KeyHome extends Key(64)
case KeyInsert extends Key(65)
case KeyDelete extends Key(66)
case KeyAdd extends Key(67)
case KeySubtract extends Key(68)
case KeyMultiply extends Key(69)
case KeyDivide extends Key(70)
case KeyLeft extends Key(71)
case KeyRight extends Key(72)
case KeyUp extends Key(73)
case KeyDown extends Key(74)
case KeyNumpad0 extends Key(75)
case KeyNumpad1 extends Key(76)
case KeyNumpad2 extends Key(77)
case KeyNumpad3 extends Key(78)
case KeyNumpad4 extends Key(79)
case KeyNumpad5 extends Key(80)
case KeyNumpad6 extends Key(81)
case KeyNumpad7 extends Key(82)
case KeyNumpad8 extends Key(83)
case KeyNumpad9 extends Key(84)
case KeyF1 extends Key(85)
case KeyF2 extends Key(86)
case KeyF3 extends Key(87)
case KeyF4 extends Key(88)
case KeyF5 extends Key(89)
case KeyF6 extends Key(90)
case KeyF7 extends Key(91)
case KeyF8 extends Key(92)
case KeyF9 extends Key(93)
case KeyF10 extends Key(94)
case KeyF11 extends Key(95)
case KeyF12 extends Key(96)
case KeyF13 extends Key(97)
case KeyF14 extends Key(98)
case KeyF15 extends Key(99)
case KeyPause extends Key(100)
package SFML.Wrapper
package Window
object Mouse:
enum Button:
case Left
case Right
case Middle
case XButton1
case XButton2
enum Wheel:
case VerticalWheel
case HorizontalWheel
package SFML.Wrapper
package Window
object Sensor:
enum Type:
case Accelerometer
case Gyroscope
case Magnetometer
case Gravity
case UserAcceleration
case Orientation
package SFML.Wrapper
package Window
import scalanative.unsafe.*
import scalanative.unsigned.UnsignedRichInt
class VideoMode(val width: Int, val height: Int, val bitsPerPixel: Int) extends SFMLBind[SFML.Bindings.Window.VideoMode.sfVideoMode]:
import SFML.Bindings.Window.VideoMode.*
def bind(implicit z: Zone) =
val videoMode = alloc[sfVideoMode]()
videoMode._1 = width.toUInt
videoMode._2 = height.toUInt
videoMode._3 = bitsPerPixel.toUInt
return videoMode
package SFML.Wrapper
package Window
object Window:
enum WindowStyle(val value: Int):
case None extends WindowStyle(0)
case Titlebar extends WindowStyle(1 << 0)
case Resize extends WindowStyle(1 << 1)
case Close extends WindowStyle(1 << 2)
case Fullscreen extends WindowStyle(1 << 3)
case DefaultStyle extends WindowStyle(Titlebar.value | Resize.value | Close.value)