Merge pull request #481 from saranlert/gear

Fixes #473
This commit is contained in:
Phillip Thelen 2016-03-29 12:46:01 +02:00
commit 4718ce7fd7
5 changed files with 43 additions and 16 deletions

View file

@ -63,6 +63,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
import com.magicmicky.habitrpgwrapper.lib.models.responses.BuyResponse;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
import com.mikepenz.materialdrawer.AccountHeader;
@ -71,8 +72,11 @@ import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
import com.raizlabs.android.dbflow.runtime.TransactionManager;
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Delete;
import com.raizlabs.android.dbflow.sql.language.From;
@ -315,6 +319,8 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
}
loadAndRemoveOldChecklists(allChecklistItems);
updateOwnedEquipment(user.getItems().getGear().owned);
}
}
}).start();
@ -425,6 +431,28 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O
}
private void updateOwnedEquipment(List<ItemData> owned) {
HashMap<String, ItemData> ownedMap = new HashMap<>();
for (ItemData item : owned) {
ownedMap.put(item.key, item);
}
List<ItemData> items = new Select().from(ItemData.class).queryList();
List<ItemData> updates = new ArrayList<>();
for (ItemData item : items) {
if (ownedMap.containsKey(item.key) && !Boolean.TRUE.equals(item.owned)) {
item.owned = true;
updates.add(item);
} else if (!ownedMap.containsKey(item.key) && Boolean.TRUE.equals(item.owned)) {
item.owned = null;
updates.add(item);
}
}
if (!updates.isEmpty()) {
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(updates)));
}
}
private void updateUserAvatars() {
avatarInHeader.updateData(user);
}

View file

@ -27,6 +27,7 @@ private List<ItemData> gearList;
public String equippedGear;
public Boolean isCostume;
public String userSize;
public String type;
public void setGearList(List<ItemData> gearList) {
this.gearList = gearList;
@ -111,7 +112,11 @@ class GearViewHolder extends RecyclerView.ViewHolder implements View.OnClickList
command.gear = this.gear;
command.asCostume = isCostume;
EventBus.getDefault().post(command);
equippedGear = this.gear.key;
if (this.gear.key.equals(equippedGear)) {
equippedGear = type + "_base_0";
} else {
equippedGear = this.gear.key;
}
notifyDataSetChanged();
}
}

View file

@ -44,6 +44,7 @@ public class EquipmentDetailFragment extends BaseMainFragment {
this.adapter.equippedGear = this.equippedGear;
this.adapter.isCostume = this.isCostume;
this.adapter.userSize = this.user.getPreferences().getSize();
this.adapter.type = this.type;
this.recyclerView.setLayoutManager(new LinearLayoutManager(activity));
this.recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));

View file

@ -145,49 +145,49 @@ public class EquipmentOverviewFragment extends BaseMainFragment implements Trans
costumeHeadView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("head", user.getItems().getGear().getEquipped().getHead(), true);
displayEquipmentDetailList("head", user.getItems().getGear().getCostume().getHead(), true);
}
});
costumeHeadAccessoryView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("headAccessory", user.getItems().getGear().getEquipped().getHeadAccessory(), true);
displayEquipmentDetailList("headAccessory", user.getItems().getGear().getCostume().getHeadAccessory(), true);
}
});
costumeEyewearView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("eyewear", user.getItems().getGear().getEquipped().getEyeWear(), true);
displayEquipmentDetailList("eyewear", user.getItems().getGear().getCostume().getEyeWear(), true);
}
});
costumeArmorView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("armor", user.getItems().getGear().getEquipped().getArmor(), true);
displayEquipmentDetailList("armor", user.getItems().getGear().getCostume().getArmor(), true);
}
});
costumeBackView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("back", user.getItems().getGear().getEquipped().getBack(), true);
displayEquipmentDetailList("back", user.getItems().getGear().getCostume().getBack(), true);
}
});
costumeBodyView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("body", user.getItems().getGear().getEquipped().getBody(), true);
displayEquipmentDetailList("body", user.getItems().getGear().getCostume().getBody(), true);
}
});
costumeWeaponView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("weapon", user.getItems().getGear().getEquipped().getWeapon(), true);
displayEquipmentDetailList("weapon", user.getItems().getGear().getCostume().getWeapon(), true);
}
});
costumeShieldView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
displayEquipmentDetailList("shield", user.getItems().getGear().getEquipped().getShield(), true);
displayEquipmentDetailList("shield", user.getItems().getGear().getCostume().getShield(), true);
}
});

View file

@ -41,8 +41,6 @@ public class ItemDataListDeserializer implements JsonDeserializer<List<ItemData>
item.str = parsedItem.str;
item.per = parsedItem.per;
item._int = parsedItem._int;
} else {
item.owned = itemObject.getAsBoolean();
}
vals.add(item);
object.remove(item.key);
@ -56,11 +54,6 @@ public class ItemDataListDeserializer implements JsonDeserializer<List<ItemData>
} else {
item = new ItemData();
item.key = entry.getKey();
if (entry.getValue().isJsonNull()) {
item.owned = null;
} else {
item.owned = entry.getValue().getAsBoolean();
}
}
vals.add(item);
}