/// <summary> /// Kuuntelee analogisen kontrollin (tatin tai liipaisimen) liikettä. /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="T3"></typeparam> /// <param name="control">Kuunneltava kontrolli</param> /// <param name="trigger">Raja jonka liikkeen tulee ylittää</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p1">1. parametri</param> /// <param name="p2">2. parametri</param> /// <param name="p3">3. parametri</param> /// <returns></returns> public Listener ListenAnalog <T1, T2, T3>(AnalogControl control, double trigger, Action <AnalogState, T1, T2, T3> handler, string helpText, T1 p1, T2 p2, T3 p3) { ChangePredicate <GamePadState> rule = MakeTriggerRule(control, trigger); Action analogHandler = delegate { handler(GenerateAnalogState(control), p1, p2, p3); }; return(AddListener(rule, control, GetAnalogName(control), helpText, analogHandler)); }
public Listener Listen(AccelerometerDirection direction, double trigger, Action handler, string helpText) { Start(); ChangePredicate <Vector3> rule = MakeTriggerRule(direction, trigger); return(AddListener(rule, direction, GetDirectionName(direction), helpText, handler)); }
/// <summary> /// Lisää kuuntelijan ohjaimelle. /// </summary> /// <param name="rule"></param> /// <param name="control"></param> /// <param name="controlName"></param> /// <param name="helpText"></param> /// <param name="handler"></param> /// <param name="args"></param> /// <returns></returns> protected Listener AddListener(ChangePredicate <ControllerState> rule, Control control, string controlName, string helpText, Delegate handler, params object[] args) { var l = new Listener <ControllerState, Control>(rule, Game.Instance.ControlContext, control, controlName, helpText, handler, args); listeners.Add(l); return(l); }
public Listener ListenAnalog(double trigger, Action <AnalogState> handler, string helpText) { Start(); ChangePredicate <Vector3> rule = (Vector3 prev, Vector3 curr) => Project2d(curr).Magnitude >= trigger; Action analogHandler = delegate { handler(new AccelerometerAnalogState(this.Reading, this.PreviousReading)); }; return(AddListener(rule, AccelerometerDirection.Any, "Accelerometer", helpText, analogHandler)); }
/// <summary> /// Kuuntelee hiiren rullaa. /// </summary> /// <param name="handler">Aliohjelma, joka käsittelee </param> /// <param name="helpText"></param> /// <param name="parameters"></param> /// <returns></returns> public Listener ListenWheelGeneric(Delegate handler, string helpText, params object[] parameters) { // Olisi selkeämpää antaa vain tämä käyttäjän käyttöön, mutta koska kaikki // muut Jypelin kuuntelijat myös vaativat parametrien tyyppien määrittelemistä, // niin vaaditaan sitten hiiren rullankin kanssa jotta toimintamalli on yhtenäinen. // Toki tyypin määrittelyssä on oppilaille suunnatussa kirjastossa se hyvä puoli, // että se tarkistaa että määritellyt tyypit (esim. T1 ja T2) eivät poikkea // parametrien tyypeistä (ellei parametrien tyyppejä haeta automaattisesti, mikä // yleensä tapahtuu). ChangePredicate <MouseState> rule = MakeWheelTriggerRule(); return(AddListener(rule, MouseButton.None, "Mouse wheel", helpText, handler, parameters)); }
/// <summary> /// Kuuntelee peliohjaimen nappulan painalluksia. /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="T3"></typeparam> /// <param name="button">Nappi</param> /// <param name="state">Napin tila</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p1">1. parametri kuuntelija-aliohjelmalle</param> /// <param name="p2">2. parametri kuuntelija-aliohjelmalle</param> /// <param name="p3">3. parametri kuuntelija-aliohjelmalle</param> public Listener Listen <T1, T2, T3>(Button button, ButtonState state, Action <T1, T2, T3> handler, string helpText, T1 p1, T2 p2, T3 p3) { ChangePredicate <GamePadState> rule = MakeTriggerRule(button, state); return(AddListener(rule, button, GetButtonName(button), helpText, handler, p1, p2, p3)); }
/// <summary> /// Kuuntelee peliohjaimen nappulan painalluksia. /// </summary> /// <param name="button">Nappi</param> /// <param name="state">Napin tila</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> public Listener Listen(Button button, ButtonState state, Action handler, string helpText) { ChangePredicate <GamePadState> rule = MakeTriggerRule(button, state); return(AddListener(rule, button, GetButtonName(button), helpText, handler)); }
/// <summary> /// Kuuntelee näppäinten painalluksia. /// </summary> /// <typeparam name="T1">1. parametrin tyyppi</typeparam> /// <typeparam name="T2">2. parametrin tyyppi</typeparam> /// <typeparam name="T3">3. parametrin tyyppi</typeparam> /// <typeparam name="T4">4. parametrin tyyppi</typeparam> /// <param name="k">Näppäin</param> /// <param name="state">Näppäimen tila</param> /// <param name="handler">Mitä tehdään</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p1">1. parametri</param> /// <param name="p2">2. parametri</param> /// <param name="p3">3. parametri</param> /// <param name="p4">4. parametri</param> public Listener Listen <T1, T2, T3, T4>(Key k, ButtonState state, Action <T1, T2, T3, T4> handler, string helpText, T1 p1, T2 p2, T3 p3, T4 p4) { ChangePredicate <KeyboardState> rule = MakeTriggerRule(k, state); return(AddListener(rule, k, GetKeyName(k), helpText, handler, p1, p2, p3, p4)); }
/// <summary> /// Kuuntelee näppäinten painalluksia. /// </summary> /// <typeparam name="T">Parametrin tyyppi</typeparam> /// <param name="k">Näppäin</param> /// <param name="state">Näppäimen tila</param> /// <param name="handler">Mitä tehdään</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p">Parametri</param> public Listener Listen <T>(Key k, ButtonState state, Action <T> handler, string helpText, T p) { ChangePredicate <KeyboardState> rule = MakeTriggerRule(k, state); return(AddListener(rule, k, GetKeyName(k), helpText, handler, p)); }
/// <summary> /// Kuuntelee hiirenpainalluksia annetun peliolion päällä. /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="T3"></typeparam> /// <param name="obj">Olio, jonka päällä hiiren kursorin tulisi olla.</param> /// <param name="button">Hiiren nappula.</param> /// <param name="state">Nappulan tila.</param> /// <param name="handler">Tapahtuman käsittelijä.</param> /// <param name="helpText">Ohjeteksti.</param> /// <param name="p1"></param> /// <param name="p2"></param> /// <param name="p3"></param> public Listener ListenOn <T1, T2, T3>(GameObject obj, MouseButton button, ButtonState state, Action <T1, T2, T3> handler, string helpText, T1 p1, T2 p2, T3 p3) { ChangePredicate <MouseState> rule = MakeTriggerRule(obj, HoverState.On, button, state); return(AddListener(rule, button, GetButtonName(button, obj), helpText, handler, p1, p2, p3)); }
/// <summary> /// Kuuntelee hiirenpainalluksia annetun peliolion päällä. /// </summary> /// <typeparam name="T">Tapahtuman käsittelijän parametrin tyyppi.</typeparam> /// <param name="obj">Olio, jonka päällä hiiren kursorin tulisi olla.</param> /// <param name="hoverstate">Hiiren leijumistila, jolloin painallus katsotaan tapahtuneeksi. /// Käytetään vain, jos hiiren nappulan tilaksi annetaan <see cref="ButtonState.Irrelevant"/></param> /// <param name="button">Hiiren nappula.</param> /// <param name="state">Nappulan tila.</param> /// <param name="handler">Tapahtuman käsittelijä.</param> /// <param name="helpText">Ohjeteksti.</param> /// <param name="p">Tapahtuman käsittelijän parametri.</param> public Listener ListenOn <T>(GameObject obj, HoverState hoverstate, MouseButton button, ButtonState state, Action <T> handler, string helpText, T p) { ChangePredicate <MouseState> rule = MakeTriggerRule(obj, hoverstate, button, state); return(AddListener(rule, button, GetButtonName(button, obj), helpText, handler, p)); }
/// <summary> /// Kuuntelee hiiren liikettä. /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <typeparam name="T3"></typeparam> /// <param name="trigger">Raja jonka liikkeen tulee ylittää</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p1">1. parametri kuuntelija-aliohjelmalle</param> /// <param name="p2">2. parametri kuuntelija-aliohjelmalle</param> /// <param name="p3">3. parametri kuuntelija-aliohjelmalle</param> public Listener ListenMovement <T1, T2, T3>(double trigger, Action <T1, T2, T3> handler, string helpText, T1 p1, T2 p2, T3 p3) { ChangePredicate <MouseState> rule = MakeTriggerRule(trigger); return(AddListener(rule, MouseButton.None, "Mouse movement", helpText, handler, p1, p2, p3)); }
/// <summary> /// Kuuntelee hiiren liikettä. /// </summary> /// <param name="trigger">Raja jonka liikkeen tulee ylittää</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> public Listener ListenMovement(double trigger, Action handler, string helpText) { ChangePredicate <MouseState> rule = MakeTriggerRule(trigger); return(AddListener(rule, MouseButton.None, "Mouse movement", helpText, handler)); }
/// <summary> /// Kuuntelee hiiren nappulan painalluksia. /// </summary> /// <typeparam name="T1"></typeparam> /// <typeparam name="T2"></typeparam> /// <param name="button">Nappi</param> /// <param name="state">Napin tila</param> /// <param name="handler">Kuuntelija-aliohjelma</param> /// <param name="helpText">Ohjeteksti</param> /// <param name="p1">1. parametri kuuntelija-aliohjelmalle</param> /// <param name="p2">2. parametri kuuntelija-aliohjelmalle</param> public Listener Listen <T1, T2>(MouseButton button, ButtonState state, Action <T1, T2> handler, string helpText, T1 p1, T2 p2) { ChangePredicate <MouseState> rule = MakeTriggerRule(button, state); return(AddListener(rule, button, GetButtonName(button), helpText, handler, p1, p2)); }
public Listener ListenMovement <T1, T2>(double trigger, Action <AnalogState, T1, T2> handler, string helpText, T1 p1, T2 p2) { ChangePredicate <MouseState> rule = MakeTriggerRule(trigger); return(AddListener(rule, MouseButton.None, "Mouse movement", helpText, handler, new MouseAnalogState(this), p1, p2)); }
public Listener Listen <T1, T2, T3>(MouseButton button, ButtonState state, Action <AnalogState, T1, T2, T3> handler, string helpText, T1 p1, T2 p2, T3 p3) { ChangePredicate <MouseState> rule = MakeTriggerRule(button, state); return(AddListener(rule, button, GetButtonName(button), helpText, handler, new MouseAnalogState(this), p1, p2, p3)); }