mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-07-24 12:06:34 +00:00
* Bump version to 0.9.10.1 * Bump Microsoft.Web.WebView2 from 1.0.3719.77 to 1.0.3800.47 (#1442) --- updated-dependencies: - dependency-name: Microsoft.Web.WebView2 dependency-version: 1.0.3800.47 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improve mod view responsiveness (#1443) * Improve application launcher logging (Closes #1441) (#1444) * Damage modifier 0x248 (Closes #1438) (#1445) * Initial commit * Setup generator * Progress * Update generator * Initial commit * Setup generator * Progress * Update generator * Fix library loading * Move code to gwca * Fix leave party * Disable console on Release * Add more exports to gwca * Upgrade gwca * Fixes to character selector * Fix GetWindowHandle * Move character selector to frame based * Fix config spamming --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alexandru Macocian <amacocian@microsoft.com>
64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Daybreak.API.Interop.GuildWars;
|
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
|
[GWCAEquivalent("Array")]
|
|
public readonly unsafe struct GuildWarsArray<T> : IEnumerable<T>
|
|
where T : unmanaged
|
|
{
|
|
public readonly T* Buffer;
|
|
public readonly uint Capacity;
|
|
public readonly uint Size;
|
|
public readonly uint Param;
|
|
|
|
public T this[int index]
|
|
{
|
|
get
|
|
{
|
|
ArgumentOutOfRangeException.ThrowIfNegative(index);
|
|
ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual((uint)index, this.Size);
|
|
return this.Buffer[index];
|
|
}
|
|
}
|
|
|
|
public Enumerator GetEnumerator() => new(this.Buffer, this.Size);
|
|
|
|
IEnumerator<T> IEnumerable<T>.GetEnumerator() => this.GetEnumerator();
|
|
|
|
IEnumerator IEnumerable.GetEnumerator() => this.GetEnumerator();
|
|
|
|
public unsafe struct Enumerator : IEnumerator, IEnumerator<T>
|
|
{
|
|
private readonly T* buffer;
|
|
private readonly uint size;
|
|
private int index;
|
|
|
|
internal Enumerator(T* buffer, uint size)
|
|
{
|
|
this.buffer = buffer;
|
|
this.size = size;
|
|
this.index = -1;
|
|
}
|
|
|
|
public bool MoveNext()
|
|
{
|
|
int next = this.index + 1;
|
|
if (next >= this.size)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
this.index = next;
|
|
return true;
|
|
}
|
|
|
|
public T Current => this.buffer[this.index];
|
|
object IEnumerator.Current => this.Current;
|
|
|
|
public void Reset() => this.index = -1;
|
|
public readonly void Dispose() { }
|
|
}
|
|
}
|