using System; using InSimDotNet; using InSimDotNet.Packets; namespace CruiseInsimByDK { public partial class CruiseInsim { #region Button Manager Code const byte MAX_BUTTONS = 240; const byte BUTTON_NAME = 0; const byte BUTTON_GROUP = 1; string[,,] Button = new string[255, MAX_BUTTONS, 2]; byte ButtonExists(byte UCID, string ButtonName) { byte ButtonID = 255; for (byte i = 0; i < MAX_BUTTONS; i++) { if (Button[UCID, i, BUTTON_NAME] == ButtonName) { ButtonID = i; break; } } return ButtonID; } bool CreateButton(string ButtonName, string Group, string Text, byte UCID, byte T = 0, byte L = 0, byte W = 0, byte H = 0, ButtonStyles BStyle = ButtonStyles.ISB_C1, byte TypeIn = 0, byte ReqI = 255) { byte ButtonID = ButtonExists(UCID, ButtonName); if (ButtonID == 255) { for (byte i = 0; i < MAX_BUTTONS; i++) { if (Button[UCID, i, BUTTON_NAME] == null) ButtonID = i; } } if (ButtonID == 255) return false; insim.Send(new IS_BTN { Text = Text, T = T, L = L, W = W, H = H, ClickID = ButtonID, BStyle = BStyle, UCID = UCID, TypeIn = TypeIn, ReqI = ReqI }); Button[UCID, ButtonID, BUTTON_NAME] = ButtonName; Button[UCID, ButtonID, BUTTON_GROUP] = Group; return true; } bool DeleteButton(byte UCID, string ButtonName, byte ReqI = 255) { for (byte i = 0; i < MAX_BUTTONS; i++) { if (Button[UCID, i, BUTTON_NAME] == ButtonName) { insim.Send(new IS_BFN { ReqI = ReqI, UCID = UCID, ClickID = i, SubT = ButtonFunction.BFN_DEL_BTN }); Button[UCID, i, BUTTON_NAME] = null; Button[UCID, i, BUTTON_GROUP] = null; return true; } } return false; } void DeleteAllButtons(byte UCID, byte ReqI = 255) { for (byte i = 0; i < MAX_BUTTONS; i++) { Button[UCID, i, BUTTON_NAME] = null; Button[UCID, i, BUTTON_GROUP] = null; } insim.Send(new IS_BFN { ReqI = ReqI, UCID = UCID, SubT = ButtonFunction.BFN_CLEAR }); } void DeleteGroupButtons(byte UCID, string Group, byte ReqI = 255) { for (byte i = 0; i < MAX_BUTTONS; i++) { if (Button[UCID, i, BUTTON_GROUP] == Group) { insim.Send(new IS_BFN { ReqI = ReqI, UCID = UCID, ClickID = i, SubT = ButtonFunction.BFN_DEL_BTN }); Button[UCID, i, BUTTON_NAME] = null; Button[UCID, i, BUTTON_GROUP] = null; } } } string GetButtonName(byte ButtonID, byte UCID) { string ReturnedName = "Invalid"; if (Button[UCID, ButtonID, BUTTON_NAME] != null) ReturnedName = Button[UCID, ButtonID, BUTTON_NAME]; return ReturnedName; } #endregion #region Buttons void OnClickManagerButton(byte UCID, string ButtonName) { switch(ButtonName) { case "settings_driftmessages_yes": { _connections[UCID].DriftMessages = true; ShowSettingsTab(UCID); break; } case "settings_driftmessages_no": { _connections[UCID].DriftMessages = false; ShowSettingsTab(UCID); break; } } } void OnTextReceiveManagerButton(byte UCID, string ButtonName, string Text) { switch(ButtonName) { case "pm_button": { bool UsernameFound = false; foreach (var CurrentConnection in _connections.Values) { if (CurrentConnection.UName == _connections[UCID].PMUName) { UsernameFound = true; if (CurrentConnection.PMMessages == false) { MessageToUCID(UCID, "This user has Personal Messages disabled"); DeleteButton(UCID, "pm_button"); break; } MessageToUCID(UCID, "PM to ^7" + StringHelper.StripColors(CurrentConnection.PName) + " : ^2" + Text); MessageToUCID(CurrentConnection.UCID, "PM from ^7" + StringHelper.StripColors(_connections[UCID].PName) + " : ^2" + Text); break; } } if (!UsernameFound) { MessageToUCID(UCID, _connections[UCID].PMUName + " ^1not found"); DeleteButton(UCID, "pm_button"); } break; } case "channel_button": { foreach (var CurrentConnection in _connections.Values) { if (CurrentConnection.ChannelName.ToLower() == _connections[UCID].ChannelName.ToLower()) { MessageToUCID(CurrentConnection.UCID, "(CH) ^7" + StringHelper.StripColors(_connections[UCID].PName) + " : ^2" + Text); } } break; } } } #endregion } }