Merge pull request #236 from Lucwousin/you_basically_gotta_be_a_wizard_to_know_how_those_characters_are_even_called_also_whats_wrong_with_descriptive_names_its_better_than_nothing

Spellbook: Make sure spells are 100% contained in the widget
This commit is contained in:
Tyler Bochard
2019-05-13 00:13:43 -04:00
committed by GitHub

View File

@@ -291,10 +291,10 @@ public class SpellbookPlugin extends Plugin
else if ("resizeSpell".equals(event.getEventName()))
{
int size = config.size();
int columns = Math.max(2, Math.min(FULL_WIDTH / size, 3));
int columns = clamp(FULL_WIDTH / size, 3, 2);
iStack[iStackSize - 1] = columns;
iStack[iStackSize - 2] = size;
iStack[iStackSize - 1] = columns;
}
else if ("setSpellAreaSize".equals(event.getEventName()))
{
@@ -303,31 +303,29 @@ public class SpellbookPlugin extends Plugin
return;
}
iStack[iStackSize - 1] = FULL_HEIGHT;
iStack[iStackSize - 2] = FULL_WIDTH;
iStack[iStackSize - 1] = FULL_HEIGHT;
}
else if ("resizeIndividualSpells".equals(event.getEventName()))
{
int widget = iStack[iStackSize - 1];
int visCount =
(int) spells.values().stream()
int visCount = (int) spells.values().stream()
.map(Spell::getName)
.filter(s -> notFilteredSpells
.stream()
.anyMatch(s.replaceAll("\"", "" )::contains))
.map(SpellbookPlugin::removeFlyingComma)
.filter(s -> notFilteredSpells.stream().anyMatch(s::contains))
.count();
if (visCount > 20 || visCount == 0)
{
return;
}
Spell spell = spells.get(widget);
int newSize = spell.getSize() * 5 + config.size();
iStack[iStackSize - 2] = newSize;
int newSize = clamp(trueSize(spell), FULL_WIDTH, 0);
iStack[iStackSize - 3] = newSize;
iStack[iStackSize - 2] = newSize;
}
else if ("setSpellPosition".equals(event.getEventName()))
{
@@ -341,7 +339,7 @@ public class SpellbookPlugin extends Plugin
int x = s.getX();
int y = s.getY();
if (x == -1)
if (x == -1 || y == -1)
{
return;
}
@@ -548,28 +546,12 @@ public class SpellbookPlugin extends Plugin
int x = point.x - draggingLocation.getX() - parentPos.getX();
int y = point.y - draggingLocation.getY() - parentPos.getY();
int size = config.size();
int size = draggingWidget.getWidth();
if (x < 0)
{
x = 0;
}
else if (x > FULL_WIDTH - size)
{
x = FULL_WIDTH - size;
}
if (y < 0)
{
y = 0;
}
else if (y > FULL_HEIGHT - size)
{
y = FULL_HEIGHT - size;
}
x = clamp(x, FULL_WIDTH - size, 0);
y = clamp(y, FULL_HEIGHT - size, 0);
int draggedID = draggingWidget.getId();
Spell n = spells.get(draggedID);
n.setX(x);
@@ -587,7 +569,7 @@ public class SpellbookPlugin extends Plugin
{
Widget clickedWidget = currentWidget(point);
if (clickedWidget == null || !config.scroll())
if (clickedWidget == null || dragging || !config.scroll())
{
return;
}
@@ -599,67 +581,28 @@ public class SpellbookPlugin extends Plugin
return;
}
Spell clickedSpell = spells.get(clickedWidgetId);
Spell clickedSpell = tmp.getOrDefault(clickedWidgetId, spells.get(clickedWidgetId));
int oldSize = clickedSpell.getSize();
int tmpSize = tmp.get(clickedWidgetId).getSize();
if (tmpSize == 0 && oldSize == 0)
if (oldSize == 0)
{
return;
}
clickedSpell.setX(clickedSpell.getX() + trueSize(clickedSpell) / 4);
clickedSpell.setY(clickedSpell.getY() + trueSize(clickedSpell) / 4);
clickedSpell.setSize(0);
clickedSpell.setX(clickedSpell.getX() + oldSize * 5 / 2);
clickedSpell.setY(clickedSpell.getY() + oldSize * 5 / 2);
tmp.put(clickedWidgetId, clickedSpell);
runRebuild();
}
void decreaseSize(java.awt.Point point)
{
Widget scrolledWidget = currentWidget(point);
if (scrolledWidget == null)
{
return;
}
int scrolledWidgetId = scrolledWidget.getId();
if (!spells.containsKey(scrolledWidgetId))
{
return;
}
Spell scrolledSpell = spells.get(scrolledWidgetId);
scrolledSpell.setSize(scrolledSpell.getSize() + 1);
if (scrolledSpell.getSize() % 2 == 0)
{
scrolledSpell.setX(scrolledSpell.getX() - 3);
scrolledSpell.setY(scrolledSpell.getY() - 3);
}
else
{
scrolledSpell.setX(scrolledSpell.getX() - 2);
scrolledSpell.setY(scrolledSpell.getY() - 2);
}
tmp.put(scrolledWidgetId, scrolledSpell);
runRebuild();
}
void increaseSize(java.awt.Point point)
{
Widget scrolledWidget = currentWidget(point);
if (scrolledWidget == null)
if (scrolledWidget == null || dragging)
{
return;
}
@@ -672,21 +615,69 @@ public class SpellbookPlugin extends Plugin
}
Spell scrolledSpell = spells.get(scrolledWidgetId);
scrolledSpell.setSize(scrolledSpell.getSize() - 1);
if (scrolledSpell.getSize() % 2 == 0)
if (trueSize(scrolledSpell) > FULL_WIDTH - 2)
{
scrolledSpell.setX(scrolledSpell.getX() + 3);
scrolledSpell.setY(scrolledSpell.getY() + 3);
}
else
{
scrolledSpell.setX(scrolledSpell.getX() + 2);
scrolledSpell.setY(scrolledSpell.getY() + 2);
scrolledSpell.setX(0);
scrolledSpell.setY(clamp(scrolledSpell.getY(), FULL_HEIGHT - FULL_WIDTH, 0));
return;
}
scrolledSpell.setSize(scrolledSpell.getSize() + 1);
scrolledSpell.setX(clamp(scrolledSpell.getX() - 1, FULL_WIDTH - trueSize(scrolledSpell), 0));
scrolledSpell.setY(clamp(scrolledSpell.getY() - 1, FULL_HEIGHT - trueSize(scrolledSpell), 0));
tmp.put(scrolledWidgetId, scrolledSpell);
runRebuild();
}
void decreaseSize(java.awt.Point point)
{
Widget scrolledWidget = currentWidget(point);
if (scrolledWidget == null || dragging)
{
return;
}
int scrolledWidgetId = scrolledWidget.getId();
if (!spells.containsKey(scrolledWidgetId))
{
return;
}
Spell scrolledSpell = spells.get(scrolledWidgetId);
// People probably don't want to scroll on a single pixel
if (trueSize(scrolledSpell) <= 5)
{
return;
}
scrolledSpell.setSize(scrolledSpell.getSize() - 1);
scrolledSpell.setX(scrolledSpell.getX() + 1);
scrolledSpell.setY(scrolledSpell.getY() + 1);
tmp.put(scrolledWidgetId, scrolledSpell);
runRebuild();
}
private static int clamp(int i, int upper, int lower)
{
return Math.min(Math.max(i, lower), upper);
}
private static String removeFlyingComma(String s)
{
return s.replaceAll("\"", "");
}
private int trueSize(Spell s)
{
return s.getSize() * 2 + config.size();
}
}