public void SetHandler(IAreaHandler handler) { PlayerHandler?.PlayerLeft(); PlayerHandler = handler; PlayerHandler.PlayerJoin(); }
public void Process(PlayerLoaded playerLoaded) { if (playerLoaded.Token.IsCancellationRequested) { return; } var playerContext = new PlayerContex(playerLoaded.StoreData, playerLoaded.Output); state.Players.Add(playerContext.Id, playerContext); IAreaHandler handler = playerContext.PlayerType == PlayerType.Bot ? new StasisAreaHandler(playerContext.Id, state) : (playerLoaded.StoreData.IsActivated ? (IAreaHandler) new ReturnAreaHandler(playerContext.Id, state) : new WelcomeAreaHandler(playerContext.Id, state)); playerContext.SetHandler(handler); }
protected AreaBase(IAreaHandler handler) { var areaHandlerInternal = new AreaHandler { DragBroken = (areaHandler, area) => { var realArea = Areas[area]; handler.DragBroken(realArea); }, Draw = (IntPtr areaHandler, IntPtr area, ref AreaDrawParamsInternal param) => { var realArea = Areas[area]; var p = (AreaDrawParams)param; handler.Draw(realArea, ref p); }, KeyEvent = (IntPtr areaHandler, IntPtr area, ref AreaKeyEvent keyEvent) => { var realArea = Areas[area]; return(handler.KeyEvent(realArea, ref keyEvent)); }, MouseCrossed = (areaHandler, area, left) => { var realArea = Areas[area]; handler.MouseCrossed(realArea, left); }, MouseEvent = (IntPtr areaHandler, IntPtr area, ref AreaMouseEvent mouseEvent) => { var realArea = Areas[area]; handler.MouseEvent(realArea, ref mouseEvent); } }; AreaHandlerInternal = new AreaHandlerInternal { DragBroken = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.DragBroken), Draw = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.Draw), KeyEvent = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.KeyEvent), MouseCrossed = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.MouseCrossed), MouseEvent = Marshal.GetFunctionPointerForDelegate(areaHandlerInternal.MouseEvent) };; }
public Area(IAreaHandler handler) : base(handler) { handle = NativeMethods.NewArea(AreaHandlerInternal); Areas[handle] = this; }
public ScrollingArea(IAreaHandler handler, int width, int height) : base(handler) { handle = NativeMethods.NewScrollingArea(AreaHandlerInternal, width, height); Areas[handle] = this; }