Zet0rz / nZombies-Unlimited

nZombies Unlimited
MIT License
43 stars 15 forks source link

Map Flags System #36

Closed Zet0rz closed 5 years ago

Zet0rz commented 5 years ago

Previously in nZombies Original, this was simply known as "Flags". It only supported doors and spawnpoints. However, in Unlimited this will be turned into a fully-fledged system that supports hooking into using custom handlers to do any type of function on a group of entities whenever their flag is opened. Any entity can be enabled for any handler, and any entity that has been enabled can add any flags.

A core feature of the new system is that an entity may have multiple flags. In this case, it will activate when any of its flags is opened. This is useful for rooms that may have two entrances, where opening either should activate the spawnpoints.

The system also adds an ease-of-use Panel that lets you edit any entity that has been enabled for Map Flags, without any implementation at all.

Zet0rz commented 5 years ago

The Map Flags panel looks like this:

The panel is filled with a list of all flags currently on any existing entity in the map. You can use the text field at the bottom to add a new flag to the list (only locally) which will be included in PANEL:GetSelectedFlags() (to be used by the tool/property/anywhere the panel is used). You cannot remove a flag, however clicking Refresh will remove any flags that are not on an existing entity, so flags can be removed by removing the flag from all entities that may have it (or removing the entities themselves).

You can select multiple lines using Ctrl or Shift, which lets you select multiple flags. There is an internal networking limit of 255 flags (can always be upped if needed).

Zet0rz commented 5 years ago

For context, the Spawnpoint Creator Tool:

And the property:

The Property is accessible through the Context Menu (C -> Right-click entity) on any entity that has had ENTITY:EnableMapFlags called (both client and server).