145 行
2.7 KiB
Plaintext
145 行
2.7 KiB
Plaintext
#include "user32.as"
|
|
|
|
#pack "start.ax" ; 暗号化防止
|
|
|
|
#packopt hide 1
|
|
#packopt name "nizika-desktop"
|
|
|
|
#const NIZIKA_WIDTH 300
|
|
#const NIZIKA_HEIGHT 300
|
|
#const NIZIKA_BASE 236
|
|
#const NIZIKA_LEFT 100
|
|
#const NIZIKA_RIGHT 250
|
|
|
|
|
|
; 半透明スクリーン作成
|
|
SCREEN_MAIN = BgScr2 (gInfo_dispX, gInfo_dispY, SCREEN_HIDE, 0, 0)
|
|
SetWindowLong hWnd, GWL_EXSTYLE, GetWindowLong (hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
|
|
SetLayeredWindowAttributes hWnd, RGBCOLOUR_LIME, False, True
|
|
|
|
HWND_DESKTOP = GetDesktopWindow () ; デスクトップ取得
|
|
|
|
Color COLOUR_LIME
|
|
BoxF
|
|
|
|
SCREEN_NIZIKA = Buffer2 ()
|
|
PicLoad "assets/nizika.png"
|
|
|
|
GSel SCREEN_MAIN, 2
|
|
|
|
frame = 0
|
|
|
|
nizikaX = Double (-NIZIKA_LEFT)
|
|
nizikaY = Double (gInfo_dispY - NIZIKA_BASE)
|
|
|
|
direction = 1
|
|
|
|
moving = False
|
|
falling = True
|
|
base = gInfo_dispY
|
|
|
|
Repeat
|
|
Dim hWindows, 1
|
|
Dim windowRects, 4, 1
|
|
|
|
hWindows.0 = GetTopWindow (HWND_DESKTOP)
|
|
hWindowBefore = hWindows.0
|
|
GetWindowRect hWindows.0, VarPtr (windowRects.0.0)
|
|
|
|
windowCnt = 1
|
|
|
|
Repeat
|
|
hWindow = GetWindow (hWindowBefore, GW_HWNDNEXT)
|
|
|
|
If hWindow = 0 {
|
|
Break
|
|
}
|
|
|
|
buf = ""
|
|
GetWindowText hWindow, VarPtr (buf), 256
|
|
|
|
If IsWindowVisible (hWindow) {
|
|
If StrLen (buf) != 0 {
|
|
If hWindow != hWnd {
|
|
hWindows.windowCnt = hWindow
|
|
GetWindowRect hWindow, VarPtr (windowRects.0.windowCnt)
|
|
|
|
windowCnt++
|
|
}
|
|
}
|
|
}
|
|
|
|
hWindowBefore = hWindow
|
|
Loop
|
|
|
|
If GetKey2 (KEY_MOUSE_L) {
|
|
If gInfo_act = SCREEN_MAIN {
|
|
If moving {
|
|
nizikaX = LimitF (mouseX - offsetX, -NIZIKA_LEFT, gInfo_dispX - NIZIKA_RIGHT)
|
|
nizikaY = LimitF (mouseY - offsetY, Null, gInfo_dispY - NIZIKA_BASE)
|
|
}
|
|
Else {
|
|
moving = True
|
|
|
|
offsetX = Double (mouseX - nizikaX)
|
|
offsetY = Double (mouseY - nizikaY)
|
|
}
|
|
}
|
|
}
|
|
Else: If moving {
|
|
moving = False
|
|
falling = True
|
|
|
|
fallVel = 0.
|
|
}
|
|
Else: If falling {
|
|
nizikaY = LimitF (nizikaY + fallVel, Null, base - NIZIKA_BASE)
|
|
fallVel += 9.8
|
|
|
|
If nizikaY >= base - NIZIKA_BASE {
|
|
fallVel = 0.
|
|
}
|
|
|
|
base = gInfo_dispY
|
|
|
|
Repeat windowCnt
|
|
If windowRects.LEFT.cnt > nizikaX + (NIZIKA_WIDTH - NIZIKA_LEFT) {
|
|
Continue
|
|
}
|
|
|
|
If nizikaX + NIZIKA_LEFT >= windowRects.RIGHT.cnt {
|
|
Continue
|
|
}
|
|
|
|
If nizikaY + NIZIKA_BASE > windowRects.TOP.cnt {
|
|
Continue
|
|
}
|
|
|
|
If windowRects.TOP.cnt >= base {
|
|
Continue
|
|
}
|
|
|
|
base = windowRects.TOP.cnt
|
|
Loop
|
|
}
|
|
|
|
ReDraw False
|
|
Color COLOUR_LIME
|
|
BoxF
|
|
|
|
Pos nizikaX, nizikaY
|
|
GCopy SCREEN_NIZIKA, IIf (direction < 0, NIZIKA_WIDTH, 0), NIZIKA_HEIGHT * (frame * IIf (moving, 3, 1) \ 24), NIZIKA_WIDTH, NIZIKA_HEIGHT
|
|
ReDraw True
|
|
|
|
nizikaX += direction * 4
|
|
|
|
If (nizikaX >= gInfo_dispX - NIZIKA_RIGHT) || (nizikaX < -NIZIKA_LEFT) {
|
|
direction = -direction
|
|
}
|
|
|
|
Await 33
|
|
|
|
frame++
|
|
Loop
|
|
|