Example #1
0
        private static void GetTileData(object data, DFModMessageCallback callBack)
        {
            var dataErrMsg = "Data for message '" + GET_TILEDATA + "' must be an int array, where [0] is MapPixelX and [1] is MapPixelY.";

            if (data.GetType() != typeof(int[]))
            {
                callBack(ERROR, dataErrMsg);
                return;
            }

            var mapPixelPos = (int[])data;

            if (mapPixelPos.Length < 2)
            {
                callBack(ERROR, dataErrMsg);
                return;
            }

            var mpx = Mathf.Clamp(mapPixelPos[0], 0, 999);
            var mpy = Mathf.Clamp(mapPixelPos[1], 0, 499);

            var tileData = InterestingTerrains.tileDataCache.Get(mpx, mpy);

            if (tileData == null)
            {
                callBack(ERROR, "tileData does not exist for map pixel " + mpx + "x" + mpy + ". Either it hasn't been generated yet, or it's been used by another process.");
                return;
            }

            callBack(TILEDATA, tileData);
        }
Example #2
0
        private void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            try {
                Vector2Int mpCoords;
                byte       point;
                switch (message)
                {
                case GET_PATH_DATA:
                    callBack?.Invoke(GET_PATH_DATA, roadTexturing.GetPathData((int)data));
                    break;

                case GET_ROAD_POINT:
                    mpCoords = (Vector2Int)data;
                    point    = roadTexturing.GetPathDataPoint(BasicRoadsTexturing.roads, mpCoords.x, mpCoords.y);
                    callBack?.Invoke(GET_ROAD_POINT, point);
                    break;

                case GET_TRACK_POINT:
                    mpCoords = (Vector2Int)data;
                    point    = roadTexturing.GetPathDataPoint(BasicRoadsTexturing.tracks, mpCoords.x, mpCoords.y);
                    callBack?.Invoke(GET_TRACK_POINT, point);
                    break;

                case GET_PATHS_POINT:
                    mpCoords = (Vector2Int)data;
                    byte roadPt  = roadTexturing.GetPathDataPoint(BasicRoadsTexturing.roads, mpCoords.x, mpCoords.y);
                    byte trackPt = roadTexturing.GetPathDataPoint(BasicRoadsTexturing.tracks, mpCoords.x, mpCoords.y);
                    point = (byte)(roadPt | trackPt);
                    callBack?.Invoke(GET_PATHS_POINT, point);
                    break;

                case SCHEDULE_ROADS_JOB:
                    // Get the parameters
                    object[]           paramArray   = (object[])data;
                    MapPixelData       mapData      = (MapPixelData)paramArray[0];
                    NativeArray <byte> tileData     = (NativeArray <byte>)paramArray[1];
                    JobHandle          dependencies = (JobHandle)paramArray[2];

                    // Instantiate PaintRoadsJob, schedule, then return job handle
                    JobHandle paintRoadsHandle = roadTexturing.SchedulePaintRoadsJob(ref mapData, ref tileData, dependencies);
                    callBack?.Invoke(SCHEDULE_ROADS_JOB, paintRoadsHandle);
                    break;

                default:
                    Debug.LogErrorFormat("{0}: unknown message received ({1}).", this, message);
                    break;
                }
            }
            catch
            {
                Debug.LogErrorFormat("{0}: error handling message ({1}).", this, message);
                callBack?.Invoke("error", "Data passed is invalid for " + message);
            }
        }
Example #3
0
        void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            switch (message)
            {
            case PAUSE_TRAVEL:
                if (travelControlUI.isShowing)
                {
                    travelControlUI.CloseWindow();
                }
                break;

            case NOUISTOP_WINDOW:
                IUserInterfaceWindow window = data as IUserInterfaceWindow;
                if (window != null)
                {
                    noStopForUIWindow = window;
                }
                break;

            case NOUISTOP_REMOVE:
                IUserInterfaceWindow remove = data as IUserInterfaceWindow;
                if (remove != null && remove == noStopForUIWindow)
                {
                    noStopForUIWindow = null;
                }
                break;

            case IS_TRAVEL_ACTIVE:
                callBack?.Invoke(IS_TRAVEL_ACTIVE, travelControlUI.isShowing);
                break;

            case IS_PATH_FOLLOWING:
                callBack?.Invoke(IS_PATH_FOLLOWING, travelControlUI.isShowing && DestinationName == null);
                break;

            case IS_FOLLOWING_ROAD:
                callBack?.Invoke(IS_FOLLOWING_ROAD, road);
                break;

            case SHOW_MESSAGE:
                string msg = data as string;
                if (!string.IsNullOrEmpty(msg))
                {
                    travelControlUI.ShowMessage(msg);
                }
                break;

            default:
                Debug.LogErrorFormat("{0}: unknown message received ({1}).", this, message);
                break;
            }
        }
Example #4
0
        private void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            switch (message)
            {
            case GET_PATH_DATA:
                callBack?.Invoke(GET_PATH_DATA, roadTexturing.GetPathData((int)data));
                break;

            default:
                Debug.LogErrorFormat("{0}: unknown message received ({1}).", this, message);
                break;
            }
        }
        private void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            switch (message)
            {
            case "toggle":
                if (data is bool)
                {
                    ToggleMod((bool)data);
                }
                break;

            default:
                Debug.LogErrorFormat("{0}: unknown message received ({1}).", this, message);
                break;
            }
        }
        private void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            switch (message)
            {
            case PAUSE_TRAVEL:
                if (travelControlUI.isShowing)
                {
                    travelControlUI.CloseWindow();
                }
                break;

            case IS_TRAVEL_ACTIVE:
                callBack?.Invoke(IS_TRAVEL_ACTIVE, travelControlUI.isShowing);
                break;

            default:
                Debug.LogErrorFormat("{0}: unknown message received ({1}).", this, message);
                break;
            }
        }
Example #7
0
        public void MessageReceiver(string message, object data, DFModMessageCallback _)
        {
            switch (message)
            {
            case "ForceWeather":

                try
                {
                    windManager.Weather = (WeatherType)data;
                }
                catch (InvalidCastException)
                {
                    Debug.LogError("VibrantWind: Failed to set strength value as requested by mod; data is not WeatherType");
                }
                break;

            default:
                Debug.LogError("VibrantWind: Unknown mod message.");
                break;
            }
        }
Example #8
0
        public static void MessageReceiver(string message, object data, DFModMessageCallback callBack)
        {
            const string ForceWeather = "ForceWeather"; // Set strength of wind with user settings.

            switch (message)
            {
            case ForceWeather:

                try
                {
                    VibrantWind.Instance.ForceWeather((WeatherType)data);
                }
                catch (InvalidCastException)
                {
                    Debug.LogError("VibrantWind: Failed to set strength value as requested by mod; data is not WeatherType");
                }
                break;

            default:
                Debug.LogError("VibrantWind: Unknown mod message.");
                break;
            }
        }
        /// <summary>
        /// Exchange messages with other mods.
        /// </summary>
        private void MessageReceiver(string message, object data = null, DFModMessageCallback callback = null)
        {
            try
            {
                switch (message)
                {
                case "ShowLoadingScreen":
                    window.Enabled = (bool)data;
                    break;

                case "GuiDepth":
                    callback("GuiDepth", guiDepth);
                    break;

                default:
                    Debug.LogError("Loading Screen: Unknown message!\nmessage: " + message);
                    break;
                }
            }
            catch (System.Exception e)
            {
                Debug.LogError("Loading Screen: Failed to exchange messages\nException: " + e.Message + "\nMessage: " + message);
            }
        }
Example #10
0
        /// <summary>
        /// Send data to a mod that has a valid DFModMessageReceiver delegate.
        /// </summary>
        /// <param name="modTitle">The title of the target mod.</param>
        /// <param name="message">A string to be sent to the target mod.</param>
        /// <param name="data">Data to send with the message.</param>
        /// <param name="callback">An optional message callback.</param>
        public void SendModMessage(string modTitle, string message, object data = null, DFModMessageCallback callback = null)
        {
            if (mods == null || mods.Count < 1)
            {
                return;
            }
            var mod = GetMod(modTitle);

            if (mod == null || mod.MessageReceiver == null)
            {
                return;
            }
            else
            {
                mod.MessageReceiver(message, data, callback);
            }
        }