mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-04 06:35:10 +00:00
Added: Simple editor - edit parameters of items inside buttons
This commit is contained in:
@@ -200,6 +200,9 @@ public class DefineButton2Tag extends ButtonTag implements ASMSourceContainer {
|
||||
|
||||
@Override
|
||||
public RECT getRect(Set<BoundedTag> added) {
|
||||
if (swf == null) {
|
||||
return null;
|
||||
}
|
||||
Cache<CharacterTag, RECT> cache = swf == null ? null : swf.getRectCache();
|
||||
RECT ret = cache == null ? null : cache.get(this);
|
||||
if (ret != null) {
|
||||
@@ -267,6 +270,8 @@ public class DefineButton2Tag extends ButtonTag implements ASMSourceContainer {
|
||||
layer.filters = r.filterList;
|
||||
layer.matrix = r.placeMatrix;
|
||||
layer.characterId = r.characterId;
|
||||
layer.depth = r.placeDepth;
|
||||
|
||||
if (r.placeDepth > maxDepth) {
|
||||
maxDepth = r.placeDepth;
|
||||
}
|
||||
@@ -313,7 +318,7 @@ public class DefineButton2Tag extends ButtonTag implements ASMSourceContainer {
|
||||
|
||||
@Override
|
||||
public void setFrameCount(int frameCount) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -48,22 +48,22 @@ public abstract class ButtonTag extends DrawableTag implements Timelined {
|
||||
/**
|
||||
* Frame up
|
||||
*/
|
||||
public static int FRAME_UP = 0;
|
||||
public static final int FRAME_UP = 0;
|
||||
|
||||
/**
|
||||
* Frame over
|
||||
*/
|
||||
public static int FRAME_OVER = 1;
|
||||
public static final int FRAME_OVER = 1;
|
||||
|
||||
/**
|
||||
* Frame down
|
||||
*/
|
||||
public static int FRAME_DOWN = 2;
|
||||
public static final int FRAME_DOWN = 2;
|
||||
|
||||
/**
|
||||
* Frame hit test
|
||||
*/
|
||||
public static int FRAME_HITTEST = 3;
|
||||
public static final int FRAME_HITTEST = 3;
|
||||
|
||||
private transient Timeline timeline;
|
||||
|
||||
@@ -85,12 +85,14 @@ public abstract class ButtonTag extends DrawableTag implements Timelined {
|
||||
|
||||
/**
|
||||
* Gets button records.
|
||||
*
|
||||
* @return Button records
|
||||
*/
|
||||
public abstract List<BUTTONRECORD> getRecords();
|
||||
|
||||
/**
|
||||
* Checks if the button is tracked as a menu.
|
||||
*
|
||||
* @return True if the button is tracked as a menu, otherwise false
|
||||
*/
|
||||
public abstract boolean trackAsMenu();
|
||||
@@ -134,6 +136,7 @@ public abstract class ButtonTag extends DrawableTag implements Timelined {
|
||||
|
||||
/**
|
||||
* Gets the sounds.
|
||||
*
|
||||
* @return Sounds
|
||||
*/
|
||||
public DefineButtonSoundTag getSounds() {
|
||||
@@ -184,6 +187,7 @@ public abstract class ButtonTag extends DrawableTag implements Timelined {
|
||||
|
||||
/**
|
||||
* Initializes the timeline.
|
||||
*
|
||||
* @param timeline Timeline
|
||||
*/
|
||||
protected abstract void initTimeline(Timeline timeline);
|
||||
@@ -244,4 +248,115 @@ public abstract class ButtonTag extends DrawableTag implements Timelined {
|
||||
record.setModified(value);
|
||||
}
|
||||
}
|
||||
|
||||
public BUTTONRECORD getButtonRecordAt(int frame, int depth, boolean addIfNotExists) {
|
||||
for (BUTTONRECORD rec : getRecords()) {
|
||||
if (rec.placeDepth != depth) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (frame) {
|
||||
case FRAME_UP:
|
||||
if (rec.buttonStateUp) {
|
||||
return rec;
|
||||
}
|
||||
break;
|
||||
case FRAME_OVER:
|
||||
if (rec.buttonStateOver) {
|
||||
return rec;
|
||||
}
|
||||
break;
|
||||
case FRAME_DOWN:
|
||||
if (rec.buttonStateDown) {
|
||||
return rec;
|
||||
}
|
||||
break;
|
||||
case FRAME_HITTEST:
|
||||
if (rec.buttonStateHitTest) {
|
||||
return rec;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (addIfNotExists) {
|
||||
BUTTONRECORD newRecord = new BUTTONRECORD(swf, this);
|
||||
switch (frame) {
|
||||
case FRAME_UP:
|
||||
newRecord.buttonStateUp = true;
|
||||
break;
|
||||
case FRAME_OVER:
|
||||
newRecord.buttonStateOver = true;
|
||||
break;
|
||||
case FRAME_DOWN:
|
||||
newRecord.buttonStateDown = true;
|
||||
break;
|
||||
case FRAME_HITTEST:
|
||||
newRecord.buttonStateHitTest = true;
|
||||
break;
|
||||
}
|
||||
getRecords().add(newRecord);
|
||||
return newRecord;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setRecordFromPlaceObject(int frame, PlaceObjectTypeTag placeTag) {
|
||||
BUTTONRECORD selectedRecord = null;
|
||||
List<BUTTONRECORD> records = getRecords();
|
||||
loopRecords:
|
||||
for (BUTTONRECORD rec : records) {
|
||||
if (rec.placeDepth != placeTag.getDepth()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (frame) {
|
||||
case FRAME_UP:
|
||||
if (rec.buttonStateUp) {
|
||||
selectedRecord = rec;
|
||||
break loopRecords;
|
||||
}
|
||||
break;
|
||||
case FRAME_OVER:
|
||||
if (rec.buttonStateOver) {
|
||||
selectedRecord = rec;
|
||||
break loopRecords;
|
||||
}
|
||||
break;
|
||||
case FRAME_DOWN:
|
||||
if (rec.buttonStateDown) {
|
||||
selectedRecord = rec;
|
||||
break loopRecords;
|
||||
}
|
||||
break;
|
||||
case FRAME_HITTEST:
|
||||
if (rec.buttonStateHitTest) {
|
||||
selectedRecord = rec;
|
||||
break loopRecords;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedRecord == null) {
|
||||
selectedRecord = new BUTTONRECORD(swf, this);
|
||||
switch (frame) {
|
||||
case FRAME_UP:
|
||||
selectedRecord.buttonStateUp = true;
|
||||
break;
|
||||
case FRAME_OVER:
|
||||
selectedRecord.buttonStateOver = true;
|
||||
break;
|
||||
case FRAME_DOWN:
|
||||
selectedRecord.buttonStateDown = true;
|
||||
break;
|
||||
case FRAME_HITTEST:
|
||||
selectedRecord.buttonStateHitTest = true;
|
||||
break;
|
||||
}
|
||||
records.add(selectedRecord);
|
||||
}
|
||||
selectedRecord.fromPlaceObject(placeTag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.tags.DefineButtonTag;
|
||||
import com.jpexs.decompiler.flash.tags.PlaceObject3Tag;
|
||||
import com.jpexs.decompiler.flash.tags.Tag;
|
||||
import com.jpexs.decompiler.flash.tags.base.ButtonTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.PlaceObjectTypeTag;
|
||||
import com.jpexs.decompiler.flash.treeitems.Openable;
|
||||
import com.jpexs.decompiler.flash.treeitems.TreeItem;
|
||||
import com.jpexs.decompiler.flash.types.annotations.Conditional;
|
||||
@@ -210,6 +211,18 @@ public class BUTTONRECORD implements Serializable, TreeItem, HasSwfAndTag, HasCh
|
||||
this.characterId = characterId;
|
||||
}
|
||||
|
||||
public void fromPlaceObject(PlaceObjectTypeTag placeObject) {
|
||||
placeDepth = placeObject.getDepth();
|
||||
characterId = placeObject.getCharacterId();
|
||||
ColorTransform importedColorTrans = placeObject.getColorTransform();
|
||||
colorTransform = importedColorTrans == null ? null : new CXFORMWITHALPHA(placeObject.getColorTransform());
|
||||
placeMatrix = placeObject.getMatrix();
|
||||
blendMode = placeObject.getBlendMode();
|
||||
buttonHasBlendMode = blendMode > 0;
|
||||
filterList = placeObject.getFilters();
|
||||
buttonHasFilterList = filterList != null && !filterList.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this BUTTONRECORD to a place tag.
|
||||
* @return Place tag
|
||||
|
||||
Reference in New Issue
Block a user