Photon Universal Plugin PUP
Base plugin used to synchronize mods over photon network. Provides messaging between TaleSpire clients without a need of a private server for mods.
Last updated | 2 years ago |
Total downloads | 4720 |
Total rating | 1 |
Categories | Networked Tools |
Dependency string | HolloFox_TS-Photon_Universal_Plugin_PUP-1.0.3 |
Dependants | 2 other packages depend on this package |
This mod requires the following mods to function
bbepisTaleSpire-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.10README
Photon Util Plugin (PUP)
Provides messaging between TaleSpire clients without a need of a private server for mods.
Usage
The Photon Util Plugin is intended to be used as a dependency for other plugins. To use it as part of your own plugins, add a reference to the DLL into your Visual Studio project and then add the following to your plugin header:
[BepInPlugin(Guid, "My Plugin That Uses The Photon Util Plugin", Version)]
[BepInDependency(PhotonUtilPlugin.Guid)]
public class MyNetworkedPlugin : BaseUnityPlugin
{
public const string Guid = "org.demo.plugins.mycooldemo";
private const string Version = "1.1.0.0";
void Awake()
{
// Run once on awake
}
void Update()
{
// Run every frame
}
}
This will give access to the PhotonUtilPlugin namespace at runtime and ensure that only one PhotonUtilPlugin instance handles all plugins that need it.
To be able to get or send messages, you register your mod. Typically this can be done in the Awake() function but specific situations may dictated otherwise. This can be done using:
void Awake()
{
PhotonUtilPlugin.AddMod(Guid);
}
To create a message you can isntantiate a new Photon Message that you'll use to send your content.
var message = new PhotonMessage
{
PackageId = Guid,
Version = Version,
SerializedMessage = "your message here"
};
There's currently 2 ways to send a message. 1 is using your ledger. To add to your ledger you call the add message function after your mod has been added to the plugin.
PhotonUtilPlugin.AddMessage(message);
This will be broadcasted for every other player to view. To view everyone's ledgers you call GetMessages
var AllMessage = PhotonUtilPlugin.GetMessages(Guid);
// OR
var NewMessage = PhotonUtilPlugin.GetNewMessages(Guid);
This will return a Dictionary<PhotonPlayer, List<PhotonMessage>>
allowing you to go through the history of messages per person within the room.
If you're ledger is getting abit long you may call the clear function to clean it up.
PhotonUtilPlugin.ClearNonPersistent(Guid);
This will clearup all messages that you deem to not persist.
The 2nd way is to Bind it to an instance, (This will usually be for a singleton you want to keep sync like a character sheet for a session)
// Create and Update,
PhotonUtilPlugin.CreateInstance("My Instance",message);
PhotonUtilPlugin.UpdateInstance("My Instance",message);
// Delete
PhotonUtilPlugin.DeleteInstance(Guid,"My Instance");
// Read
var result = ReadInstance(Guid,"My Instance", PhotonPlayer player);
Creating, updating and deleting is relatively easy as these objects are relatively straight forwards.
Reading involves obtaining a player first and this can be done by:
var players = PhotonNetwork.playerList;
This will return all players in the current "room" you are in ready to read their stored values for your mod's session.