Achievement work, cleanup
This commit is contained in:
@@ -2,29 +2,29 @@ package io.anuke.mindustry.desktop.steam;
|
||||
|
||||
public enum SAchievement{
|
||||
completeTutorial,
|
||||
kill1kEnemies(SStat.enemiesDestroyed, 1000),
|
||||
kill100kEnemies(SStat.enemiesDestroyed, 1000 * 100),
|
||||
kill1kEnemies(SStat.unitsDestroyed, 1000),
|
||||
kill100kEnemies(SStat.unitsDestroyed, 1000 * 100),
|
||||
launch10kItems(SStat.itemsLaunched, 1000 * 10),
|
||||
launch1milItems(SStat.itemsLaunched, 1000 * 1000),
|
||||
beat10Attack(SStat.attacksWon, 10),
|
||||
win10PvPMatches(SStat.pvpsWon, 10),
|
||||
win10Attack(SStat.attacksWon, 10),
|
||||
win10PvP(SStat.pvpsWon, 10),
|
||||
defeatAttack5Waves,
|
||||
launch30Times(SStat.timesLaunched, 30),
|
||||
survive100Waves(SStat.maxWavesSurvived, 100),
|
||||
survive500Waves(SStat.maxWavesSurvived, 500),
|
||||
researchAll,
|
||||
useAllMechs,
|
||||
useAllMechs(SStat.zoneMechsUsed, 6),
|
||||
shockWetEnemy,
|
||||
killEnemyPhaseWall,
|
||||
researchLaunchPad,
|
||||
researchRouter,
|
||||
place10kBlocks(SStat.blocksBuilt, 10 * 1000),
|
||||
destroy1kBlocks(SStat.blocksDestroyed, 1000),
|
||||
overheatReactorCampaign(SStat.reactorsOverheated, 1),
|
||||
overheatReactor(SStat.reactorsOverheated, 1),
|
||||
make10maps(SStat.mapsMade, 10),
|
||||
downloadMapWorkshop,
|
||||
publishMap(SStat.mapsPublished, 1),
|
||||
defeatBoss(SStat.bossesDefeated, 1),
|
||||
unlockAllZones,
|
||||
configAllZones,
|
||||
drop10kitems,
|
||||
powerupImpactReactor,
|
||||
@@ -32,7 +32,7 @@ public enum SAchievement{
|
||||
obtainTitanium,
|
||||
suicideBomb,
|
||||
buildDaggerFactory,
|
||||
issueAttackcommand,
|
||||
issueAttackCommand,
|
||||
active100Units(SStat.maxUnitActive, 100),
|
||||
active10Phantoms,
|
||||
active50Crawlers,
|
||||
@@ -42,7 +42,7 @@ public enum SAchievement{
|
||||
dieExclusion,
|
||||
drown,
|
||||
fillCoreAllCampaign,
|
||||
hostServer10,
|
||||
hostServer10(SStat.maxPlayersServer, 10),
|
||||
buildMeltdownSpectre,
|
||||
launchItemPad,
|
||||
skipLaunching2Death,
|
||||
@@ -51,6 +51,7 @@ public enum SAchievement{
|
||||
useFlameAmmo,
|
||||
coolTurret,
|
||||
enablePixelation,
|
||||
openWiki,
|
||||
;
|
||||
|
||||
private final SStat stat;
|
||||
|
||||
@@ -4,24 +4,20 @@ public enum SStat{
|
||||
unitsDestroyed,
|
||||
attacksWon,
|
||||
pvpsWon,
|
||||
gamesWon,
|
||||
timesLaunched,
|
||||
maxWavesSurvived,
|
||||
zoneMechsUsed,
|
||||
enemiesDestroyed,
|
||||
blocksDestroyed,
|
||||
playerDestroyed,
|
||||
routersBuilt,
|
||||
blocksBuilt,
|
||||
itemsLaunched,
|
||||
reactorsOverheated,
|
||||
firesExtinguished,
|
||||
maxUnitActive,
|
||||
unitsBuilt,
|
||||
bossesDefeated,
|
||||
maxPlayersServer,
|
||||
mapsMade,
|
||||
mapsPublished;
|
||||
mapsPublished,
|
||||
maxWavesSurvived,
|
||||
blocksBuilt,
|
||||
;
|
||||
|
||||
public int get(){
|
||||
return SVars.stats.stats.getStatI(name(), 0);
|
||||
|
||||
@@ -20,9 +20,9 @@ import static io.anuke.mindustry.desktop.steam.SAchievement.*;
|
||||
public class SStats implements SteamUserStatsCallback{
|
||||
public final SteamUserStats stats = new SteamUserStats(this);
|
||||
|
||||
//todo store stats periodically
|
||||
private boolean updated = false;
|
||||
private ObjectSet<String> mechs = new ObjectSet<>();
|
||||
private int statSavePeriod = 4; //in minutes
|
||||
|
||||
public SStats(){
|
||||
stats.requestCurrentStats();
|
||||
@@ -32,6 +32,7 @@ public class SStats implements SteamUserStatsCallback{
|
||||
|
||||
Core.app.addListener(new ApplicationListener(){
|
||||
Interval i = new Interval();
|
||||
|
||||
@Override
|
||||
public void update(){
|
||||
if(i.get(60f / 4f)){
|
||||
@@ -39,6 +40,12 @@ public class SStats implements SteamUserStatsCallback{
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Timer.schedule(() -> {
|
||||
if(updated){
|
||||
stats.storeStats();
|
||||
}
|
||||
}, statSavePeriod * 60, statSavePeriod * 60);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -71,7 +78,7 @@ public class SStats implements SteamUserStatsCallback{
|
||||
Events.on(UnitDestroyEvent.class, e -> {
|
||||
if(ncustom()){
|
||||
if(e.unit.getTeam() != Vars.player.getTeam()){
|
||||
SStat.enemiesDestroyed.add();
|
||||
SStat.unitsDestroyed.add();
|
||||
|
||||
if(e.unit instanceof BaseUnit && ((BaseUnit)e.unit).isBoss()){
|
||||
SStat.bossesDefeated.add();
|
||||
@@ -94,7 +101,7 @@ public class SStats implements SteamUserStatsCallback{
|
||||
|
||||
Events.on(CommandIssueEvent.class, e -> {
|
||||
if(campaign() && e.command == UnitCommand.attack){
|
||||
issueAttackcommand.achieved();
|
||||
issueAttackCommand.achieved();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -139,8 +146,14 @@ public class SStats implements SteamUserStatsCallback{
|
||||
Events.on(UnlockEvent.class, e -> {
|
||||
if(e.content == Items.thorium) obtainThorium.achieved();
|
||||
if(e.content == Items.titanium) obtainTitanium.achieved();
|
||||
|
||||
if(!content.zones().contains(Zone::locked)){
|
||||
unlockAllZones.achieved();
|
||||
}
|
||||
});
|
||||
|
||||
Events.on(Trigger.openWiki, openWiki::achieved);
|
||||
|
||||
Events.on(Trigger.exclusionDeath, dieExclusion::achieved);
|
||||
|
||||
Events.on(Trigger.drown, drown::achieved);
|
||||
@@ -207,7 +220,6 @@ public class SStats implements SteamUserStatsCallback{
|
||||
|
||||
Events.on(ResearchEvent.class, e -> {
|
||||
if(e.content == Blocks.router) researchRouter.achieved();
|
||||
if(e.content == Blocks.launchPad) researchLaunchPad.achieved();
|
||||
|
||||
if(!TechTree.all.contains(t -> t.block.locked())){
|
||||
researchAll.achieved();
|
||||
@@ -255,16 +267,22 @@ public class SStats implements SteamUserStatsCallback{
|
||||
|
||||
@Override
|
||||
public void onUserStatsReceived(long gameID, SteamID steamID, SteamResult result){
|
||||
if(result == SteamResult.OK){
|
||||
registerEvents();
|
||||
}else{
|
||||
registerEvents();
|
||||
|
||||
if(result != SteamResult.OK){
|
||||
Log.err("Failed to recieve steam stats: {0}", result);
|
||||
}else{
|
||||
Log.err("Recieved steam stats.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserStatsStored(long l, SteamResult steamResult){
|
||||
public void onUserStatsStored(long gameID, SteamResult result){
|
||||
Log.info("Stored stats: {0}", result);
|
||||
|
||||
if(result == SteamResult.OK){
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user