/// <summary>
 /// Get the StrCode32 hash for an edge event type.
 /// </summary>
 /// <param name="data">Event whose type to hash.</param>
 /// <param name="hashManager">Hash manager instance.</param>
 /// <returns>StrCode32 hash of the event type</returns>
 private static uint GetEventTypeHash(RouteEdgeEvent data, StrCode32HashManager hashManager)
 {
     if (data.TreatTypeAsHash)
     {
         return(uint.Parse(RouteEdgeEvent.EventTypeToString(data.Type)));
     }
     return(hashManager.GetHash(RouteEdgeEvent.EventTypeToString(data.Type)));
 }
Beispiel #2
0
        /// <summary>
        /// Create a RouteEdgeEvent.
        /// </summary>
        /// <param name="parent">GameObject parent of the RouteEvent.</param>
        /// <param name="data">Parameters of the RouteEvent.</param>
        /// <param name="getEventTypeName">Function to get the name of the RouteEvent's type.</param>
        /// <param name="generateEventName">Function to generate a name for a RouteEvent.</param>
        /// <returns>The constructed RouteEvent.</returns>
        private static RouteEdgeEvent CreateEdgeEvent(GameObject parent, FoxLib.Tpp.RouteSet.RouteEvent data, IHashManagerExtensions.TryUnhashDelegate <uint> getEventTypeName, GenerateEventNameDelegate generateEventName)
        {
            var component = parent.GetComponent <RouteEdgeEvent>();

            if (component == null)
            {
                component = parent.AddComponent <RouteEdgeEvent>();
            }

            // Dumb hack to support the event with no name.
            if (data.EventType == 3205930904)
            {
                component.Type = RouteEdgeEventType.EMPTY_STRING;
            }
            // Dumb hack to support lowercase move
            else if (data.EventType == 368586264)
            {
                component.Type = RouteEdgeEventType.LOWERCASE_move;
            }
            else
            {
                var eventNameContainer = getEventTypeName(data.EventType);
                if (eventNameContainer.WasNameUnhashed)
                {
                    component.Type = RouteEdgeEvent.ParseEventType(eventNameContainer.UnhashedString);
                }
                else
                {
                    component.Type = RouteEdgeEvent.ParseEventType(eventNameContainer.Hash.ToString());
                }
            }

            component.Name    = generateEventName(RouteEdgeEvent.EventTypeToString(component.Type));
            component.Params  = data.Params.Cast <uint>().ToList();
            component.Snippet = data.Snippet;
            return(component);
        }