Update Publish #46

Hello everyone!

Welcome to Publish 46!

There is quite a bit to cover in this publish. I will first list all the commit notes, then I'll give a short summary of what this publish includes.

Code:
+ Started Gump improvements
-+ Input entries can use delegate callbacks instead of ID's
--+ This allows Macro Proof gumps when Gump.MacroProof is set to true
--+ All input entries have two callbacks they may use
---+ One that does a basic function
---+ One that can be used to pass an object as a param
-+ Started writing shared gump feature
---* Need to add support for button responses for shared gumps
--+ Gumps may have players as users, users will receive the same gump as the address
-+ Started writing viewer feature
--+ Viewers are set a copy of the original gump
--+ Input entries are replaced with the image equivalent
-+ All gumps now have an Adress property, that is populated before being sent
--+ The address for a gump to a shared gump will be original address, not current user
-+ Minor edits/optimizations
+ Added IDynamicEnum interface
-+ This interface allows for dynamic enumeration properties using a String[] array
-+ Updated the Properties Gump to utilize properties defined as IDynamicEnum as if they were a standard enum property
-+ Updated the [Set command to utilize properties defined as IDynamicEnum as if they were a standard enum property
+ Revamped harvestable resources to utilize a dynamic structure to allow custom resources to be added easily without the need to edit core scripts
-+ Moved all scripts for harvestable resources into a new Crafting folder
-+ Moved each resource into a unique script file so resources can be easily found and modified
-+ Configured a temporary repository of defined resources until a more permanent solution is developed
-+ Improved the hover display properties of some resources to display more accurately
-+ Corrected a problem with adding sand using the [Add command where specifying the amount of sand to add would only add one sand
-+ Updated BaseOre so a random size is no longer used
--+ By default new ore will be added using the large sized ore
--+ To add small ore, you can use [Add IronOre small or [Add IronOre [amount] small
--+ To add medium sized ore, you can use [Add IronOre medium or [Add IronOre [amount] medium
--+ Medium ore will be created using one of the two medium size ItemID values randomly
+ Organized Gump files better
+ Adjusted methods to be more standard
+ Cleaned up code
+ Minor changes
+ Gump update
-+ Added Gumpling abstract class
+ Resource updates
-+ Centralized resource conversion from prior versions to simplify deserialization of classes that will require updates
-+ Moved the data type definitions to a separate folder
-+ Added Logs
+ Bonus resources
-+ Began the data type definitions for bonus resources
+ Harvest System
-+ Added initial Vein definition
+ Gump modifications
-+ Added new interfaces IGumpContainer and IIGumpComponent
-+ Added enhanced Parent support for containers
-+ Added new optional constructor parameters for input entry fields
-+ Revamped callback structure to all for recursion
-+ Made ID Number assignment for input fields optional if a name is provided
-+ Added recursion support for the Gumpling abstract class
-+ Internalized several key properties to enforce structure
+ Samples
-+ Added two sample Gumpling classes in the Gumps\Gumplings folder
-+ Added three sample overloaded gump controls in the Gumps\Named Controls folder
+ Food Effects System
-+ Revamped the gumps used by the system to utilize the new gump and gumpling formats
-+ Removed all ID Numbers assignments in favor of named controls
-+ Utilized button callbacks instead of overriding the OnResponse method
+ Gump changes
-+ Replace callback routines and implement a standardized callback routine
-+ Implement an optional event for input controls that can be used instead of a callback routine
-+ Remove callback parameter option in favor of sending the IGumpComponent entity in the GumpResponse
-+ Move predefined gumplings to the Scripts\Gumps\Controls\Gumplings folder
-+ Moved predefined named controls to the Scripts\Gumps\Controls\Named Controls folder
+ Food Effect System changes
-+ Revise gumplings to utilize the new callbacks and events
-+ Cleanup control creation so all controls are standardized using the Add() method making the code more readable
+ Slayer Title System changes
-+ Revise gumps to utilize new gump structures
-+ Correct recursion problems when title definition changes are made, but still recorded when the Cancel button is clicked
+ Gump update
-+ Add X/Y coordinates to IGumpComponent interface
-+ Handle the location offset when a control is added to a gumpling or the gumpling is moved
-+ Fix possible null reference problem in GumpEntry and Gumpling Parent{ set; } methods
-+ Update standard gumplings
-+ Update Food Effect System gumplings
-+ Update Slayer Title System gumplings
+ Gump system updates
-+ Add ability to add gumplings within gumplings
-+ Add CustomCoreGumpling as an example of adding gumpling to a gumpling
-+ Update Food Effect System to use CustomCoreGumpling
-+ Update Slayer Title System to use CustomCoreGumpling
-+ Add OpenUO dll files to Assemblies.cfg and Scripts project
+ Resource System Updates
-+ Clean up folder structure
-+ Add custom resource types for each resource group to allow the easy creation of new custom resources without the need to create additional classes. This will allow the creation of resource "on-the-fly".
-+ Add gump interface for resource creation and maintenance
-+ Add [Resources command to access the resource interface gump
-+ Add [ResourceReset command to force resources to return to the default definition as defined in ResourceService.cs
-+ Add several new gumplings to aid in resource gump design
+ Rename project to ServUO and change version to 0.4
+ Implement Publish Numbering system
+ Standardize Link and Unlink methods in BaseModule
+ Fix poisoning for Darkglow and Parasitic poisons
+ Fix error caused when using a trapped container to wake from Sleep spell
+ Patch TargetReponse packet handler to prevent fake targeting
+ Correct issue with Mobile MoveOver event call
+ Correct issue with HouseTeleporters
+ Update Mysticism spells to always check skill, mana and reagents

Summary
First of all, you will probably notice that this update is listed as a Publish and not just an update. The reason behind this is fairly obvious in you review the GitHub site. You will notice that this update contains close to 20 commits. Therefore, we have decided to start labeling updates as publishes for simplicity sake.

This publish contains several fixes to some bugs, which you can see near the bottom of the commit note listing.

Included in this publish is the initial upgrades to Gumps. The changes are all detailed in the commit notes and many examples of the new Gump system in action can be found in the Food Effects System, Slayer Title System and Resource System gumps.

Also included in this publish is the initial version of the new Resource System. You can access the Resource system directly by using the [resources command. If you make unwanted changes to the resource system, you can use the [resourcereset command to set the resource system back to its default values.

The resource system currently just helps to redefine how resources are configured and also allows shard developers to add, modify and remove resources while the server is running. The resource system will not be useful in other respects until the harvest and crafting system have been redesigned.

- Dougan