caching totalKeyCount and startingID

This commit is contained in:
TheZoroForce240
2024-08-23 14:55:13 +01:00
parent 7914603009
commit f36d2311bd
3 changed files with 23 additions and 3 deletions
+5
View File
@@ -1060,6 +1060,7 @@ class Charter extends UIState {
public function createStrumline(strumLineID:Int, strL:ChartStrumLine, addToUndo:Bool = true, ?__createNotes:Bool = true) {
var cStr = new CharterStrumline(strL);
strumLines.insert(strumLineID, cStr);
strumLines.refreshStrumlineIDs();
strumLines.snapStrums();
if (__createNotes) {
@@ -1093,6 +1094,7 @@ class Charter extends UIState {
var strL = strumLines.members[strumLineID].strumLine;
strumLines.members[strumLineID].destroy();
strumLines.members.remove(strumLines.members[strumLineID]);
strumLines.refreshStrumlineIDs();
strumLines.snapStrums();
if (addToUndo) {
@@ -1132,6 +1134,7 @@ class Charter extends UIState {
FlxG.state.openSubState(new CharterStrumlineScreen(strID, strL, (_) -> {
strumLines.members[strID].strumLine = _;
strumLines.members[strID].updateInfo();
strumLines.refreshStrumlineIDs();
undos.addToUndo(CEditStrumLine(strID, oldData, _));
@@ -1465,6 +1468,7 @@ class Charter extends UIState {
case CEditStrumLine(strumLineID, oldStrumLine, newStrumLine):
strumLines.members[strumLineID].strumLine = oldStrumLine;
strumLines.members[strumLineID].updateInfo();
strumLines.refreshStrumlineIDs();
case CCreateSelection(selection):
deleteSelection(selection, false);
case CDeleteSelection(selection):
@@ -1511,6 +1515,7 @@ class Charter extends UIState {
case CEditStrumLine(strumLineID, oldStrumLine, newStrumLine):
strumLines.members[strumLineID].strumLine = newStrumLine;
strumLines.members[strumLineID].updateInfo();
strumLines.refreshStrumlineIDs();
case CCreateSelection(selection):
createSelection(selection, false);
case CDeleteSelection(selection):
@@ -9,10 +9,13 @@ class CharterStrumLineGroup extends FlxTypedGroup<CharterStrumline> {
var draggingOffset:Float = 0;
public var totalKeyCount(get, never):Int;
private var __totalKeyCount:Int = -1;
public function get_totalKeyCount():Int {
if (__totalKeyCount != -1) return __totalKeyCount;
var v:Int = 0;
for (strumLine in members) v += strumLine.keyCount;
return v;
return __totalKeyCount = v;
}
public var draggable:Bool = false;
@@ -40,6 +43,7 @@ class CharterStrumLineGroup extends FlxTypedGroup<CharterStrumline> {
if (isDragging) {
draggingObj.x = __mousePos.x - draggingOffset;
this.sort(function(o, a, b) return FlxSort.byValues(o, a.x, b.x), -1);
refreshStrumlineIDs();
}
for (i=>strum in members)
@@ -69,6 +73,7 @@ class CharterStrumLineGroup extends FlxTypedGroup<CharterStrumline> {
members.remove(strumLine);
members.insert(newID, strumLine);
refreshStrumlineIDs();
finishDrag(false);
}
@@ -85,6 +90,7 @@ class CharterStrumLineGroup extends FlxTypedGroup<CharterStrumline> {
draggingObj = null;
fixEvents();
refreshStrumlineIDs();
}
public inline function fixEvents() {
@@ -100,6 +106,12 @@ class CharterStrumLineGroup extends FlxTypedGroup<CharterStrumline> {
__pastStrumlines = null;
}
public inline function refreshStrumlineIDs() {
__totalKeyCount = -1;
@:privateAccess
for (strumLine in members) strumLine.__startingID = -1;
}
public function getStrumlineFromID(id:Int) {
var v:Int = 0;
for (strumLine in members) {
@@ -25,13 +25,16 @@ class CharterStrumline extends UISprite {
public var keyCount:Int = 4;
public var startingID(get, null):Int;
private var __startingID:Int = -1;
public function get_startingID():Int {
if (__startingID != -1) return __startingID;
var index = Charter.instance.strumLines.members.indexOf(this);
if (index < 1) return 0; //-1 or 0
if (index < 1) return __startingID = 0; //-1 or 0
var v:Int = 0;
for (i in 0...index) v += Charter.instance.strumLines.members[i].keyCount;
return v;
return __startingID = v;
}
public var selectedWaveform(default, set):Int = -1;