Skip to content

Commit

Permalink
Merge pull request #6 from nakami/patch-1
Browse files Browse the repository at this point in the history
charm usage unlocking; "Grimmchild" & "Carefree Melody" charm handling
  • Loading branch information
KayDeeTee committed Jan 7, 2018
2 parents d05af50 + 24689da commit 6dc057b
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 63 deletions.
25 changes: 23 additions & 2 deletions src/HKSM/app/editor/Listeners.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,27 @@ public void actionPerformed(ActionEvent arg0) {
playerData.addProperty("royalCharmState", v);
}
}

public static class BoolGrimmListener implements ActionListener{

JCheckBox target;
JsonObject playerData;
String memberName;
int value;

public BoolGrimmListener(JCheckBox target, JsonObject playerData, String memberName, int value){
this.target = target;
this.playerData = playerData;
this.memberName = memberName;
this.value = value;
}

@Override
public void actionPerformed(ActionEvent arg0) {
playerData.addProperty("grimmChildLevel", value);

}
}

/**
* Because of the relationship between charm data, it makes sense
Expand Down Expand Up @@ -270,7 +291,7 @@ public DocChecker(JsonObject playerData, String propertyName, IntField target){

@Override
public void changedUpdate(DocumentEvent e) {
check();
check();
}

@Override
Expand All @@ -280,7 +301,7 @@ public void removeUpdate(DocumentEvent e) {

@Override
public void insertUpdate(DocumentEvent e) {
check();
check();
}

public void check(){
Expand Down
150 changes: 90 additions & 60 deletions src/HKSM/app/editor/component/CharmPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import HKSM.app.editor.Listeners.BoolCheckboxListener;
import HKSM.app.editor.Listeners.BoolVoidListener;
import HKSM.app.editor.Listeners.BoolGrimmListener;
import HKSM.app.editor.Listeners.CharmPanelListener;

@SuppressWarnings("serial")
Expand Down Expand Up @@ -127,72 +128,101 @@ public CharmPanel(int id, String name, JsonObject playerData, Notches notches, J
gbc.gridx = 1;
info.add(equipped, gbc);

switch (id){
// Fragile / Unbreakable charms
case 22:
case 23:
case 24:
String [] unbrNm = new String[]{"Health", "Greed", "Strength"};

if( id == 22 || id == 23 || id == 24){
String [] unbrNm = new String[]{"Health", "Greed", "Strength"};

//Charm is breakable
boolean broken = playerData.get("brokenCharm_" + s).getAsBoolean();
JCheckBox brokenBox = new JCheckBox("", broken);
brokenBox.setToolTipText("Charm broken");
brokenBox.addActionListener(new BoolCheckboxListener(brokenBox,
// Charm is breakable
boolean broken = playerData.get("brokenCharm_" + s).getAsBoolean();
JCheckBox brokenBox = new JCheckBox("", broken);
brokenBox.setToolTipText("Charm broken");
brokenBox.addActionListener(new BoolCheckboxListener(brokenBox,
playerData,
"brokenCharm_" + s));
gbc.gridx = 2;
info.add(brokenBox, gbc);

// Unbreakable Version
boolean nonBreakable = playerData.get("fragile" + unbrNm[id-22] + "_unbreakable").getAsBoolean();
JCheckBox nonBreakableBox = new JCheckBox("", nonBreakable);
nonBreakableBox.setToolTipText("Unbreakable");
nonBreakableBox.addActionListener(new BoolCheckboxListener(nonBreakableBox,
playerData,
"brokenCharm_" + s));
gbc.gridx = 1;
info.add(brokenBox, gbc);
gbc.gridx = 2;

//Unbreakable Version
boolean nonBreakable = playerData.get("fragile" + unbrNm[id-22] + "_unbreakable").getAsBoolean();
JCheckBox nonBreakableBox = new JCheckBox("", nonBreakable);
nonBreakableBox.setToolTipText("Unbreakable");
nonBreakableBox.addActionListener(new BoolCheckboxListener(nonBreakableBox,
playerData,
"fragile" + unbrNm[id-22] + "_unbreakable"));
info.add(nonBreakableBox, gbc);
gbc.gridx = 3;
} else {
gbc.gridx = 2;
}


if( id == 39 ){
//TODO: add Box for Charm: Grimmchild -> Carefree Melody
}
"fragile" + unbrNm[id-22] + "_unbreakable"));
gbc.gridx = 3;
info.add(nonBreakableBox, gbc);
gbc.gridx = 4;
break;
// Kingsoul / Voidheart
case 35:
int charmState35 = playerData.get("royalCharmState").getAsInt();

JCheckBox left = new JCheckBox("", (charmState35&1)!=0);
JCheckBox right = new JCheckBox("", (charmState35&2)!=0);
JCheckBox voidSoul = new JCheckBox("", (charmState35&4)!=0);

left.addActionListener(new BoolVoidListener(left, playerData, "royalCharmState", 1));
right.addActionListener(new BoolVoidListener(right, playerData, "royalCharmState", 2));
voidSoul.addActionListener(new BoolVoidListener(voidSoul, playerData, "royalCharmState", 4));


left.setToolTipText("Left Fragment");
right.setToolTipText("Right Fragment");
voidSoul.setToolTipText("Voided");

info.remove(got);
gbc.gridx = 2;
info.add(left, gbc);
gbc.gridx = 3;
info.add(right, gbc);
gbc.gridx = 4;
info.add(voidSoul, gbc);
gbc.gridx = 5;
break;
// Grimmchild / Carefree melody
case 39:
// 1,2,3,4: Grimmchild charm states
// 5: Carefree Melody charm
int charmState39 = playerData.get("grimmChildLevel").getAsInt();

//CHARM_NAME_36_A White Fragment
//CHARM_NAME_36_B Kingsoul
//CHARM_NAME_36_C Void Heart
if( id == 35 ){
//Charm is void soul
int charmState = playerData.get("royalCharmState").getAsInt();
JCheckBox one = new JCheckBox("", (charmState39==1));
JCheckBox two = new JCheckBox("", (charmState39==2));
JCheckBox three = new JCheckBox("", (charmState39==3));
JCheckBox four = new JCheckBox("", (charmState39==4));
JCheckBox carefreeMelody = new JCheckBox("", (charmState39==5));

one.addActionListener(new BoolGrimmListener(one, playerData, "grimmChildLevel", 1));
two.addActionListener(new BoolGrimmListener(two, playerData, "grimmChildLevel", 2));
three.addActionListener(new BoolGrimmListener(three, playerData, "grimmChildLevel", 3));
four.addActionListener(new BoolGrimmListener(four, playerData, "grimmChildLevel", 4));
carefreeMelody.addActionListener(new BoolGrimmListener(carefreeMelody, playerData, "grimmChildLevel", 5));

one.setToolTipText("Phase 1");
two.setToolTipText("Phase 2");
three.setToolTipText("Phase 3");
four.setToolTipText("Phase 4");
carefreeMelody.setToolTipText("Carefree Melody");

JCheckBox left = new JCheckBox("", (charmState&1)!=0);
JCheckBox right = new JCheckBox("", (charmState&2)!=0);
JCheckBox voidSoul = new JCheckBox("", (charmState&4)!=0);

left.addActionListener(new BoolVoidListener(left, playerData, "royalCharmState", 1));
right.addActionListener(new BoolVoidListener(right, playerData, "royalCharmState", 2));
voidSoul.addActionListener(new BoolVoidListener(voidSoul, playerData, "royalCharmState", 4));


left.setToolTipText("Left Fragment");
right.setToolTipText("Right Fragment");
voidSoul.setToolTipText("Voided");

info.remove(got);
gbc.gridx = 2;
info.add(left, gbc);
gbc.gridx = 3;
info.add(right, gbc);
gbc.gridx = 4;
info.add(voidSoul, gbc);
gbc.gridx = 5;
} else {
gbc.gridx = 2;
gbc.gridx = 2;
info.add(one, gbc);
gbc.gridx = 3;
info.add(two, gbc);
gbc.gridx = 4;
info.add(three, gbc);
gbc.gridx = 5;
info.add(four, gbc);
gbc.gridx = 6;
info.add(carefreeMelody, gbc);
gbc.gridx = 7;
break;
default:
gbc.gridx = 2;
break;
}


gbc.weightx = 1;
info.add(cost, gbc);

Expand Down
7 changes: 6 additions & 1 deletion src/HKSM/data/SaveLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -339,10 +339,15 @@ public static void validateCharms(JsonObject json){
}

JsonArray charms = new JsonArray();
for( int i = 1; i <= 36; i++){
boolean hasCharm = playerData.get("hasCharm").getAsBoolean();
for( int i = 1; i <= 40; i++){
if( playerData.get("equippedCharm_"+Integer.toString(i)).getAsBoolean() )
charms.add( new JsonPrimitive(i) );
if( playerData.get("gotCharm_"+Integer.toString(i)).getAsBoolean() )
hasCharm = true;

}
playerData.add("equippedCharms", charms);
playerData.addProperty("hasCharm", hasCharm);
}
}

0 comments on commit 6dc057b

Please sign in to comment.