Release notes

SmartFoxServer Pro
Unity 3D / .Net / Mono C# API

Package contents:

contains the sources and binaries of the SmartFoxServer C# API
contains the sources specific for Unity-iPhone projects

contains the class reference documentation
and the tutorials for each Examples provided

contains three complete examples to study, including tutorials and source code
There is a 4th example, based on the IslandDemo which weighs 130Mb.
Because of its size we provide it as a separate download:

contains the three Unity examples converted for the iPhone

:: Version 1.2.6
* Removed old debug spam + fixed NRE in room variable delete
* Fixed runtime bug in buddyroom callback
* Fixed bug in private message callback
* Added overloaded constructors to take IPAddress to Connect() to be able to either feed hostnames or IPAddresses to the API to counter the Firefox restart issue
* Fixed issue in GetXmlUserVariable with deleted vars

:: Version 1.2.5
* Fixed a Roomlist bug that could result in old rooms not to be removed from the list

:: Version 1.2.4
* Possible bug in how updated buddy vars are handled in HandleBuddyListUpdate - iterating over bVars but with full path
* Bug in matching the string inside a buddy list error message
* Cast error when accessing room variables
* Update room list merges new data with existing Room data to avoid clearing previous state
* Buddy add doesn't check for duplicate buddies before adding - can add duplicate

:: Version 1.2.3
* Fix for throwing away any incomplete message buffer. Now saves it as supposed to when there is a chunk remaining data that isnt a complete message yet
* Updated property file to reflect version change to 1.2.3

:: Version 1.2.2
* Fixed wrong handling of unicode characters & minor clean ups

:: Version 1.2.0
* iPhone support - full featured and cross platform without changes to client
* API are fully aligned with the latest Actionscript 3 version, shipped with SmartFoxServer PRO 1.6.6
* Bug fix in handling string message receiving as reported on forums
* SendXtMessage now has reworked API to take hashtables for json/xml and arraylist for string Cross platform compatible protocol for string sending
* Fixed Entities decoding/encoding not properly initialized (as reported in support board)
* Implemented new Contains method on JsonData (not present in original API)
* Added new SwitchPlayer method from SFS 1.6.6
* Added CheckRoomList and CheckJoin methods on API methods
* Added LOTS of checks in SysHandler for if a room is in the roomlist before trying to call methods on it. Prevents null pointer exceptions and gives user a nice warning in the console
* Catching more exceptions on event handling, and giving user readable message on the console
* Printing exception message on console when exception thrown in http communication
* OnExtensionResponse documentation now shows host to cast response to the 3 different data formats
* New set of CreateRoom methods using NewRoomDescriptor class instead of hashtable
* Added 2 new methods to the queue mode - one for querying number of events in queue, and another to process a single event only.
* Documentation for SetRoomVariables was still AS3 syntax. Now rewritten to C# + fixed error in text Extended RoomVariable constructor to also include a 3 parameter version
* *Major* reorganization of the main client code using #region into a more logical and usable structure (only structural changes)
* Made isGame truly optional + other validation checks in room creation

:: Version 1.1.0
* Workaround in Unity mono bug regarding cross platform delimiter for numbers in some locale settings. (, vs .) This forces all numbers that are serialized/deserialized into US locale
Added queue mode to the API
* Workaround added for ',' vs '.' mono bug in numbers parsed from different locales by forcing en-US number format
* Reworked the processing of the queue to run through a clone of the "real" queue. This makes the blocking time smaller.
Updated assembly info to version 1.1 of the API
* Fixed bug in incorrect encoding of XML send as strings
* Made the serializer more robust for XML issues with "null" strings (fixes uncaught exception reported as "long XML" on the forums)
* Fixed bug in GetRoomByName trying to cast to Room. Also fixed the same bug in different documentation parts

:: Version 1.0.0
* Added fix from forums for working around issue with the tcpclient networkstream
* Implemented threaded synchronous http communication vs. the C# async stuff
* Rewrote a bunch of the http failover code.
Polling is now handled in a manual created thread that is terminated manually on exit - fixed that mono/Unity exit crash bug
Wrote a socket based http client instead of using build in WebRequest (as that uses internal threads too that crash on exit). Not pretty, not fast but works
Lastly all http request/response are not threaded anymore. So it blocks - but works and doesnt crash
* Treading of http request/responses without crashing
* Implemented "IP-only" server addresses to work around bug in the mono version on OSX used by Unity webplayer
Implemented final http failover code that handles multiple messages per poll
Locking mechanism on disconnect as posted by at on the forums (slightly modified)
This code seems to work fully featured on webplayer and standalone on OSX at least for both socket and http connection scenarios
* Implemented workaround for double.Parse bug in the mono version that is used by Unity 2.1 that did not automatically change separator from . to , depending on operating system. Now forces US style . as separator when parsing
* Fixed up some small issue in the documentation example for handling Xt messages
* Reworked populating variables
* Small bug found while making tutorial 1 - API now properly reports back to the OnConnect with a success = false and an error message when we fell back to Http/Bluebox. Only did this for sockets
* Fixed bug in how buddy lists were handled - wrong XML node paths used. Double checked with flash api, and *should* work now in all buddy list callbacks
* Added GetVariable(string key) method to buddy variables for faster access. Added this to all examples in the documentation