-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Set negative draw priority for Building Markers #733
base: master
Are you sure you want to change the base?
Conversation
@@ -61,6 +61,8 @@ if (_set) then { | |||
_marker setMarkerDir getDir _object; | |||
_object setVariable [QGVAR(marker), _marker, true]; | |||
|
|||
[QEGVAR(common,setMarkerDrawPriority), [_marker, -1], _marker] call CBA_fnc_globalEventJIP; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to handle removing the JIP event if the marker is deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should building markers be removable for other reasons than building deletion?
Do building markers remain global or should local changes be permitted?
If not, I imagine it's possible to replace the removed marker by detecting when a marker has been deleted with this EH:
- You could add this EH on all clients and they would raise an event on the server which would handle the deletion or replacement of the marker, depending if the marker was deleted because the building was deleted or for another reason.
- You could add this EH on the server only and have it deal with the marker deletion or replacement. This assumes that all building marker deletions would be global though.
If building markers should be removable, I guess the EH linked above still can be used, but it would be a bit more tricky: What if deleteMarkerLocal
is used on building markers? Should the marker be replaced, so that you force people to use deleteMarker
instead, or should the marker be editable on each client individually, as in permit different marker settings (existence, visibility, size, direction, etc)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice one 3ea5c51
I don't think any mod can be so protective of its stuff.
What use case is there for building markers showing differently between clients?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice one 3ea5c51 I don't think any mod can be so protective of its stuff. What use case is there for building markers showing differently between clients?
I agree that a mod shouldn't be that overprotective. As for the use case of building markers showing differently on clients, I don't really know, I'm not a mission maker. I was mostly thinking of how badly the marker system could/would break if you started messing with markers on a per client basis.
@@ -61,6 +61,8 @@ if (_set) then { | |||
_marker setMarkerDir getDir _object; | |||
_object setVariable [QGVAR(marker), _marker, true]; | |||
|
|||
[QEGVAR(common,setMarkerDrawPriority), [_marker, -1], _marker] call CBA_fnc_globalEventJIP; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interestingly, CBA_fnc_removeGlobalEventJIP can be told to wait for the object (in this case the marker) to be deleted before actually proceeding with deleting the JIP order, so this should work, adding some inherent sleep by spawn
:
[QEGVAR(common,setMarkerDrawPriority), [_marker, -1], _marker] call CBA_fnc_globalEventJIP; | |
private _jipID = [QEGVAR(common,setMarkerDrawPriority), [_marker, -1], _marker] call CBA_fnc_globalEventJIP; | |
[_jipID, _marker] spawn CBA_fnc_removeGlobalEventJIP; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very cool indeed. It would probably need to be _object
not _marker
I think, looking at the params?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe, I dunno; just interpreted this line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
private _jipID = [QEGVAR(common,setMarkerDrawPriority), [_marker, -1], _marker] call CBA_fnc_globalEventJIP; | ||
[_jipID, _object] call CBA_fnc_removeGlobalEventJIP; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does not handle the marker being removed without the object being deleted.
That just creates another Deleted EH on the object with no saved ID. Repeated set and remove markers would result in multiple such events.
@@ -60,12 +60,16 @@ if (_set) then { | |||
_marker setMarkerSizeLocal _size; | |||
_marker setMarkerDir getDir _object; | |||
_object setVariable [QGVAR(marker), _marker, true]; | |||
missionNamespace setVariable [_marker, _object]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really wouldn't use the marker value in a "raw" format. I'm certain there are mods out there that already do that.
I would use something like this:
missionNamespace setVariable [_marker, _object]; | |
missionNamespace setVariable [format [QGVAR(object_), _marker], _object]; |
I haven't checked if it works, but it would be safer to use imo.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should have just used netID.
_marker is already format [QGVAR(%1), _object call BIS_fnc_netId]
"zen_building_markers_0:1"
.
incidentally,
allMapMarkers apply {isNil {missionnamespace getVariable _x}} // [true,true]
Co-authored-by: johnb432 <[email protected]>
…nd38/ZEN into building-marker-priority
Co-authored-by: johnb432 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 level of indentation.
Co-authored-by: Jouni Järvinen <[email protected]>
When merged this pull request will: