//DataTypes: //0 = Bool //1 = Float //2 = Int private static void ShowPlayerData() { //Temporary Arduino Values int ComPortNumber = 6; int BaudRate = 115200; MyObjectBuilder_Character CharacterInfo = (MyObjectBuilder_Character)MyAPIGateway.Session.Player.Controller.ControlledEntity.Entity.GetObjectBuilder(); MySerialOut MessageOut = new MySerialOut(); bool result = false; Dictionary <int, SerialVars> SerialOutValues = new Dictionary <int, SerialVars>(); #region object gathering //SerialVars PlayerHealth = new SerialVars() //{ // ItemID = 0, // ItemName = "PlayerHealth", // CurrentValue = (int)(float.Parse(SerialCommsOut.Script.GetPlayerHealth(CharacterInfo)) * 100.0f), // MaxValue = "100", // DataType = "1" //}; SerialVars PlayerEnergy = new SerialVars() { ItemID = 1, ItemName = "PlayerEnergy", CurrentValue = (int)(CharacterInfo.Battery.CurrentCapacity * 100), MaxValue = "100", DataType = "1", lastState = "LastPlayerEnergyUpdate" }; SerialVars PlayerOxygen = new SerialVars() { ItemID = 2, ItemName = "PlayerOxygen", CurrentValue = (int)(CharacterInfo.OxygenLevel * 100), MaxValue = "100", DataType = "1", lastState = "LastPlayerOxygenUpdate" }; ////SerialVars PlayerHydrogen = new SerialVars() ////{ //// ItemID = 3, //// ItemName = "PlayerHydrogen", //// CurrentValue = SerialCommsOut.Script.GetPlayerHydrogen(CharacterInfo), //// MaxValue = "100", //// DataType = "Double" ////}; //SerialVars PlayerDampers = new SerialVars() //{ // ItemID = 4, // ItemName = "PlayerDampers", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerDamperStatus(CharacterInfo)), // MaxValue = "1", // DataType = "0" //}; //SerialVars PlayerJetPack = new SerialVars() //{ // ItemID = 5, // ItemName = "PlayerJetPack", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerJetPackStatus(CharacterInfo)), // MaxValue = "1", // DataType = "0" //}; //SerialVars PlayerSuitLight = new SerialVars() //{ // ItemID = 6, // ItemName = "PlayerSuitLight", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerSuitLightStatus(CharacterInfo)), // MaxValue = "1", // DataType = "0" //}; //SerialVars PlayerSpeed = new SerialVars() //{ // ItemID = 7, // ItemName = "PlayerSpeed", // CurrentValue = (int)(float.Parse(SerialCommsOut.Script.GetPlayerSpeed(CharacterInfo)) * 100.0f), // MaxValue = "0", // DataType = "1" //}; //SerialVars PlayerCurrentInventory = new SerialVars() //{ // ItemID = 8, // ItemName = "PlayerCurrentInventory", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerCurrentInventory()), // MaxValue = "0", // DataType = "2" //}; //SerialVars PlayerMaxInventory = new SerialVars() //{ // ItemID = 9, // ItemName = "PlayerMaxInventory", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerMaxInventory()), // MaxValue = "0", // DataType = "2" //}; //SerialVars PlayerAntenna = new SerialVars() //{ // ItemID = 10, // ItemName = "PlayerAntenna", // CurrentValue = Convert.ToInt16(SerialCommsOut.Script.GetPlayerAntennaStatus(CharacterInfo)), // MaxValue = "1", // DataType = "0" //}; //Should Ship data ItemID always come after player data? //Should we break this API script into 2 Scripts one for Player and one for Ship? //A ship only script would be easier to attach to a programmable block until Ondrej enables local scripts /*SerialVars ShipDamage = new SerialVars() * { * ItemID = 100, * ItemName = "ShipDamage", * CurrentValue = "50", * MaxValue = "100", * DataType = "Double" * };*/ #endregion //Add all Desired Objects here with "SerialOutValues.Add" SerialOutValues.Clear(); //SerialOutValues.Add(PlayerHealth.ItemID, PlayerHealth); SerialOutValues.Add(PlayerEnergy.ItemID, PlayerEnergy); SerialOutValues.Add(PlayerOxygen.ItemID, PlayerOxygen); //SerialOutValues.Add(PlayerHydrogen.ItemID, PlayerHydrogen); //SerialOutValues.Add(PlayerDampers.ItemID, PlayerDampers); //SerialOutValues.Add(PlayerJetPack.ItemID, PlayerJetPack); //SerialOutValues.Add(PlayerSuitLight.ItemID, PlayerSuitLight); //SerialOutValues.Add(PlayerSpeed.ItemID, PlayerSpeed); //SerialOutValues.Add(PlayerCurrentInventory.ItemID, PlayerCurrentInventory); //SerialOutValues.Add(PlayerMaxInventory.ItemID, PlayerMaxInventory); //SerialOutValues.Add(PlayerAntenna.ItemID, PlayerAntenna); foreach (SerialVars serialVars in SerialOutValues.Values) //.OrderBy() { // ScreenData += (String.Format("ItemID = {0}, ItemName = {1}, CurrentValue = {2}, MaxValue = {3}, DataType = {4}", serialVars.ItemID, serialVars.ItemName, serialVars.CurrentValue, serialVars.MaxValue, serialVars.DataType)) + "/\n"; // MessageOut = (serialVars.DataType, serialVars.ItemName, serialVars.CurrentValue, serialVars.MaxValue ); IMySerialOutAccess OutData = MessageOut; string tempMessage = serialVars.DataType + "," + serialVars.ItemID.ToString() + "," + serialVars.CurrentValue.ToString() + "," + serialVars.MaxValue; if (LastStates.GetCurrentLasState(serialVars)) // if true send message { result = OutData.SendMessageToSerial(tempMessage, ComPortNumber, BaudRate); MyAPIGateway.Utilities.ShowNotification(tempMessage, 3000, MyFontEnum.Green); } } //MyAPIGateway.Utilities.ShowMissionScreen("Serial Out Data", DateTime.Now.ToString(), "Values:", ScreenData, null, "Hide Screen"); /*if (CurrentPlayerState != 0) * { * SerialOutValues.Add(ShipDamage.ItemID, ShipDamage); * }*/ //call SerialCommsOut_SerialCommsOut SerialCommsOut.Script ShowSerialVars }
private static void ShowPlayerData() { MyObjectBuilder_Character CharacterInfo = (MyObjectBuilder_Character)MyAPIGateway.Session.Player.Controller.ControlledEntity.Entity.GetObjectBuilder(); Dictionary<int, SerialVars> SerialOutValues = new Dictionary<int, SerialVars>(); #region object gathering SerialVars PlayerHealth = new SerialVars() { Priority = 0, ItemName = "PlayerHealth", CurrentValue = SerialCommsOut.Script.GetPlayerHealth(CharacterInfo), MaxValue = "100", DataType = "Float" }; SerialVars PlayerEnergy = new SerialVars() { Priority = 1, ItemName = "PlayerEnergy", CurrentValue = SerialCommsOut.Script.GetPlayerEnergy(CharacterInfo), MaxValue = "100", DataType = "Double" }; SerialVars PlayerOxygen = new SerialVars() { Priority = 2, ItemName = "PlayerOxygen", CurrentValue = SerialCommsOut.Script.GetPlayerOxygen(CharacterInfo), MaxValue = "100", DataType = "Double" }; SerialVars PlayerHydrogen = new SerialVars() { Priority = 3, ItemName = "PlayerHydrogen", CurrentValue = SerialCommsOut.Script.GetPlayerHydrogen(CharacterInfo), MaxValue = "100", DataType = "Double" }; SerialVars PlayerDampers = new SerialVars() { Priority = 4, ItemName = "PlayerDampers", CurrentValue = SerialCommsOut.Script.GetPlayerDamperStatus(CharacterInfo), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerJetPack = new SerialVars() { Priority = 5, ItemName = "PlayerJetPack", CurrentValue = SerialCommsOut.Script.GetPlayerJetPackStatus(CharacterInfo), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerSuitLight = new SerialVars() { Priority = 6, ItemName = "PlayerSuitLight", CurrentValue = SerialCommsOut.Script.GetPlayerSuitLightStatus(CharacterInfo), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerSpeed = new SerialVars() { Priority = 7, ItemName = "PlayerSpeed", CurrentValue = SerialCommsOut.Script.GetPlayerSpeed(CharacterInfo), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerCurrentInventory = new SerialVars() { Priority = 8, ItemName = "PlayerCurrentInventory", CurrentValue = SerialCommsOut.Script.GetPlayerCurrentInventory(), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerMaxInventory = new SerialVars() { Priority = 9, ItemName = "PlayerMaxInventory", CurrentValue = SerialCommsOut.Script.GetPlayerMaxInventory(), MaxValue = "true", DataType = "Bit" }; SerialVars PlayerAntenna = new SerialVars() { Priority = 10, ItemName = "PlayerAntenna", CurrentValue = SerialCommsOut.Script.GetPlayerAntennaStatus(CharacterInfo), MaxValue = "true", DataType = "Bit" }; //Should Ship data priority always come after player data? //Should we break this API script into 2 Scripts one for Player and one for Ship? //A ship only script would be easier to attach to a programmable block until Ondrej enables local scripts /*SerialVars ShipDamage = new SerialVars() { Priority = 100, ItemName = "ShipDamage", CurrentValue = "50", MaxValue = "100", DataType = "Double" };*/ #endregion //Add all Desired Objects here with "SerialOutValues.Add" SerialOutValues.Clear(); SerialOutValues.Add(PlayerHealth.Priority, PlayerHealth); SerialOutValues.Add(PlayerEnergy.Priority, PlayerEnergy); SerialOutValues.Add(PlayerOxygen.Priority, PlayerOxygen); SerialOutValues.Add(PlayerHydrogen.Priority, PlayerHydrogen); SerialOutValues.Add(PlayerDampers.Priority, PlayerDampers); SerialOutValues.Add(PlayerJetPack.Priority, PlayerJetPack); SerialOutValues.Add(PlayerSuitLight.Priority, PlayerSuitLight); SerialOutValues.Add(PlayerSpeed.Priority, PlayerSpeed); SerialOutValues.Add(PlayerCurrentInventory.Priority, PlayerCurrentInventory); SerialOutValues.Add(PlayerMaxInventory.Priority, PlayerMaxInventory); SerialOutValues.Add(PlayerAntenna.Priority, PlayerAntenna); string ScreenData = string.Empty; foreach (SerialVars serialVars in SerialOutValues.Values) //.OrderBy() { ScreenData += (String.Format("Priority = {0}, ItemName = {1}, CurrentValue = {2}, MaxValue = {3}, DataType = {4}", serialVars.Priority, serialVars.ItemName, serialVars.CurrentValue, serialVars.MaxValue, serialVars.DataType)) + "/\n"; } MyAPIGateway.Utilities.ShowMissionScreen("Serial Out Data", DateTime.Now.ToString(), "Values:", ScreenData, null, "Hide Screen"); ScreenData = String.Empty; /*if (CurrentPlayerState != 0) { SerialOutValues.Add(ShipDamage.Priority, ShipDamage); }*/ //call SerialCommsOut_SerialCommsOut SerialCommsOut.Script ShowSerialVars }