|
|
|
@ -52,6 +52,10 @@ public class Profile { |
|
|
|
|
Profile oldProfile; |
|
|
|
|
public boolean isArchive = false; |
|
|
|
|
final static Color TEAL = new Color(0,128,128); |
|
|
|
|
public Image statUpdateCacheImage; |
|
|
|
|
public Image imageDisplayUpdateImage; |
|
|
|
|
public boolean stat_update_required = true; |
|
|
|
|
public boolean image_display_update_required = true; |
|
|
|
|
|
|
|
|
|
public Profile(RabiRaceModule module) { |
|
|
|
|
this(module,true); |
|
|
|
@ -81,55 +85,92 @@ public class Profile { |
|
|
|
|
oldProfile.playtime = playtime; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int compareAllChangedValues() { |
|
|
|
|
int count=0; |
|
|
|
|
if (oldProfile.healthUps!=healthUps) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.attackUps!=attackUps) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.manaUps!=manaUps) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.regenUps!=regenUps) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.packUps!=packUps) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.rainbowEggCount!=rainbowEggCount) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
for (MemoryData md : key_items.keySet()) { |
|
|
|
|
if ((!oldProfile.key_items.containsKey(md) && |
|
|
|
|
key_items.containsKey(md)) || ( |
|
|
|
|
oldProfile.key_items.containsKey(md) && |
|
|
|
|
key_items.containsKey(md)) && |
|
|
|
|
oldProfile.key_items.get(md)!=key_items.get(md) |
|
|
|
|
) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (MemoryData md : badges.keySet()) { |
|
|
|
|
if ((!oldProfile.badges.containsKey(md) && |
|
|
|
|
badges.containsKey(md)) || ( |
|
|
|
|
oldProfile.badges.containsKey(md) && |
|
|
|
|
badges.containsKey(md)) && |
|
|
|
|
oldProfile.badges.get(md)!=badges.get(md) |
|
|
|
|
) { |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return count; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void compareAndAnnounceAllChangedValues() { |
|
|
|
|
//System.out.println(oldProfile.key_items.get(MemoryData.HAMMER)+","+key_items.get(MemoryData.HAMMER));
|
|
|
|
|
int changedValueCount = compareAllChangedValues(); |
|
|
|
|
if (changedValueCount==0) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String announcement = ""; |
|
|
|
|
int count=0; |
|
|
|
|
if (oldProfile.healthUps==healthUps-1) { |
|
|
|
|
announcement = "has obtained a Health Up! ("+healthUps+" total)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.attackUps==attackUps-1) { |
|
|
|
|
announcement = "has obtained an Attack Up! ("+attackUps+" total)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.manaUps==manaUps-1) { |
|
|
|
|
announcement = "has obtained a Mana Up! ("+manaUps+" total)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.regenUps==regenUps-1) { |
|
|
|
|
announcement = "has obtained a Regen Up! ("+regenUps+" total)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.packUps==packUps-1) { |
|
|
|
|
announcement = "has obtained a Pack Up! ("+packUps+" total)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
if (oldProfile.rainbowEggCount==rainbowEggCount-1) { |
|
|
|
|
if (5-rainbowEggCount==0) { |
|
|
|
|
announcement = "has obtained 5 Rainbow Eggs! (NAME) has completed the race!"; |
|
|
|
|
count++; |
|
|
|
|
} else if (5-rainbowEggCount>0) |
|
|
|
|
{ |
|
|
|
|
announcement = "has obtained a Rainbow Egg! ("+Math.max(5-rainbowEggCount, 0)+" to go!)"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (MemoryData md : key_items.keySet()) { |
|
|
|
|
if (!oldProfile.key_items.containsKey(md) && |
|
|
|
|
key_items.containsKey(md)) { |
|
|
|
|
announcement = "has obtained "+md.name+"!"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (MemoryData md : badges.keySet()) { |
|
|
|
|
if (!oldProfile.badges.containsKey(md) && |
|
|
|
|
badges.containsKey(md)) { |
|
|
|
|
announcement = "has obtained the "+md.name+" badge!"; |
|
|
|
|
count++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (count==1) { |
|
|
|
|
if (changedValueCount!=0) { |
|
|
|
|
SendAnnouncement(announcement); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -285,6 +326,8 @@ public class Profile { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Image getStatText(int w, Session session) { |
|
|
|
|
|
|
|
|
|
if (statUpdateCacheImage==null || stat_update_required) { |
|
|
|
|
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB); |
|
|
|
|
Graphics2D g2 = tmp.createGraphics(); |
|
|
|
|
|
|
|
|
@ -305,7 +348,11 @@ public class Profile { |
|
|
|
|
//DrawUtils.drawOutlineText(g2, sigIRC.panel.rabiRibiMoneyDisplayFont, (int)(parent.position.getWidth() - TextUtils.calculateStringBoundsFont(text, sigIRC.panel.rabiRibiMoneyDisplayFont).getWidth()) - 2, 16, 1, g2.getColor(), Color.GRAY, text);
|
|
|
|
|
DrawUtils.drawCenteredOutlineText(g2, sigIRC.panel.rabiRibiTinyDisplayFont, (int)(tmp.getWidth()*0.6), 50, 2, Color.WHITE, Color.BLACK, text); |
|
|
|
|
|
|
|
|
|
return tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING); |
|
|
|
|
statUpdateCacheImage = tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING); |
|
|
|
|
//stat_update_required = false;
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return statUpdateCacheImage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Color GetDifficultyColor() { |
|
|
|
@ -347,6 +394,8 @@ public class Profile { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Image getStatPanel(int w, Session session) { |
|
|
|
|
|
|
|
|
|
if (imageDisplayUpdateImage==null || image_display_update_required) { |
|
|
|
|
//DrawUtils.drawTextFont(g, sigIRC.panel.userFont, parent.position.getX(), parent.position.getY()+26, Color.BLACK, "Values: "+readIntFromMemory(MemoryOffset.DLC_ITEM1)+","+readIntFromMemory(MemoryOffset.DLC_ITEM2)+","+readIntFromMemory(MemoryOffset.DLC_ITEM3)+","+readIntFromMemory(MemoryOffset.DLC_ITEM4));
|
|
|
|
|
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB); |
|
|
|
|
Graphics2D g2 = tmp.createGraphics(); |
|
|
|
@ -366,8 +415,12 @@ public class Profile { |
|
|
|
|
if (gamemode!=-1) { |
|
|
|
|
switch (gamemode) { |
|
|
|
|
case 0:{ //Egg Hunt.
|
|
|
|
|
try { |
|
|
|
|
spacing = width/session.eggCount; |
|
|
|
|
rainbowEggLimit = session.eggCount; |
|
|
|
|
} catch (java.lang.ArithmeticException e) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
Image img = RabiRaceModule.image_map.get("easter_egg.png"); |
|
|
|
|
for (int i=0;i<session.eggCount;i++) { |
|
|
|
|
Color col = (rainbowEggCount>i)?RabiRaceModule.rainbowcycler.getCycleColor():new Color(0,0,0,192); |
|
|
|
@ -469,8 +522,13 @@ public class Profile { |
|
|
|
|
} catch (ConcurrentModificationException e) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
return tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING); |
|
|
|
|
imageDisplayUpdateImage = tmp.getScaledInstance(w, -1, Image.SCALE_AREA_AVERAGING); |
|
|
|
|
//g.drawImage(tmp, (int)parent.position.getX(), (int)parent.position.getY(), 120, 64, sigIRC.panel);
|
|
|
|
|
//image_display_update_required=false;
|
|
|
|
|
//System.out.println("Updated Image Display.");
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return imageDisplayUpdateImage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String toString() { |
|
|
|
|