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); }
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); } }
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; } }
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; } }
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; } }
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); } }
/// <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); } }