Skip to content
Permalink
Browse files

Update READMEs

  • Loading branch information...
AaronC81 committed Jun 19, 2018
1 parent 13df634 commit 1fb38d28811845009d9a15b20bf06ff02a388c64
Showing with 47 additions and 4 deletions.
  1. +1 −0 Disintegrate/Disintegrate.csproj
  2. +43 −0 Disintegrate/README.md
  3. +3 −4 README.md
@@ -113,6 +113,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="README.md" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@@ -0,0 +1,43 @@
# Disintegrate
This project is the core of Disintegrate. It contains most of the logic which
makes Disintegrate work, with UI tasks handled by `Disintegrate.UI` instead.

## Presences
There are four key classes in Disintegrate.

### `PresenceInfo`
This class represents a single Rich Presence 'state' in Discord. It contains
information like the description and image. This class is really just a data
container, and doesn't do anything on its own.

### `PresenceProvider`
This class is the base class which must be inherited to add a new game to
Disintegrate. Its purpose is to hook into the game, generate `PresenceInfo`
instances with relevant info, and then call `PushState(PresenceInfo)` to
broadcast to the program that there is a new state available.

There are two main kinds of provider, determined by the value of the object's `StateFrequency` property.

- Providers with `TimeControlled` push new states at steadily timed
intervals, for example every 2 seconds. Every state pushed by the provider
will be sent to Discord.
- Providers with `FastAsPossible` push new states chaotically, or at *very*
fast timed intervals, for example every 0.5 seconds. Only one state every
few seconds is actually sent to Discord to avoid the API becoming
overwhelmed and rejecting future states.

### `PresenceRelay`
This class wraps a `PresenceProvider` and sends its state on to Discord based
on its `StateFrequency`.

### `PresenceManager`
This class instantiates, starts, and stops relays accordingly when game
processes are launched or closed. The `PresenceManager` periodically checks
for new processes, and if any match a supported game, a relay and provider
are instantiated and started.

## Configurators
Configurators are classes which handle first-time setup of providers. Every
provider has a *Configure* button in the Disintegrate UI, and clicking it will
execute the `Configure()` method on the provider's configurator. The button is
disabled if `IsConfigured()` returns `true`.
@@ -3,12 +3,11 @@ Disintegrate adds **Discord Rich Presence to CS:GO and DOTA 2.** For more
information, see [disint.cc](disint.cc).

## Project Structure
The Disintegrate solution has three projects:
The Disintegrate solution has two projects:
- `Disintegrate` is the main project, containing classes for creating and
dispatching providers.
- `Disintegrate.UI` contains the tray icon and user interface. It is the
entry point for the application once installed.
- `Disintegrate.Setup` is a Visual Studio Setup project for the installer.
You may need to install [this extension](https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2017InstallerProjects) to edit this.

`Disintegrate.UI` and `Disintegrate.Setup` are relatively simple, but `Disintegrate` is much more complex and as such has its own README in its project root.
`Disintegrate.UI` is relatively simple, but `Disintegrate` is much more complex
and as such has its own README in its project root.

0 comments on commit 1fb38d2

Please sign in to comment.
You can’t perform that action at this time.