From 251a691bd593f380be8f7c5f966d922e65253776 Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Wed, 2 Sep 2020 16:18:59 -0700 Subject: [PATCH] Added support for retrieving first entry of a stat regardless of params --- core/src/com/riiablo/attributes/StatList.java | 11 +++++++++++ core/src/com/riiablo/attributes/StatListGetter.java | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/core/src/com/riiablo/attributes/StatList.java b/core/src/com/riiablo/attributes/StatList.java index fe321b71..75a4b0cf 100644 --- a/core/src/com/riiablo/attributes/StatList.java +++ b/core/src/com/riiablo/attributes/StatList.java @@ -365,6 +365,17 @@ public final class StatList { return indexOf(list, stat, 0); } + int firstIndexOf(int list, short stat) { + final int listStart = startingOffset(list); + final int listEnd = endingOffset(list); + final int index = Arrays.binarySearch(ids, listStart, listEnd, stat); + if (index >= 0) { + return firstIndexOf(stat, index, listStart); + } else { + return index; + } + } + private int firstIndexOf(final short stat, final int startIndex, final int listStart) { int i = startIndex - 1; final short[] ids = this.ids; diff --git a/core/src/com/riiablo/attributes/StatListGetter.java b/core/src/com/riiablo/attributes/StatListGetter.java index 89f36830..da4f87e9 100644 --- a/core/src/com/riiablo/attributes/StatListGetter.java +++ b/core/src/com/riiablo/attributes/StatListGetter.java @@ -32,6 +32,13 @@ public final class StatListGetter { return tuple.set(stats, index); } + /** @see StatList#firstIndexOf(int, short) */ + StatGetter first(short stat) { + final int index = stats.firstIndexOf(list, stat); + if (index < 0) return null; + return tuple.set(stats, index); + } + public void addAll(StatListGetter src) { stats.addAll(list, src.stats, src.list); }