diff --git a/.idea/misc.xml b/.idea/misc.xml index c5c0524..7513e0f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/PCRTeamAnalyser/src/main/java/cn/sun45/pcrteamanalyser/analyse/Analyser.java b/PCRTeamAnalyser/src/main/java/cn/sun45/pcrteamanalyser/analyse/Analyser.java index 3fa7603..6aaeccd 100644 --- a/PCRTeamAnalyser/src/main/java/cn/sun45/pcrteamanalyser/analyse/Analyser.java +++ b/PCRTeamAnalyser/src/main/java/cn/sun45/pcrteamanalyser/analyse/Analyser.java @@ -180,7 +180,15 @@ public Set[] analyse(List teamlistOne, List repeatIdList = getRepeatIds(teamOne.getIds(), teamTwo.getIds()); @@ -202,17 +210,18 @@ public boolean compareTwo(AnalyseTeam teamOne, AnalyseTeam teamTwo, int[]... bor if (borrowDemand > 2) { return false; } + //需要生成借人位唯一Id列表 if (borrowIds.length == 1) { - if (borrowIdOne != 0) { - if (repeatIdList.size() > 0) { + if (repeatIdList.size() > 0) { + if (borrowIdOne == 0) { borrowIdOne = repeatIdList.get(0); repeatIdList.remove(0); } - } - if (borrowIdTwo != 0) { if (repeatIdList.size() > 0) { - borrowIdTwo = repeatIdList.get(0); - repeatIdList.remove(0); + if (borrowIdTwo == 0) { + borrowIdTwo = repeatIdList.get(0); + repeatIdList.remove(0); + } } } borrowIds[0][0] = borrowIdOne; diff --git a/apk/warbanner-release.apk b/apk/warbanner-release.apk index 271212a..39a2a32 100644 Binary files a/apk/warbanner-release.apk and b/apk/warbanner-release.apk differ diff --git a/app/build.gradle b/app/build.gradle index 9a7573b..3e0e44f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -88,4 +88,6 @@ dependencies { implementation files('libs/commons-compress-1.19.jar') implementation 'com.github.wanglu1209:PhotoViewer:0.50' + + implementation files('libs/bcrloglib-release.aar') } \ No newline at end of file diff --git a/app/libs/bcrloglib-release.aar b/app/libs/bcrloglib-release.aar new file mode 100644 index 0000000..9621274 Binary files /dev/null and b/app/libs/bcrloglib-release.aar differ diff --git a/app/src/main/java/cn/sun45/warbanner/document/preference/BossConfigPreference.java b/app/src/main/java/cn/sun45/warbanner/document/preference/BossConfigPreference.java new file mode 100644 index 0000000..8ce4092 --- /dev/null +++ b/app/src/main/java/cn/sun45/warbanner/document/preference/BossConfigPreference.java @@ -0,0 +1,269 @@ +package cn.sun45.warbanner.document.preference; + +import cn.sun45.warbanner.framework.document.preference.BasePreference; + +/** + * Created by Sun45 on 2023/9/10 + */ +public class BossConfigPreference extends BasePreference { + //一王一阶段血量 + private long bossOneStageOneHp; + //一王二阶段血量 + private long bossOneStageTwoHp; + //一王三阶段血量 + private long bossOneStageThreeHp; + //一王四阶段血量 + private long bossOneStageFourHp; + //一王五阶段血量 + private long bossOneStageFiveHp; + + + //二王一阶段血量 + private long bossTwoStageOneHp; + //二王二阶段血量 + private long bossTwoStageTwoHp; + //二王三阶段血量 + private long bossTwoStageThreeHp; + //二王四阶段血量 + private long bossTwoStageFourHp; + //二王五阶段血量 + private long bossTwoStageFiveHp; + + //三王一阶段血量 + private long bossThreeStageOneHp; + //三王二阶段血量 + private long bossThreeStageTwoHp; + //三王三阶段血量 + private long bossThreeStageThreeHp; + //三王四阶段血量 + private long bossThreeStageFourHp; + //三王五阶段血量 + private long bossThreeStageFiveHp; + + //四王一阶段血量 + private long bossFourStageOneHp; + //四王二阶段血量 + private long bossFourStageTwoHp; + //四王三阶段血量 + private long bossFourStageThreeHp; + //四王四阶段血量 + private long bossFourStageFourHp; + //四王五阶段血量 + private long bossFourStageFiveHp; + + //五王一阶段血量 + private long bossFiveStageOneHp; + //五王二阶段血量 + private long bossFiveStageTwoHp; + //五王三阶段血量 + private long bossFiveStageThreeHp; + //五王四阶段血量 + private long bossFiveStageFourHp; + //五王五阶段血量 + private long bossFiveStageFiveHp; + + public long getBossOneStageOneHp() { + return load("bossOneStageOneHp"); + } + + public void setBossOneStageOneHp(long bossOneStageOneHp) { + save("bossOneStageOneHp", bossOneStageOneHp); + } + + public long getBossOneStageTwoHp() { + return load("bossOneStageTwoHp"); + } + + public void setBossOneStageTwoHp(long bossOneStageTwoHp) { + save("bossOneStageTwoHp", bossOneStageTwoHp); + } + + public long getBossOneStageThreeHp() { + return load("bossOneStageThreeHp"); + } + + public void setBossOneStageThreeHp(long bossOneStageThreeHp) { + save("bossOneStageThreeHp", bossOneStageThreeHp); + } + + public long getBossOneStageFourHp() { + return load("bossOneStageFourHp"); + } + + public void setBossOneStageFourHp(long bossOneStageFourHp) { + save("bossOneStageFourHp", bossOneStageFourHp); + } + + public long getBossOneStageFiveHp() { + return load("bossOneStageFiveHp"); + } + + public void setBossOneStageFiveHp(long bossOneStageFiveHp) { + save("bossOneStageFiveHp", bossOneStageFiveHp); + } + + public long getBossTwoStageOneHp() { + return load("bossTwoStageOneHp"); + } + + public void setBossTwoStageOneHp(long bossTwoStageOneHp) { + save("bossTwoStageOneHp", bossTwoStageOneHp); + } + + public long getBossTwoStageTwoHp() { + return load("bossTwoStageTwoHp"); + } + + public void setBossTwoStageTwoHp(long bossTwoStageTwoHp) { + save("bossTwoStageTwoHp", bossTwoStageTwoHp); + } + + public long getBossTwoStageThreeHp() { + return load("bossTwoStageThreeHp"); + } + + public void setBossTwoStageThreeHp(long bossTwoStageThreeHp) { + save("bossTwoStageThreeHp", bossTwoStageThreeHp); + } + + public long getBossTwoStageFourHp() { + return load("bossTwoStageFourHp"); + } + + public void setBossTwoStageFourHp(long bossTwoStageFourHp) { + save("bossTwoStageFourHp", bossTwoStageFourHp); + } + + public long getBossTwoStageFiveHp() { + return load("bossTwoStageFiveHp"); + } + + public void setBossTwoStageFiveHp(long bossTwoStageFiveHp) { + save("bossTwoStageFiveHp", bossTwoStageFiveHp); + } + + public long getBossThreeStageOneHp() { + return load("bossThreeStageOneHp"); + } + + public void setBossThreeStageOneHp(long bossThreeStageOneHp) { + save("bossThreeStageOneHp", bossThreeStageOneHp); + } + + public long getBossThreeStageTwoHp() { + return load("bossThreeStageTwoHp"); + } + + public void setBossThreeStageTwoHp(long bossThreeStageTwoHp) { + save("bossThreeStageTwoHp", bossThreeStageTwoHp); + } + + public long getBossThreeStageThreeHp() { + return load("bossThreeStageThreeHp"); + } + + public void setBossThreeStageThreeHp(long bossThreeStageThreeHp) { + save("bossThreeStageThreeHp", bossThreeStageThreeHp); + } + + public long getBossThreeStageFourHp() { + return load("bossThreeStageFourHp"); + } + + public void setBossThreeStageFourHp(long bossThreeStageFourHp) { + save("bossThreeStageFourHp", bossThreeStageFourHp); + } + + public long getBossThreeStageFiveHp() { + return load("bossThreeStageFiveHp"); + } + + public void setBossThreeStageFiveHp(long bossThreeStageFiveHp) { + save("bossThreeStageFiveHp", bossThreeStageFiveHp); + } + + public long getBossFourStageOneHp() { + return load("bossFourStageOneHp"); + } + + public void setBossFourStageOneHp(long bossFourStageOneHp) { + save("bossFourStageOneHp", bossFourStageOneHp); + } + + public long getBossFourStageTwoHp() { + return load("bossFourStageTwoHp"); + } + + public void setBossFourStageTwoHp(long bossFourStageTwoHp) { + save("bossFourStageTwoHp", bossFourStageTwoHp); + } + + public long getBossFourStageThreeHp() { + return load("bossFourStageThreeHp"); + } + + public void setBossFourStageThreeHp(long bossFourStageThreeHp) { + save("bossFourStageThreeHp", bossFourStageThreeHp); + } + + public long getBossFourStageFourHp() { + return load("bossFourStageFourHp"); + } + + public void setBossFourStageFourHp(long bossFourStageFourHp) { + save("bossFourStageFourHp", bossFourStageFourHp); + } + + public long getBossFourStageFiveHp() { + return load("bossFourStageFiveHp"); + } + + public void setBossFourStageFiveHp(long bossFourStageFiveHp) { + save("bossFourStageFiveHp", bossFourStageFiveHp); + } + + public long getBossFiveStageOneHp() { + return load("bossFiveStageOneHp"); + } + + public void setBossFiveStageOneHp(long bossFiveStageOneHp) { + save("bossFiveStageOneHp", bossFiveStageOneHp); + } + + public long getBossFiveStageTwoHp() { + return load("bossFiveStageTwoHp"); + } + + public void setBossFiveStageTwoHp(long bossFiveStageTwoHp) { + save("bossFiveStageTwoHp", bossFiveStageTwoHp); + } + + public long getBossFiveStageThreeHp() { + return load("bossFiveStageThreeHp"); + } + + public void setBossFiveStageThreeHp(long bossFiveStageThreeHp) { + save("bossFiveStageThreeHp", bossFiveStageThreeHp); + } + + public long getBossFiveStageFourHp() { + return load("bossFiveStageFourHp"); + } + + public void setBossFiveStageFourHp(long bossFiveStageFourHp) { + save("bossFiveStageFourHp", bossFiveStageFourHp); + } + + public long getBossFiveStageFiveHp() { + return load("bossFiveStageFiveHp"); + } + + public void setBossFiveStageFiveHp(long bossFiveStageFiveHp) { + save("bossFiveStageFiveHp", bossFiveStageFiveHp); + } + + @Override + public String getName() { + return "bossconfig"; + } +} diff --git a/app/src/main/java/cn/sun45/warbanner/logic/caimogu/CaimoguLogic.java b/app/src/main/java/cn/sun45/warbanner/logic/caimogu/CaimoguLogic.java index 2bd27d0..a021d65 100644 --- a/app/src/main/java/cn/sun45/warbanner/logic/caimogu/CaimoguLogic.java +++ b/app/src/main/java/cn/sun45/warbanner/logic/caimogu/CaimoguLogic.java @@ -12,6 +12,7 @@ import cn.sun45.warbanner.document.database.source.models.BossModel; import cn.sun45.warbanner.document.database.source.models.CharacterModel; import cn.sun45.warbanner.document.database.source.models.TeamModel; +import cn.sun45.warbanner.document.preference.BossConfigPreference; import cn.sun45.warbanner.document.statics.StaticHelper; import cn.sun45.warbanner.framework.logic.BaseLogic; import cn.sun45.warbanner.framework.logic.RequestListener; @@ -141,6 +142,9 @@ public void onResponse(Call call, Response response) { JSONArray dataJsonArray = object.optJSONArray("data"); for (int i = 0; i < dataJsonArray.length(); i++) { JSONObject dataJsonArrayObject = dataJsonArray.optJSONObject(i); + if (lang.equals("zh-cn")) { + fillBossConfigPreference(dataJsonArrayObject, i); + } JSONArray homeworkJsonArray = dataJsonArrayObject.optJSONArray("homework"); for (int j = 0; j < homeworkJsonArray.length(); j++) { JSONObject jsonObject = homeworkJsonArray.optJSONObject(j); @@ -217,4 +221,88 @@ public void onFailure(Call call, Throwable t) { }); return call; } + + private void fillBossConfigPreference(JSONObject dataJsonArrayObject, int i) { + JSONArray detailJsonArray = dataJsonArrayObject.optJSONArray("detail"); + JSONArray hpJsonArray = detailJsonArray.optJSONArray(1); + long hp = hpJsonArray.optLong(1); + switch (i) { + case 0: + new BossConfigPreference().setBossOneStageOneHp(hp); + break; + case 1: + new BossConfigPreference().setBossOneStageTwoHp(hp); + break; + case 2: + new BossConfigPreference().setBossOneStageThreeHp(hp); + break; + case 3: + new BossConfigPreference().setBossOneStageFourHp(hp); + break; + case 4: + new BossConfigPreference().setBossOneStageFiveHp(hp); + break; + case 5: + new BossConfigPreference().setBossTwoStageOneHp(hp); + break; + case 6: + new BossConfigPreference().setBossTwoStageTwoHp(hp); + break; + case 7: + new BossConfigPreference().setBossTwoStageThreeHp(hp); + break; + case 8: + new BossConfigPreference().setBossTwoStageFourHp(hp); + break; + case 9: + new BossConfigPreference().setBossTwoStageFiveHp(hp); + break; + case 10: + new BossConfigPreference().setBossThreeStageOneHp(hp); + break; + case 11: + new BossConfigPreference().setBossThreeStageTwoHp(hp); + break; + case 12: + new BossConfigPreference().setBossThreeStageThreeHp(hp); + break; + case 13: + new BossConfigPreference().setBossThreeStageFourHp(hp); + break; + case 14: + new BossConfigPreference().setBossThreeStageFiveHp(hp); + break; + case 15: + new BossConfigPreference().setBossFourStageOneHp(hp); + break; + case 16: + new BossConfigPreference().setBossFourStageTwoHp(hp); + break; + case 17: + new BossConfigPreference().setBossFourStageThreeHp(hp); + break; + case 18: + new BossConfigPreference().setBossFourStageFourHp(hp); + break; + case 19: + new BossConfigPreference().setBossFourStageFiveHp(hp); + break; + case 20: + new BossConfigPreference().setBossFiveStageOneHp(hp); + break; + case 21: + new BossConfigPreference().setBossFiveStageTwoHp(hp); + break; + case 22: + new BossConfigPreference().setBossFiveStageThreeHp(hp); + break; + case 23: + new BossConfigPreference().setBossFiveStageFourHp(hp); + break; + case 24: + new BossConfigPreference().setBossFiveStageFiveHp(hp); + default: + break; + } + } } diff --git a/app/src/main/java/cn/sun45/warbanner/teamgroup/TeamGroupHelper.java b/app/src/main/java/cn/sun45/warbanner/teamgroup/TeamGroupHelper.java index c8bc047..7b028da 100644 --- a/app/src/main/java/cn/sun45/warbanner/teamgroup/TeamGroupHelper.java +++ b/app/src/main/java/cn/sun45/warbanner/teamgroup/TeamGroupHelper.java @@ -310,8 +310,7 @@ private boolean fit(TeamGroupElementModel teamGroupElementModel, for (int id : idlist) { for (int usingId : usingList) { if (id == usingId) { - //不需要考虑全局需要借的角色和已使用的角色重复的情况,因为全局需要借的角色说明不拥有 - if (screencharacter != 0) { + if (screencharacter != 0 && screencharacter != id) { return false; } else { screencharacter = id; diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/BossDataFragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/BossDataFragment.java new file mode 100644 index 0000000..594ee5a --- /dev/null +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/BossDataFragment.java @@ -0,0 +1,88 @@ +package cn.sun45.warbanner.ui.fragments; + +import android.view.View; + +import androidx.navigation.Navigation; + +import com.google.android.material.appbar.MaterialToolbar; + +import cn.sun45.bcrloglib.BcrLog; +import cn.sun45.bcrloglib.BossConfig; +import cn.sun45.warbanner.R; +import cn.sun45.warbanner.document.preference.BossConfigPreference; +import cn.sun45.warbanner.framework.ui.BaseActivity; +import cn.sun45.warbanner.framework.ui.BaseFragment; + +/** + * Created by Sun45 on 2023/9/10 + */ +public class BossDataFragment extends BaseFragment { + private BcrLog mBcrLog; + + @Override + protected int getContentViewId() { + return R.layout.fragment_bossdata; + } + + @Override + protected void initData() { + + } + + @Override + protected void initView() { + MaterialToolbar toolbar = mRoot.findViewById(R.id.drop_toolbar); + ((BaseActivity) getActivity()).setSupportActionBar(toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Navigation.findNavController(v).navigateUp(); + } + }); + + mBcrLog = mRoot.findViewById(R.id.bcrlog); + BossConfigPreference preference = new BossConfigPreference(); + BossConfig bossConfig = new BossConfig(); + bossConfig.setBossOneStageOneHp(preference.getBossOneStageOneHp()); + bossConfig.setBossOneStageTwoHp(preference.getBossOneStageTwoHp()); + bossConfig.setBossOneStageThreeHp(preference.getBossOneStageThreeHp()); + bossConfig.setBossOneStageFourHp(preference.getBossOneStageFourHp()); + bossConfig.setBossOneStageFiveHp(preference.getBossOneStageFiveHp()); + bossConfig.setBossTwoStageOneHp(preference.getBossTwoStageOneHp()); + bossConfig.setBossTwoStageTwoHp(preference.getBossTwoStageTwoHp()); + bossConfig.setBossTwoStageThreeHp(preference.getBossTwoStageThreeHp()); + bossConfig.setBossTwoStageFourHp(preference.getBossTwoStageFourHp()); + bossConfig.setBossTwoStageFiveHp(preference.getBossTwoStageFiveHp()); + bossConfig.setBossThreeStageOneHp(preference.getBossThreeStageOneHp()); + bossConfig.setBossThreeStageTwoHp(preference.getBossThreeStageTwoHp()); + bossConfig.setBossThreeStageThreeHp(preference.getBossThreeStageThreeHp()); + bossConfig.setBossThreeStageFourHp(preference.getBossThreeStageFourHp()); + bossConfig.setBossThreeStageFiveHp(preference.getBossThreeStageFiveHp()); + bossConfig.setBossFourStageOneHp(preference.getBossFourStageOneHp()); + bossConfig.setBossFourStageTwoHp(preference.getBossFourStageTwoHp()); + bossConfig.setBossFourStageThreeHp(preference.getBossFourStageThreeHp()); + bossConfig.setBossFourStageFourHp(preference.getBossFourStageFourHp()); + bossConfig.setBossFourStageFiveHp(preference.getBossFourStageFiveHp()); + bossConfig.setBossFiveStageOneHp(preference.getBossFiveStageOneHp()); + bossConfig.setBossFiveStageTwoHp(preference.getBossFiveStageTwoHp()); + bossConfig.setBossFiveStageThreeHp(preference.getBossFiveStageThreeHp()); + bossConfig.setBossFiveStageFourHp(preference.getBossFiveStageFourHp()); + bossConfig.setBossFiveStageFiveHp(preference.getBossFiveStageFiveHp()); + mBcrLog.setBossConfig(bossConfig); + } + + @Override + protected void dataRequest() { + + } + + @Override + protected void onShow() { + + } + + @Override + protected void onHide() { + + } +} diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/about/AboutFragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/about/AboutFragment.java index 3c2f028..a9fd826 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/fragments/about/AboutFragment.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/about/AboutFragment.java @@ -59,9 +59,6 @@ protected void dataRequest() { appendStr(builder, " "); appendLink(builder, "花舞攻略组的在线作业文档", "https://docs.qq.com/sheet/DWkdtR2djbnFiUGRk?tab=ltc6xo"); appendStr(builder, "\n"); - appendStr(builder, " "); - appendQQLink(builder, "\n花舞交流群:", "700350785"); - appendStr(builder, "\n"); appendStr(builder, "\n作业数据网站踩蘑菇"); appendStr(builder, " "); appendLink(builder, "轴区网站", "https://www.caimogu.cc/gzlj.html"); @@ -80,6 +77,10 @@ protected void dataRequest() { appendStr(builder, " "); appendLink(builder, "干炸里脊资源站", "https://redive.estertion.win/"); appendStr(builder, "\n"); + appendQQLink(builder, "\nbcrlog交流&问题反馈群:", "916313266"); + appendStr(builder, "\n"); + appendStr(builder, "\n本群的密码是? 公主连结国服版号"); + appendStr(builder, "\n"); appendLink(builder, "\n开源地址", "https://github.com/Sun45/warbanner"); appendStr(builder, "\n"); appendLink(builder, "\n版本及更新内容", "https://github.com/Sun45/warbanner/releases"); @@ -123,15 +124,15 @@ private void appendQQLink(SpannableStringBuilder builder, String name, String qq builder.setSpan(new ClickableSpan() { @Override public void onClick(@NonNull View widget) { - joinQQGroup("jCLm9JM1niDgz5N5V9tu5EjBKPqGbLOD"); + joinQQGroup("T6KJI0ztPfO1GeJfsdSrSNIbyWSR5zc0"); } }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } /**************** * - * 发起添加群流程。群号:花舞-九州界新正双鱼(700350785) 的 key 为: jCLm9JM1niDgz5N5V9tu5EjBKPqGbLOD - * 调用 joinQQGroup(jCLm9JM1niDgz5N5V9tu5EjBKPqGbLOD) 即可发起手Q客户端申请加群 花舞-九州界新正双鱼(700350785) + * 发起添加群流程。群号:bcrlog交流&问题反馈群(916313266) 的 key 为: T6KJI0ztPfO1GeJfsdSrSNIbyWSR5zc0 + * 调用 joinQQGroup(T6KJI0ztPfO1GeJfsdSrSNIbyWSR5zc0) 即可发起手Q客户端申请加群 bcrlog交流&问题反馈群(916313266) * * @param key 由官网生成的key * @return 返回true表示呼起手Q成功,返回false表示呼起失败 diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/menu/MenuPreferecefragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/menu/MenuPreferecefragment.java index fbe2ea3..f5e9f7b 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/fragments/menu/MenuPreferecefragment.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/menu/MenuPreferecefragment.java @@ -39,6 +39,8 @@ public class MenuPreferecefragment extends PreferenceFragmentCompat { //数据 private Preference update; + private Preference boss; + //设置 private Preference user; private Preference characterScreen; @@ -81,6 +83,13 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { return true; }); + boss = findPreference("data_boss"); + boss.setOnPreferenceClickListener(preference -> { + NavController controller = Navigation.findNavController(getView()); + controller.navigate(R.id.action_nav_main_to_nav_bossdata); + return true; + }); + user = findPreference("user"); user.setOnPreferenceClickListener(preference -> { NavController controller = Navigation.findNavController(getView()); diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamDetailFragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamDetailFragment.java index 50d9bfd..533fdeb 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamDetailFragment.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamDetailFragment.java @@ -136,6 +136,7 @@ public void onClick(View v) { } }); mCharacterone.setAutoShow(teamModel.isAuto()); + mCharacterone.setHalfShow(teamModel.isFinish()); characterDataSet(mCharacterone, teamModel.getCharacterone()); characterDataSet(mCharactertwo, teamModel.getCharactertwo()); characterDataSet(mCharacterthree, teamModel.getCharacterthree()); diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamSelectFragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamSelectFragment.java index ae15007..9842e73 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamSelectFragment.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/team/TeamSelectFragment.java @@ -11,7 +11,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; @@ -27,9 +26,6 @@ import cn.sun45.warbanner.R; import cn.sun45.warbanner.character.CharacterHelper; -import cn.sun45.warbanner.clanwar.ClanwarHelper; -import cn.sun45.warbanner.document.database.setup.models.TeamCustomizeModel; -import cn.sun45.warbanner.document.database.setup.models.TeamListShowModel; import cn.sun45.warbanner.document.database.source.models.BossModel; import cn.sun45.warbanner.document.database.source.models.CharacterModel; import cn.sun45.warbanner.document.database.source.models.TeamModel; @@ -54,6 +50,7 @@ */ public class TeamSelectFragment extends BaseFragment implements TeamListListener, ListSelectBarListener { private int team; + private int stageSelection, bossSelection, typeSelection; private SharedViewModelSource sharedSource; private SharedViewModelClanwar sharedClanwar; @@ -72,6 +69,9 @@ protected int getContentViewId() { protected void initData() { Bundle bundle = getArguments(); team = bundle.getInt("team"); + stageSelection = bundle.getInt("stageSelection"); + bossSelection = bundle.getInt("bossSelection"); + typeSelection = bundle.getInt("typeSelection"); setHasOptionsMenu(true); } @@ -105,9 +105,9 @@ protected void dataRequest() { if (teamModels != null && !teamModels.isEmpty()) { List bossModels = sharedSource.bossList.getValue(); List characterModels = sharedSource.characterList.getValue(); - TeamListShowModel teamListShowModel = ClanwarHelper.getTeamListShowModel(); mTeamList.setData(teamModels, bossModels, characterModels, - false, teamListShowModel.getTeamListStage(), teamListShowModel.getTeamListBoss(), teamListShowModel.getTeamListType(), + false, + stageSelection, bossSelection, typeSelection, new SetupPreference().isCharacterscreenenable(), CharacterHelper.getScreenCharacterList()); if (teamModels != null && !teamModels.isEmpty()) { mEmptyHint.setVisibility(View.INVISIBLE); @@ -149,27 +149,23 @@ private void showScreendialog() { LinearLayout lay = new LinearLayout(getContext()); lay.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); lay.setOrientation(LinearLayout.VERTICAL); - TeamListShowModel teamListShowModel = ClanwarHelper.getTeamListShowModel(); SelectGroup stage = new SelectGroup(getContext()); List stageDescriptionList = StageManager.getInstance().getStageDescriptionList(); stageDescriptionList.add(0, Utils.getString(R.string.all)); - stage.setData(stageDescriptionList, teamListShowModel.getTeamListStage()); + stage.setData(stageDescriptionList, stageSelection); stage.setListener(position -> { - ClanwarHelper.setTeamListShowStage(position); mTeamList.notifyStageSelect(position); }); lay.addView(stage); SelectGroup boss = new SelectGroup(getContext()); - boss.setData(Utils.getStringArray(R.array.teamlist_screen_boss_options), teamListShowModel.getTeamListBoss()); + boss.setData(Utils.getStringArray(R.array.teamlist_screen_boss_options), bossSelection); boss.setListener(position -> { - ClanwarHelper.setTeamListShowBoss(position); mTeamList.notifyBossSelect(position); }); lay.addView(boss); SelectGroup type = new SelectGroup(getContext()); - type.setData(Utils.getStringArray(R.array.teamlist_screen_type_options), teamListShowModel.getTeamListType()); + type.setData(Utils.getStringArray(R.array.teamlist_screen_type_options), typeSelection); type.setListener(position -> { - ClanwarHelper.setTeamListShowType(position); mTeamList.notifyTypeSelect(position); }); lay.addView(type); diff --git a/app/src/main/java/cn/sun45/warbanner/ui/fragments/teamgroup/TeamGroupScreenFragment.java b/app/src/main/java/cn/sun45/warbanner/ui/fragments/teamgroup/TeamGroupScreenFragment.java index 938ec99..d69815e 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/fragments/teamgroup/TeamGroupScreenFragment.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/fragments/teamgroup/TeamGroupScreenFragment.java @@ -346,6 +346,9 @@ public TeamHolder(int team, MaterialCardView lay) { NavController controller = Navigation.findNavController(getView()); Bundle bundle = new Bundle(); bundle.putSerializable("team", team); + bundle.putSerializable("stageSelection", getStage() + 1); + bundle.putSerializable("bossSelection", getBoss() + 1); + bundle.putSerializable("typeSelection", getAuto()); controller.navigate(R.id.action_nav_teamgroupscreen_to_nav_teamselect, bundle); }); mExtra.setOnClickListener(v -> { diff --git a/app/src/main/java/cn/sun45/warbanner/ui/views/character/characterview/CharacterView.java b/app/src/main/java/cn/sun45/warbanner/ui/views/character/characterview/CharacterView.java index 565a46d..6e8a543 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/views/character/characterview/CharacterView.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/views/character/characterview/CharacterView.java @@ -32,6 +32,7 @@ public class CharacterView extends CardView { private ImageView mIcon; private TextView mName; private View mAuto; + private View mHalf; public CharacterView(@NonNull Context context) { this(context, null); @@ -53,6 +54,7 @@ private void init() { mIcon = findViewById(R.id.character_icon); mName = findViewById(R.id.character_name); mAuto = findViewById(R.id.character_auto); + mHalf = findViewById(R.id.character_half); } public void setCharacterModel(CharacterModel characterModel, int id) { @@ -114,4 +116,12 @@ public void setAutoShow(boolean auto) { mAuto.setVisibility(INVISIBLE); } } + + public void setHalfShow(boolean half) { + if (half) { + mHalf.setVisibility(VISIBLE); + } else { + mHalf.setVisibility(INVISIBLE); + } + } } diff --git a/app/src/main/java/cn/sun45/warbanner/ui/views/teamgrouplist/TeamGroupListAdapter.java b/app/src/main/java/cn/sun45/warbanner/ui/views/teamgrouplist/TeamGroupListAdapter.java index 5bf7a8e..82cb655 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/views/teamgrouplist/TeamGroupListAdapter.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/views/teamgrouplist/TeamGroupListAdapter.java @@ -225,6 +225,7 @@ public void setData(TeamModel teamModel, TeamCustomizeModel teamCustomizeModel, mTitle.setText(builder); } mCharacterone.setAutoShow(teamModel.isAuto()); + mCharacterone.setHalfShow(teamModel.isFinish()); characterDataSet(mCharacterone, idlist.get(0), borrowindex == 0); characterDataSet(mCharactertwo, idlist.get(1), borrowindex == 1); characterDataSet(mCharacterthree, idlist.get(2), borrowindex == 2); diff --git a/app/src/main/java/cn/sun45/warbanner/ui/views/teamlist/TeamListAdapter.java b/app/src/main/java/cn/sun45/warbanner/ui/views/teamlist/TeamListAdapter.java index 6215bbe..8c7343e 100644 --- a/app/src/main/java/cn/sun45/warbanner/ui/views/teamlist/TeamListAdapter.java +++ b/app/src/main/java/cn/sun45/warbanner/ui/views/teamlist/TeamListAdapter.java @@ -307,6 +307,7 @@ public void setData(TeamListTeamModel teamListTeamModel) { mTitle.setText(builder); } mCharacterone.setAutoShow(teamModel.isAuto()); + mCharacterone.setHalfShow(teamModel.isFinish()); if (borrowindex == -1) { characterDataSet(mCharacterone, teamModel.getCharacterone()); characterDataSet(mCharactertwo, teamModel.getCharactertwo()); diff --git a/app/src/main/res/drawable-hdpi/ic_bcr_log.png b/app/src/main/res/drawable-hdpi/ic_bcr_log.png new file mode 100644 index 0000000..eb711d3 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_bcr_log.png differ diff --git a/app/src/main/res/drawable/ic_data_boss.xml b/app/src/main/res/drawable/ic_data_boss.xml new file mode 100644 index 0000000..4665859 --- /dev/null +++ b/app/src/main/res/drawable/ic_data_boss.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/characterview_lay.xml b/app/src/main/res/layout/characterview_lay.xml index 180f626..0a2d003 100644 --- a/app/src/main/res/layout/characterview_lay.xml +++ b/app/src/main/res/layout/characterview_lay.xml @@ -28,4 +28,16 @@ android:textSize="8sp" android:textStyle="bold" android:visibility="invisible" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bossdata.xml b/app/src/main/res/layout/fragment_bossdata.xml new file mode 100644 index 0000000..e439f00 --- /dev/null +++ b/app/src/main/res/layout/fragment_bossdata.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/app_navigation.xml b/app/src/main/res/navigation/app_navigation.xml index 54b2c3d..d1268d9 100644 --- a/app/src/main/res/navigation/app_navigation.xml +++ b/app/src/main/res/navigation/app_navigation.xml @@ -56,6 +56,13 @@ app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 044acd3..787ba52 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ 默认用户 全部 AUTO + HALF 视频和轴是UP主心血的结晶,抄完作业记得至少给点个赞哦👍 应用为最新版本,无需更新 @@ -61,6 +62,7 @@ 数据 数据更新 + BOSS数据监听 设置 本地用户 角色筛选 @@ -155,4 +157,6 @@ 已将文字复制至剪贴板 关于 + + BOSS数据监听 \ No newline at end of file diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 75f8cc1..f465c9d 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -9,6 +9,10 @@ app:icon="@drawable/ic_baseline_format_align_justify_24" app:key="data_update" app:title="@string/menu_data_update" /> +