hedgewars/uCursor.pas
author Wuzzy <Wuzzy2@mail.ru>
Tue, 24 Jul 2018 20:07:58 +0200
branch0.9.24
changeset 13550 d42237d16acf
parent 12831 1fbc0d5a82d0
child 12890 9c259fb4d405
child 13494 424944a835a7
permissions -rw-r--r--
Limit max droplet count to 50 (fix for 0.9.24 branch only) This fixes the issue with insane amounts of droplets in 0.9.24. It's temporary, the real fix is in default branch, but would be desyncing.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     1
unit uCursor;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     2
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     3
interface
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     4
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     5
procedure init;
8225
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
     6
procedure resetPosition;
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     7
procedure updatePosition;
8346
3443e0de2c9d GCI2012: Advanced Keyboard Configuration
dag10
parents: 8225
diff changeset
     8
procedure handlePositionUpdate(x, y: LongInt);
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
     9
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    10
implementation
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    11
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    12
uses SDLh, uVariables;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    13
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    14
procedure init;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    15
begin
8225
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
    16
    resetPosition();
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
    17
end;
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
    18
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
    19
procedure resetPosition;
186229af4fc1 GCI2012: Remove Quit Prompt On Mouse Click
Drew Gottlieb
parents: 6580
diff changeset
    20
begin
12831
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    21
    // Move curser by 1px in case it's already centered.
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    22
    // The game camera in the Alpha for 0.9.23 screwed up if
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    23
    // the game started with the mouse already being centered.
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    24
    // This fixes it, but we might have overlooked a related
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    25
    // bug somewhere else.
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    26
    // No big deal since this function is (so far) only called once.
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    27
    SDL_WarpMouse((cScreenWidth div 2) + 1, cScreenHeight div 2);
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    28
    SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2);
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    29
end;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    30
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    31
procedure updatePosition;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    32
var x, y: LongInt;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    33
begin
12831
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    34
    SDL_GetMouseState(@x, @y);
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 10015
diff changeset
    35
12831
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    36
    if(x <> cScreenWidth div 2) or (y <> cScreenHeight div 2) then
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    37
    begin
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    38
        handlePositionUpdate(x - cScreenWidth div 2, y - cScreenHeight div 2);
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    39
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    40
        if cHasFocus then
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    41
            SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2);
1fbc0d5a82d0 Backed out changeset 575c0de98505
Wuzzy <Wuzzy2@mail.ru>
parents: 12793
diff changeset
    42
    end
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    43
end;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    44
8346
3443e0de2c9d GCI2012: Advanced Keyboard Configuration
dag10
parents: 8225
diff changeset
    45
procedure handlePositionUpdate(x, y: LongInt);
3443e0de2c9d GCI2012: Advanced Keyboard Configuration
dag10
parents: 8225
diff changeset
    46
begin
3443e0de2c9d GCI2012: Advanced Keyboard Configuration
dag10
parents: 8225
diff changeset
    47
    CursorPoint.X:= CursorPoint.X + x;
3443e0de2c9d GCI2012: Advanced Keyboard Configuration
dag10
parents: 8225
diff changeset
    48
    CursorPoint.Y:= CursorPoint.Y - y;
5191
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    49
end;
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    50
c7000a6b397b - Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
diff changeset
    51
end.