Skip to content

Commit

Permalink
add check_xy & redraw quants, you can use them to hide stale screen i…
Browse files Browse the repository at this point in the history
…tems
  • Loading branch information
caiiiycuk committed Jul 7, 2022
1 parent 1e752fe commit 3c94614
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
16 changes: 14 additions & 2 deletions scripting/src/vss.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ export interface VssQuantMap {
"set_road_fullscreen": [VssRoadFullScreenQuant, VssRoadFullScreenQuantResult],
"file_open": [VssFileOpenQuant, VssFileOpenQuantResult],
"pause": [VssPauseQuant, void],
"redraw": [VssRedrawQuant, void],
"check_xy": [VssCheckXYQuant, void]
}

export interface VssRuntimeObjectQuant {
Expand Down Expand Up @@ -100,10 +102,17 @@ export interface VssFrameQuant {
bpp: number,
}

export type VssQuantListener<K extends VssQuantName> = (payload: VssQuantPayload<K>,
export interface VssRedrawQuant {
type: "iScreenObject",
id: number,
}

export type VssCheckXYQuant = VssRedrawQuant;

export type VssQuantListener<K extends VssQuantName> = (payload: VssQuantPayload<K> & { quant: K },
stopPropogation: () => void, quant: K) => VssQuantResult<K>;

export type VssQuantResultListener<K extends VssQuantName> = (payload: VssQuantPayload<K>,
export type VssQuantResultListener<K extends VssQuantName> = (payload: VssQuantPayload<K> & { quant: K },
result: VssQuantMap[K][1] &
{
handled: boolean,
Expand Down Expand Up @@ -189,6 +198,9 @@ class Vss {
return undefined;
}

if (payload) {
(payload as any).quant = quant;
}

const resultRef = {
result: {
Expand Down
23 changes: 22 additions & 1 deletion src/iscreen/iscreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include "../sound/hsound.h"
#include "avi.h"
#include "../vss/sys.h"

#ifndef _WIN32
#include <arpa/inet.h> // ntohl() FIXME: remove
Expand Down Expand Up @@ -1671,8 +1672,18 @@ int iScreenObject::CheckXY(int x,int y)
x -= PosX;
y -= PosY;

if(x >= 0 && y >= 0 && x <= SizeX && y <= SizeY)
if(x >= 0 && y >= 0 && x <= SizeX && y <= SizeY) {
auto result = vss::sys()
.quant(vss::CHECK_XY_QUANT)
.prop("type", "iScreenObject")
.prop("id", ID)
.send();

if (result.isPreventDefault()) {
return 0;
}
return 1;
}
return 0;
}

Expand Down Expand Up @@ -1878,6 +1889,16 @@ void iScreenObject::init(void)

void iScreenObject::redraw(int mode)
{
auto result = vss::sys()
.quant(vss::REDRAW_QUANT)
.prop("type", "iScreenObject")
.prop("id", ID)
.send();

if (result.isPreventDefault()) {
return;
}

int hide_mode = flags & OBJ_HIDE;
iScreenElement* p = (iScreenElement*)ElementList -> last;

Expand Down
2 changes: 2 additions & 0 deletions src/vss/quant-names.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ constexpr const char* FILE_OPEN_QUANT = "file_open";
constexpr const char* PAUSE_QUANT = "pause";
constexpr const char* TICK_QUANT = "tick";
constexpr const char* FRAME_QUANT = "frame";
constexpr const char* REDRAW_QUANT = "redraw";
constexpr const char* CHECK_XY_QUANT = "check_xy";
} // namespace vss

#endif // VANGERS_QUANT_NAMES_H

0 comments on commit 3c94614

Please sign in to comment.