-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #81 from space928/new_examples
New examples
- Loading branch information
Showing
5 changed files
with
118 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Basic CLI Example | ||
|
||
This article provides a basic understanding to a basic C# .NET example leveraging the OMSIHook library. The example focuses on retrieving crucial information about the map, weather, date, and the current vehicle. | ||
|
||
_This article is in direct relation to the Sample Project available [here](https://github.com/space928/Omsi-Extensions/tree/main/_OmsiHookExamples/Basic_CLI)._ | ||
|
||
## Initialization | ||
|
||
Initialize an instance of the `OmsiHook` class and establish a connection to the OMSI game: | ||
|
||
```cs | ||
OmsiHook.OmsiHook omsi = new(); | ||
omsi.AttachToOMSI().Wait(); | ||
``` | ||
|
||
## Caching of Globals | ||
|
||
Efficiently cache top-level global variables outside the loop for optimized performance: | ||
|
||
```cs | ||
// Cache global variables for faster access | ||
var playerVehicle = omsi.Globals.PlayerVehicle; | ||
var time = omsi.Globals.Time; | ||
var map = omsi.Globals.Map; | ||
var weather = omsi.Globals.Weather; | ||
``` | ||
|
||
By caching these variables outside the loop, you significantly enhance access speed during subsequent iterations. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net6.0-windows10.0.22621.0</TargetFramework> | ||
<ImplicitUsings>disable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
<Platforms>x86</Platforms> | ||
<StartupObject>Basic_CLI.Program</StartupObject> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="OmsiHook" Version="2.3.2" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
using System; | ||
using System.Threading; | ||
using OmsiHook; | ||
|
||
namespace Basic_CLI | ||
{ | ||
// Most Basic example of reading various values exposed by OMSIHook | ||
class Program | ||
{ | ||
static void Main(string[] args) | ||
{ | ||
Console.WriteLine("#=#=#=#=#=# OMSIHook Basic CLI Sample #=#=#=#=#=#"); | ||
|
||
OmsiHook.OmsiHook omsi = new(); | ||
omsi.AttachToOMSI().Wait(); | ||
var playerVehicle = omsi.Globals.PlayerVehicle; | ||
var time = omsi.Globals.Time; | ||
var map = omsi.Globals.Map; | ||
var weather = omsi.Globals.Weather; | ||
Console.OutputEncoding = System.Text.Encoding.UTF8; | ||
while (true) | ||
{ | ||
weather ??= omsi.Globals.Weather; | ||
playerVehicle ??= omsi.Globals.PlayerVehicle; | ||
var pos = playerVehicle?.Position ?? default; | ||
var rot = playerVehicle?.Rotation ?? default; | ||
|
||
Console.SetCursorPosition(0, 1); | ||
Console.WriteLine($"Map: {map?.FriendlyName}".PadRight(Console.WindowWidth - 17) + $"Date: {time.Day:00}/{time.Month:00}/{time.Year:0000}"); | ||
Console.WriteLine($"Weather: {WeatherEmoji(weather)}".PadRight(Console.WindowWidth - 15) + $"Time: {time.Hour:00}:{time.Minute:00}:{time.Second:00}"); | ||
Console.WriteLine($"Bus: {playerVehicle?.RoadVehicle?.FileName}".PadRight(Console.WindowWidth - 1)); | ||
Console.WriteLine(($"Position: {pos.x:F2},{pos.y:F2},{pos.z:F2}".PadRight(Console.WindowWidth - 8) + | ||
$"Tile: {playerVehicle?.Kachel ?? 0}")); | ||
Console.WriteLine(($"Rotation: {rot.w:F2},{rot.x:F2},{rot.y:F2},{rot.z:F2}".PadRight(Console.WindowWidth - 1))); | ||
|
||
Thread.Sleep(20); | ||
} | ||
} | ||
|
||
// Pick an emoji to show for the weather | ||
static string WeatherEmoji(OmsiWeather weather) | ||
{ | ||
if (weather?.ActWeather.fogDensity < 900) | ||
return "🌫️"; | ||
if (weather?.ActWeather.percipitation > 0) | ||
return "🌧️"; | ||
return "☀️"; | ||
} | ||
} | ||
} |