package com.antest1.kcanotify.h5; import android.annotation.SuppressLint; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.AssetManager; import android.content.res.Configuration; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.PorterDuff; import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; import com.google.common.io.ByteStreams; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import static android.view.View.GONE; import static com.antest1.kcanotify.h5.KcaAkashiViewService.SHOW_AKASHIVIEW_ACTION; import static com.antest1.kcanotify.h5.KcaApiData.getItemTranslation; import static com.antest1.kcanotify.h5.KcaApiData.getKcItemStatusById; import static com.antest1.kcanotify.h5.KcaApiData.getShipTranslation; import static com.antest1.kcanotify.h5.KcaApiData.getShipTypeAbbr; import static com.antest1.kcanotify.h5.KcaApiData.getUserItemStatusById; import static com.antest1.kcanotify.h5.KcaApiData.isGameDataLoaded; import static com.antest1.kcanotify.h5.KcaApiData.isItemAircraft; import static com.antest1.kcanotify.h5.KcaConstants.DB_KEY_DECKPORT; import static com.antest1.kcanotify.h5.KcaConstants.ERROR_TYPE_FLEETVIEW; import static com.antest1.kcanotify.h5.KcaConstants.KCANOTIFY_DB_VERSION; import static com.antest1.kcanotify.h5.KcaConstants.PREF_FIX_VIEW_LOC; import static com.antest1.kcanotify.h5.KcaConstants.PREF_FV_MENU_ORDER; import static com.antest1.kcanotify.h5.KcaConstants.PREF_KCA_SEEK_CN; import static com.antest1.kcanotify.h5.KcaConstants.PREF_VIEW_YLOC; import static com.antest1.kcanotify.h5.KcaConstants.SEEK_PURE; import static com.antest1.kcanotify.h5.KcaQuestViewService.SHOW_QUESTVIEW_ACTION_NEW; import static com.antest1.kcanotify.h5.KcaUseStatConstant.CLOSE_FLEETVIEW; import static com.antest1.kcanotify.h5.KcaUseStatConstant.FV_BTN_PRESS; import static com.antest1.kcanotify.h5.KcaUseStatConstant.OPEN_FLEETVIEW; import static com.antest1.kcanotify.h5.KcaUtils.getBooleanPreferences; import static com.antest1.kcanotify.h5.KcaUtils.getContextWithLocale; import static com.antest1.kcanotify.h5.KcaUtils.getId; import static com.antest1.kcanotify.h5.KcaUtils.getStringFromException; import static com.antest1.kcanotify.h5.KcaUtils.getStringPreferences; import static com.antest1.kcanotify.h5.KcaUtils.getWindowLayoutType; import static com.antest1.kcanotify.h5.KcaUtils.joinStr; import static com.antest1.kcanotify.h5.KcaUtils.sendUserAnalytics; import static com.antest1.kcanotify.h5.KcaUtils.setPreferences; public class KcaFleetViewService extends Service { public static final String SHOW_FLEETVIEW_ACTION = "show_fleetview_action"; public static final String REFRESH_FLEETVIEW_ACTION = "update_fleetview_action"; public static final String CLOSE_FLEETVIEW_ACTION = "close_fleetview_action"; public static final String[] fleetview_menu_keys = {"quest", "excheck", "develop", "construction", "docking", "maphp", "fchk", "labinfo", "akashi"}; public static final String DECKINFO_REQ_LIST = "id,ship_id,lv,exp,slot,slot_ex,onslot,cond,maxhp,nowhp,sally_area"; public static final String KC_DECKINFO_REQ_LIST = "name,maxeq,stype"; public static final int FLEET_COMBINED_ID = 4; final int fleetview_menu_margin = 40; private static final int HQINFO_TOTAL = 2; private static final int HQINFO_EXPVIEW = 0; private static final int HQINFO_SECOUNT = 1; private static final int HQINFO_EVENT = 2; Context contextWithLocale; LayoutInflater mInflater; SharedPreferences prefs; public KcaDBHelper dbHelper; public KcaDeckInfo deckInfoCalc; int seekcn_internal = -1; int switch_status = 1; Handler mHandler; Runnable timer; String fleetCalcInfoText = ""; boolean isAkashiTimerActive = false; ScheduledExecutorService timeScheduler = null; static int view_status = 0; static boolean error_flag = false; boolean active; private View mView, itemView, fleetHqInfoView; private TextView fleetInfoTitle, fleetInfoLine, fleetCnChangeBtn, fleetSwitchBtn, fleetAkashiTimerBtn; private WindowManager mManager; private ScrollView fleetMenu, fleetShipArea; private ImageView fleetMenuArrowUp, fleetMenuArrowDown; private static boolean isReady; private static int hqinfoState = 0; private JsonObject gunfitData; int displayWidth = 0; WindowManager.LayoutParams mParams; int selected; @Nullable @Override public IBinder onBind(Intent intent) { return null; } public String getStringWithLocale(int id) { return KcaUtils.getStringWithLocale(getApplicationContext(), getBaseContext(), id); } public static void setReadyFlag(boolean flag) { isReady = flag; } private static String makeLvString(int level) { return KcaUtils.format("Lv %d", level); } private static String makeExpString(int exp) { return KcaUtils.format("next: %d", exp);} private static String makeSimpleExpString(float e1, float e2) { return KcaUtils.format("%.2f/%.2f", e1, e2); } private static String makeHpString(int currenthp, int maxhp) { return KcaUtils.format("HP %d/%d", currenthp, maxhp); } @SuppressLint("DefaultLocale") public int setView() { try { Log.e("KCA-FV", String.valueOf(selected)); setHqInfo(); fleetInfoTitle.setVisibility(View.VISIBLE); updateSelectedView(selected); if (seekcn_internal == -1) seekcn_internal = getSeekCn(); processDeckInfo(selected, isCombinedFlag(selected)); return 0; } catch (Exception e) { e.printStackTrace(); sendReport(e, 0); return 1; } } private void setHqInfo() { int[] view_id = {R.id.fleetview_exp, R.id.fleetview_cnt}; for (int i = 0; i < view_id.length; i++) { fleetHqInfoView.findViewById(view_id[i]).setVisibility((i == hqinfoState) ? View.VISIBLE : View.GONE); } switch (hqinfoState) { case HQINFO_EXPVIEW: TextView expview = fleetHqInfoView.findViewById(R.id.fleetview_exp); float[] exp_score = dbHelper.getExpScore(); expview.setText(KcaUtils.format( getStringWithLocale(R.string.fleetview_expview), exp_score[0], exp_score[1])); break; case HQINFO_SECOUNT: TextView shipcntview = fleetHqInfoView.findViewById(R.id.fleetview_cnt1); TextView equipcntview = fleetHqInfoView.findViewById(R.id.fleetview_cnt2); ImageView shipcntviewicon = fleetHqInfoView.findViewById(R.id.fleetview_cnt1_icon); ImageView equipcntviewicon = fleetHqInfoView.findViewById(R.id.fleetview_cnt2_icon); shipcntview.setText(KcaUtils.format("%d/%d", KcaApiData.getShipSize(), KcaApiData.getUserMaxShipCount())); if (KcaApiData.checkEventUserShip()){ shipcntview.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorHqCheckEventCondFailed)); shipcntviewicon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.colorHqCheckEventCondFailed), PorterDuff.Mode.MULTIPLY); } else { shipcntview.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white)); shipcntviewicon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.white), PorterDuff.Mode.MULTIPLY); } equipcntview.setText(KcaUtils.format("%d/%d", KcaApiData.getItemSize(), KcaApiData.getUserMaxItemCount())); if (KcaApiData.checkEventUserItem()){ equipcntview.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorHqCheckEventCondFailed)); equipcntviewicon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.colorHqCheckEventCondFailed), PorterDuff.Mode.MULTIPLY); } else { equipcntview.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white)); equipcntviewicon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.white), PorterDuff.Mode.MULTIPLY); } /* // Saury Event Code ImageView saurycntviewicon = fleetHqInfoView.findViewById(R.id.fleetview_cnt3_icon); TextView saurycntview = fleetHqInfoView.findViewById(R.id.fleetview_cnt3); saurycntviewicon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.colorItemDrop), PorterDuff.Mode.MULTIPLY); saurycntview.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorItemDrop)); saurycntview.setText("0"); JsonArray useitem_data = dbHelper.getJsonArrayValue(DB_KEY_USEITEMS); if (useitem_data != null) { for (int i = 0; i < useitem_data.size(); i++) { JsonObject item = useitem_data.get(i).getAsJsonObject(); int key = item.get("api_id").getAsInt(); if (key == 68) { // SAMMA saurycntview.setText(String.valueOf(item.get("api_count").getAsInt())); } } } break; */ /* case HQINFO_EVENT: TextView spring_item_1 = fleetHqInfoView.findViewById(R.id.fleetview_18spring_1); TextView spring_item_2 = fleetHqInfoView.findViewById(R.id.fleetview_18spring_2); TextView spring_item_3 = fleetHqInfoView.findViewById(R.id.fleetview_18spring_3); TextView spring_item_4 = fleetHqInfoView.findViewById(R.id.fleetview_18spring_4); JsonArray useitem_data = dbHelper.getJsonArrayValue(DB_KEY_USEITEMS); int[] item_count = {0, 0, 0, 0}; if (useitem_data != null) { for (int i = 0; i < useitem_data.size(); i++) { JsonObject item = useitem_data.get(i).getAsJsonObject(); int key = item.get("api_id").getAsInt(); switch (key) { case 85: case 86: case 87: case 88: item_count[key - 85] += item.get("api_count").getAsInt(); break; } } } spring_item_1.setText(KcaUtils.format(getStringWithLocale(R.string.fleetview_18spring_rice), item_count[0])); spring_item_2.setText(KcaUtils.format(getStringWithLocale(R.string.fleetview_18spring_umeboshi), item_count[1])); spring_item_3.setText(KcaUtils.format(getStringWithLocale(R.string.fleetview_18spring_nori), item_count[2])); spring_item_4.setText(KcaUtils.format(getStringWithLocale(R.string.fleetview_18spring_tea), item_count[3])); break; */ default: break; } } void runTimer() { timeScheduler = Executors.newSingleThreadScheduledExecutor(); timeScheduler.scheduleAtFixedRate(timer, 0, 1, TimeUnit.SECONDS); } void stopTimer() { if (timeScheduler != null) { timeScheduler.shutdown(); } } @Override public void onCreate() { super.onCreate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getApplicationContext())) { // Can not draw overlays: pass stopSelf(); } try { active = true; switch_status = 1; prefs = PreferenceManager.getDefaultSharedPreferences(this); view_status = Integer.parseInt(getStringPreferences(getApplicationContext(), PREF_VIEW_YLOC)); mManager = (WindowManager) getSystemService(WINDOW_SERVICE); dbHelper = new KcaDBHelper(getApplicationContext(), null, KCANOTIFY_DB_VERSION); dbHelper.updateExpScore(0); KcaApiData.setDBHelper(dbHelper); contextWithLocale = getContextWithLocale(getApplicationContext(), getBaseContext()); deckInfoCalc = new KcaDeckInfo(getApplicationContext(), contextWithLocale); gunfitData = loadGunfitData(getAssets()); //mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); mInflater = LayoutInflater.from(contextWithLocale); initView(); fleetInfoLine.setText(getStringWithLocale(R.string.kca_init_content)); itemView = mInflater.inflate(R.layout.view_battleview_items, null); mHandler = new Handler(); timer = new Runnable() { @Override public void run() { updateFleetInfoLine(); } }; runTimer(); mManager.addView(mView, mParams); Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); Point size = new Point(); display.getSize(size); displayWidth = size.x; } catch (Exception e) { e.printStackTrace(); active = false; error_flag = true; sendReport(e, 1); stopSelf(); } } @Override public void onDestroy() { active = false; stopTimer(); if (mView != null) { if (mView.getParent() != null) mManager.removeViewImmediate(mView); } if (itemView != null) { if (itemView.getParent() != null) mManager.removeViewImmediate(itemView); } super.onDestroy(); } private void setFleetMenu() { LinearLayout fleetMenuArea = mView.findViewById(R.id.viewbutton_area); List<TextView> menuBtnList = new ArrayList<>(); for (int i = 0; i < fleetview_menu_keys.length; i++) { String key = fleetview_menu_keys[i]; TextView tv = mView.findViewById(KcaUtils.getId(KcaUtils.format("viewbutton_%s", key), R.id.class)); tv.setText(getStringWithLocale(KcaUtils.getId(KcaUtils.format("viewmenu_%s", key), R.string.class))); tv.setOnTouchListener(mViewTouchListener); menuBtnList.add(tv); ((ViewGroup) tv.getParent()).removeView(tv); } String order_data = getStringPreferences(getApplicationContext(), PREF_FV_MENU_ORDER); if (order_data.length() > 0) { JsonArray order = new JsonParser().parse(order_data).getAsJsonArray(); for (int i = 0; i < order.size(); i++) { fleetMenuArea.addView(menuBtnList.get(order.get(i).getAsInt())); } } else { for (TextView tv: menuBtnList) { fleetMenuArea.addView(tv); } } } private void initView() { mView = mInflater.inflate(R.layout.view_fleet_list, null); mView.setVisibility(GONE); KcaUtils.resizeFullWidthView(getApplicationContext(), mView); mView.findViewById(R.id.fleetview_shiparea).setOnTouchListener(mViewTouchListener); mView.findViewById(R.id.fleetview_tool).setOnTouchListener(mViewTouchListener); mView.findViewById(R.id.fleetview_head).setOnTouchListener(mViewTouchListener); mView.findViewById(R.id.fleetview_cn_change).setOnTouchListener(mViewTouchListener); mView.findViewById(R.id.fleetview_fleetswitch).setOnTouchListener(mViewTouchListener); mView.findViewById(R.id.fleetview_hqinfo).setOnTouchListener(mViewTouchListener); for (int i = 0; i < 5; i++) { mView.findViewById(getId("fleet_".concat(String.valueOf(i + 1)), R.id.class)).setOnTouchListener(mViewTouchListener); } for (int i = 0; i < 12; i++) { mView.findViewById(getId("fleetview_item_".concat(String.valueOf(i + 1)), R.id.class)).setOnTouchListener(mViewTouchListener); } setFleetMenu(); mParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT, getWindowLayoutType(), WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); mParams.gravity = KcaUtils.getGravity(view_status); setPreferences(getApplicationContext(), PREF_VIEW_YLOC, view_status); fleetInfoLine = mView.findViewById(R.id.fleetview_infoline); fleetInfoLine.setOnTouchListener(mViewTouchListener); fleetInfoTitle = mView.findViewById(R.id.fleetview_title); fleetHqInfoView = mView.findViewById(R.id.fleetview_hqinfo); fleetCnChangeBtn = mView.findViewById(R.id.fleetview_cn_change); fleetAkashiTimerBtn = mView.findViewById(R.id.fleetview_akashi_timer); fleetSwitchBtn = mView.findViewById(R.id.fleetview_fleetswitch); fleetSwitchBtn.setVisibility(View.GONE); fleetShipArea = mView.findViewById(R.id.fleetview_shiparea); fleetMenu = mView.findViewById(R.id.fleetview_menu); fleetMenuArrowUp = mView.findViewById(R.id.fleetview_menu_up); fleetMenuArrowDown = mView.findViewById(R.id.fleetview_menu_down); fleetMenu.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { ViewTreeObserver observer = fleetMenu.getViewTreeObserver(); observer.addOnScrollChangedListener(fleetMenuScrollChangeListener); return false; } }); } final ViewTreeObserver.OnScrollChangedListener fleetMenuScrollChangeListener = new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { if (fleetMenu != null && fleetMenuArrowUp != null && fleetMenuArrowDown != null) { if (fleetMenu.getScrollY() < fleetview_menu_margin) { fleetMenuArrowUp.setVisibility(View.GONE); fleetMenuArrowDown.setAlpha(0.9f); } else if (fleetMenu.getChildAt(0).getBottom() - (fleetMenu.getHeight() + fleetMenu.getScrollY()) < fleetview_menu_margin) { fleetMenuArrowDown.setVisibility(View.GONE); fleetMenuArrowUp.setAlpha(0.9f); } else { fleetMenuArrowUp.setVisibility(View.VISIBLE); fleetMenuArrowDown.setVisibility(View.VISIBLE); fleetMenuArrowUp.setAlpha(0.6f); fleetMenuArrowDown.setAlpha(0.6f); } } } }; @Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent != null && intent.getAction() != null) { if (intent.getAction().equals(SHOW_FLEETVIEW_ACTION)) { if (mView != null && mView.getVisibility() != View.VISIBLE) { int setViewResult = setView(); if (setViewResult == 0) { mView.setVisibility(View.VISIBLE); if (mView.getParent() != null) { mManager.removeViewImmediate(mView); } mManager.addView(mView, mParams); } sendUserAnalytics(OPEN_FLEETVIEW, null); } } if (intent.getAction().equals(REFRESH_FLEETVIEW_ACTION)) { int setViewResult = setView(); if (setViewResult == 0) { if (mView != null && mView.getParent() != null) { mView.invalidate(); mManager.updateViewLayout(mView, mParams); } } } if (intent.getAction().equals(CLOSE_FLEETVIEW_ACTION)) { if (mView != null) { mView.setVisibility(GONE); if (mView.getParent() != null) { mManager.removeViewImmediate(mView); } itemView.setVisibility(GONE); if (itemView.getParent() != null) { mManager.removeViewImmediate(itemView); } JsonObject statProperties = new JsonObject(); statProperties.addProperty("manual", false); sendUserAnalytics(CLOSE_FLEETVIEW, statProperties); } } } return super.onStartCommand(intent, flags, startId); } private View.OnTouchListener mViewTouchListener = new View.OnTouchListener() { private static final int MAX_CLICK_DURATION = 200; private long startClickTime = -1; private long clickDuration; private float mBeforeY, mAfterY; @Override public boolean onTouch(View v, MotionEvent event) { boolean view_fix = getBooleanPreferences(getApplicationContext(), PREF_FIX_VIEW_LOC); WindowManager.LayoutParams itemViewParams; int xMargin = (int) getResources().getDimension(R.dimen.item_popup_xmargin); Intent qintent; int id = v.getId(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.e("KCA-FV", "ACTION_DOWN"); mBeforeY = event.getRawY(); mAfterY = event.getRawY(); startClickTime = Calendar.getInstance().getTimeInMillis(); if (id == fleetInfoLine.getId()) { fleetInfoLine.setSelected(true); } for (int i = 0; i < 12; i++) { String item_id = "fleetview_item_".concat(String.valueOf(i + 1)); if (id == mView.findViewById(getId(item_id, R.id.class)).getId()) { JsonArray data; JsonObject udata, kcdata; if (isCombinedFlag(selected)) { if (i < 6) { data = deckInfoCalc.getDeckListInfo(dbHelper.getJsonArrayValue(DB_KEY_DECKPORT), 0, DECKINFO_REQ_LIST, KC_DECKINFO_REQ_LIST); } else { data = deckInfoCalc.getDeckListInfo(dbHelper.getJsonArrayValue(DB_KEY_DECKPORT), 1, DECKINFO_REQ_LIST, KC_DECKINFO_REQ_LIST); } udata = data.get(i % 6).getAsJsonObject().getAsJsonObject("user"); kcdata = data.get(i % 6).getAsJsonObject().getAsJsonObject("kc"); } else { data = deckInfoCalc.getDeckListInfo(dbHelper.getJsonArrayValue(DB_KEY_DECKPORT), selected, DECKINFO_REQ_LIST, KC_DECKINFO_REQ_LIST); udata = data.get(i).getAsJsonObject().getAsJsonObject("user"); kcdata = data.get(i).getAsJsonObject().getAsJsonObject("kc"); } String ship_id = udata.get("ship_id").getAsString(); int ship_married = udata.get("lv").getAsInt() >= 100 ? 1 : 0; JsonObject itemdata = new JsonObject(); itemdata.add("api_slot", udata.get("slot")); itemdata.add("api_slot_ex", udata.get("slot_ex")); itemdata.add("api_onslot", udata.get("onslot")); itemdata.add("api_maxslot", kcdata.get("maxeq")); setItemViewLayout(itemdata, ship_id, ship_married); itemViewParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, getWindowLayoutType(), WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); itemViewParams.x = (int) (event.getRawX() + xMargin); itemViewParams.y = (int) event.getRawY(); itemViewParams.gravity = Gravity.TOP | Gravity.LEFT; if (itemView.getParent() != null) { mManager.removeViewImmediate(itemView); } mManager.addView(itemView, itemViewParams); } } break; case MotionEvent.ACTION_UP: Log.e("KCA-FV", "ACTION_UP"); clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime; if (id == fleetInfoLine.getId()) { fleetInfoLine.setSelected(false); } for (int i = 0; i < 12; i++) { String item_id = "fleetview_item_".concat(String.valueOf(i + 1)); if (id == mView.findViewById(getId(item_id, R.id.class)).getId()) { itemView.setVisibility(GONE); break; } } int y_direction = (int) (mAfterY - mBeforeY); if (!view_fix && Math.abs(y_direction) > 400) { int status_change = y_direction > 0 ? 1 : -1; view_status = Math.min(Math.max(view_status + status_change, -1), 1); mParams.gravity = KcaUtils.getGravity(view_status); mManager.updateViewLayout(mView, mParams); setPreferences(getApplicationContext(), PREF_VIEW_YLOC, view_status); } if (clickDuration < MAX_CLICK_DURATION) { if (id == mView.findViewById(R.id.fleetview_head).getId()) { JsonObject statProperties = new JsonObject(); statProperties.addProperty("manual", true); sendUserAnalytics(CLOSE_FLEETVIEW, statProperties); if (mView != null) mView.setVisibility(GONE); if (itemView != null) itemView.setVisibility(GONE); } else if (id == mView.findViewById(R.id.fleetview_tool).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("Tools"), null); if (mView != null) mView.setVisibility(GONE); if (itemView != null) itemView.setVisibility(GONE); Intent toolIntent = new Intent(KcaFleetViewService.this, ToolsActivity.class); toolIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(toolIntent); } else if (id == mView.findViewById(R.id.fleetview_cn_change).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("CnChange"), null); changeInternalSeekCn(); fleetCnChangeBtn.setText(getSeekType()); processDeckInfo(selected, isCombinedFlag(selected)); } else if (id == mView.findViewById(R.id.fleetview_fleetswitch).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("FleetChange"), null); if (switch_status == 1) { switch_status = 2; mView.findViewById(R.id.fleet_list_main).setVisibility(View.GONE); mView.findViewById(R.id.fleet_list_combined).setVisibility(View.VISIBLE); ((TextView) mView.findViewById(R.id.fleetview_fleetswitch)).setText(getStringWithLocale(R.string.fleetview_switch_2)); } else { switch_status = 1; mView.findViewById(R.id.fleet_list_main).setVisibility(View.VISIBLE); mView.findViewById(R.id.fleet_list_combined).setVisibility(View.GONE); ((TextView) mView.findViewById(R.id.fleetview_fleetswitch)).setText(getStringWithLocale(R.string.fleetview_switch_1)); } } else if (id == mView.findViewById(R.id.fleetview_hqinfo).getId()) { hqinfoState = (hqinfoState + 1) % HQINFO_TOTAL; JsonObject statProperties = new JsonObject(); statProperties.addProperty("state", hqinfoState); sendUserAnalytics(FV_BTN_PRESS.concat("HqInfo"), statProperties); setHqInfo(); } else if (id == mView.findViewById(R.id.viewbutton_quest).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("Quest"), null); qintent = new Intent(getBaseContext(), KcaQuestViewService.class); qintent.setAction(SHOW_QUESTVIEW_ACTION_NEW); startService(qintent); } else if (id == mView.findViewById(R.id.viewbutton_akashi).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("Akashi"), null); qintent = new Intent(getBaseContext(), KcaAkashiViewService.class); qintent.setAction(SHOW_AKASHIVIEW_ACTION); startService(qintent); } else if (id == mView.findViewById(R.id.viewbutton_develop).getId()) { if (isGameDataLoaded()) { sendUserAnalytics(FV_BTN_PRESS.concat("Develop"), null); qintent = new Intent(getBaseContext(), KcaDevelopPopupService.class); startService(qintent); } } else if (id == mView.findViewById(R.id.viewbutton_construction).getId()) { if (isGameDataLoaded()) { sendUserAnalytics(FV_BTN_PRESS.concat("Constr"), null); qintent = new Intent(getBaseContext(), KcaConstructPopupService.class); qintent.setAction(KcaConstructPopupService.CONSTR_DATA_ACTION); startService(qintent); } } else if (id == mView.findViewById(R.id.viewbutton_docking).getId()) { if (isGameDataLoaded()) { sendUserAnalytics(FV_BTN_PRESS.concat("Docking"), null); qintent = new Intent(getBaseContext(), KcaDockingPopupService.class); qintent.setAction(KcaDockingPopupService.DOCKING_DATA_ACTION); startService(qintent); } } else if (id == mView.findViewById(R.id.viewbutton_maphp).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("MapHP"), null); qintent = new Intent(getBaseContext(), KcaMapHpPopupService.class); qintent.setAction(KcaMapHpPopupService.MAPHP_SHOW_ACTION); startService(qintent); } else if (id == mView.findViewById(R.id.viewbutton_fchk).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("FleetCheck"), null); qintent = new Intent(getBaseContext(), KcaFleetCheckPopupService.class); qintent.setAction(KcaFleetCheckPopupService.FCHK_SHOW_ACTION); startService(qintent); } else if (id == mView.findViewById(R.id.viewbutton_labinfo).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("LandAirBaseInfo"), null); qintent = new Intent(getBaseContext(), KcaLandAirBasePopupService.class); qintent.setAction(KcaLandAirBasePopupService.LAB_DATA_ACTION); startService(qintent); } else if (id == mView.findViewById(R.id.viewbutton_excheck).getId()) { sendUserAnalytics(FV_BTN_PRESS.concat("ExpeditionCheck"), null); qintent = new Intent(getBaseContext(), KcaExpeditionCheckViewService.class); qintent.setAction(KcaExpeditionCheckViewService.SHOW_EXCHECKVIEW_ACTION.concat("/").concat(String.valueOf(selected))); startService(qintent); } else { for (int i = 0; i < 5; i++) { if (id == mView.findViewById(getId("fleet_".concat(String.valueOf(i + 1)), R.id.class)).getId()) { selected = i; setView(); break; } } } } break; case MotionEvent.ACTION_MOVE: mAfterY = event.getRawY(); break; } if (id == mView.findViewById(R.id.fleetview_shiparea).getId()) return false; else return true; } }; private View.OnTouchListener mPopupTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return false; } }; private boolean isCombinedFlag(int idx) { return idx == FLEET_COMBINED_ID; } private void processDeckInfo(int idx, boolean isCombined) { boolean is_combined = idx == FLEET_COMBINED_ID; boolean is_landscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; JsonArray deckportdata = dbHelper.getJsonArrayValue(DB_KEY_DECKPORT); if (!isReady) { fleetCalcInfoText = ""; fleetInfoLine.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNoShip)); fleetInfoLine.setText(getStringWithLocale(R.string.kca_init_content)); mView.findViewById(R.id.fleet_list_main).setVisibility(View.INVISIBLE); mView.findViewById(R.id.fleet_list_combined).setVisibility(is_landscape? View.INVISIBLE : View.GONE); fleetSwitchBtn.setVisibility(View.GONE); return; } if (idx != FLEET_COMBINED_ID && idx >= deckportdata.size()) { fleetCalcInfoText = "Not Opened"; fleetInfoLine.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNoShip)); fleetInfoLine.setText(fleetCalcInfoText); mView.findViewById(R.id.fleet_list_main).setVisibility(View.INVISIBLE); mView.findViewById(R.id.fleet_list_combined).setVisibility(is_landscape? View.INVISIBLE : View.GONE); fleetSwitchBtn.setVisibility(View.GONE); return; } if(is_landscape) { fleetSwitchBtn.setVisibility(View.GONE); mView.findViewById(R.id.fleet_list_main).setVisibility(View.VISIBLE); mView.findViewById(R.id.fleet_list_combined).setVisibility(is_combined ? View.VISIBLE : View.INVISIBLE); } else { boolean switch_is_one = switch_status == 1; fleetSwitchBtn.setVisibility(is_combined ? View.VISIBLE : View.GONE); mView.findViewById(R.id.fleet_list_main).setVisibility((!is_combined || switch_is_one) ? View.VISIBLE : View.GONE); mView.findViewById(R.id.fleet_list_combined).setVisibility((is_combined && !switch_is_one) ? View.VISIBLE : View.GONE); } for (int i = 1; i <= 12; i++) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", i), R.id.class)).setVisibility(View.INVISIBLE); } int cn = seekcn_internal; List<String> infoList = new ArrayList<>(); String airPowerValue = ""; if (isCombined) { airPowerValue = deckInfoCalc.getAirPowerRangeString(deckportdata, 0, KcaBattle.getEscapeFlag()); } else { airPowerValue = deckInfoCalc.getAirPowerRangeString(deckportdata, idx, null); } if (airPowerValue.length() > 0) { infoList.add(airPowerValue); } double seekValue = 0; String seekStringValue = ""; if (isCombined) { seekValue = deckInfoCalc.getSeekValue(deckportdata, "0,1", cn, KcaBattle.getEscapeFlag()); } else { seekValue = deckInfoCalc.getSeekValue(deckportdata, String.valueOf(idx), cn, null); } if (cn == SEEK_PURE) { seekStringValue = KcaUtils.format(getStringWithLocale(R.string.fleetview_seekvalue_d), (int) seekValue); } else { seekStringValue = KcaUtils.format(getStringWithLocale(R.string.fleetview_seekvalue_f), seekValue); } infoList.add(seekStringValue); String speedStringValue = ""; if (isCombined) { speedStringValue = deckInfoCalc.getSpeedString(deckportdata, "0,1", KcaBattle.getEscapeFlag()); } else { speedStringValue = deckInfoCalc.getSpeedString(deckportdata, String.valueOf(idx), null); } infoList.add(speedStringValue); String tpValue = ""; if (isCombined) { tpValue = deckInfoCalc.getTPString(deckportdata, "0,1", KcaBattle.getEscapeFlag()); } else { tpValue = deckInfoCalc.getTPString(deckportdata, String.valueOf(idx), null); } infoList.add(tpValue); int sum_level = 0; if (isCombined) { for (int n = 0; n < 2; n++) { JsonArray maindata = deckInfoCalc.getDeckListInfo(deckportdata, n, DECKINFO_REQ_LIST, KC_DECKINFO_REQ_LIST); for (int i = 0; i < 6; i++) { int v = n * 6 + i + 1; if (i >= maindata.size()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)).setVisibility(View.INVISIBLE); } else { JsonObject userData = maindata.get(i).getAsJsonObject().getAsJsonObject("user"); JsonObject kcData = maindata.get(i).getAsJsonObject().getAsJsonObject("kc"); int ship_id = userData.get("id").getAsInt(); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_name", v), R.id.class))) .setText(getShipTranslation(kcData.get("name").getAsString(), false)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setText(getShipTypeAbbr(kcData.get("stype").getAsInt())); mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.transparent)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)); if (userData.has("sally_area")) { int sally_area = userData.get("sally_area").getAsInt(); if (sally_area > 0) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), getId("colorStatSallyArea".concat(String.valueOf(sally_area)), R.color.class))); mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .getBackground().setAlpha(192); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white)); } } ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_lv", v), R.id.class))) .setText(makeLvString(userData.get("lv").getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_exp", v), R.id.class))) .setText(makeExpString(userData.getAsJsonArray("exp").get(1).getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setText(makeHpString(userData.get("nowhp").getAsInt(), userData.get("maxhp").getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_cond", v), R.id.class))) .setText(userData.get("cond").getAsString()); int condition = userData.get("cond").getAsInt(); if (condition > 49) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipKira)); } else if (condition / 10 >= 3) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.transparent)); } else if (condition / 10 == 2) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipFatigue1)); } else { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipFatigue2)); } if (userData.get("nowhp").getAsInt() * 4 <= userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetWarning)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorHeavyDmgState)); } else if (userData.get("nowhp").getAsInt() * 2 <= userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorModerateDmgState)); } else if (userData.get("nowhp").getAsInt() * 4 <= userData.get("maxhp").getAsInt() * 3) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorLightDmgState)); } else if (userData.get("nowhp").getAsInt() != userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorNormalState)); } else { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFullState)); } if (KcaDocking.checkShipInDock(ship_id)) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInRepair)); } mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)).setVisibility(View.VISIBLE); sum_level += userData.get("lv").getAsInt(); } } } } else { JsonArray maindata = deckInfoCalc.getDeckListInfo(deckportdata, idx, DECKINFO_REQ_LIST, KC_DECKINFO_REQ_LIST); int max_count = Math.max(6, maindata.size()); if (max_count > 6) { mView.findViewById(R.id.fleet_list_combined).setVisibility(View.VISIBLE); } for (int i = 0; i < max_count; i++) { int v = i + 1; if (i >= maindata.size()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)).setVisibility(View.INVISIBLE); } else { JsonObject userData = maindata.get(i).getAsJsonObject().getAsJsonObject("user"); JsonObject kcData = maindata.get(i).getAsJsonObject().getAsJsonObject("kc"); int ship_id = userData.get("id").getAsInt(); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_name", v), R.id.class))) .setText(getShipTranslation(kcData.get("name").getAsString(), false)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setText(getShipTypeAbbr(kcData.get("stype").getAsInt())); mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.transparent)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)); if (userData.has("sally_area")) { int sally_area = userData.get("sally_area").getAsInt(); if (sally_area > 0) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), getId("colorStatSallyArea".concat(String.valueOf(sally_area)), R.color.class))); mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class)) .getBackground().setAlpha(192); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_stype", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white)); } } ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_lv", v), R.id.class))) .setText(makeLvString(userData.get("lv").getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_exp", v), R.id.class))) .setText(makeExpString(userData.getAsJsonArray("exp").get(1).getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setText(makeHpString(userData.get("nowhp").getAsInt(), userData.get("maxhp").getAsInt())); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_cond", v), R.id.class))) .setText(userData.get("cond").getAsString()); int condition = userData.get("cond").getAsInt(); if (condition > 49) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipKira)); } else if (condition / 10 >= 3) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.transparent)); } else if (condition / 10 == 2) { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipFatigue1)); } else { ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_condmark", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetShipFatigue2)); } if (userData.get("nowhp").getAsInt() * 4 <= userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetWarning)); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorHeavyDmgState)); } else if (userData.get("nowhp").getAsInt() * 2 <= userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorModerateDmgState)); } else if (userData.get("nowhp").getAsInt() * 4 <= userData.get("maxhp").getAsInt() * 3) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorLightDmgState)); } else if (userData.get("nowhp").getAsInt() != userData.get("maxhp").getAsInt()) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorNormalState)); } else { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(Color.TRANSPARENT); ((TextView) mView.findViewById(getId(KcaUtils.format("fleetview_item_%d_hp", v), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFullState)); } if (KcaDocking.checkShipInDock(ship_id)) { mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)) .setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInRepair)); } mView.findViewById(getId(KcaUtils.format("fleetview_item_%d", v), R.id.class)).setVisibility(View.VISIBLE); sum_level += userData.get("lv").getAsInt(); } } } isAkashiTimerActive = deckInfoCalc.checkAkashiFlagship(deckportdata).size() > 0; infoList.add("LV ".concat(String.valueOf(sum_level))); fleetCalcInfoText = joinStr(infoList, " / "); long moraleCompleteTime; if (selected == FLEET_COMBINED_ID) { moraleCompleteTime = Math.max(KcaMoraleInfo.getMoraleCompleteTime(0), KcaMoraleInfo.getMoraleCompleteTime(1)); } else { moraleCompleteTime = KcaMoraleInfo.getMoraleCompleteTime(selected); } if (selected < 4 && KcaExpedition2.isInExpedition(selected)) { fleetInfoLine.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoExpedition)); } else if (moraleCompleteTime > 0) { fleetInfoLine.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNotGoodStatus)); } else { fleetInfoLine.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNormal)); } updateFleetInfoLine(moraleCompleteTime); } public void updateFleetInfoLine() { updateFleetInfoLine(-2); } public void updateFleetInfoLine(long moraleCompleteTime) { boolean is_landscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; final String displayText; if (KcaService.isPortAccessed) { if (moraleCompleteTime < -1) { if (selected == FLEET_COMBINED_ID) { moraleCompleteTime = Math.max(KcaMoraleInfo.getMoraleCompleteTime(0), KcaMoraleInfo.getMoraleCompleteTime(1)); } else { moraleCompleteTime = KcaMoraleInfo.getMoraleCompleteTime(selected); } } if (moraleCompleteTime > 0) { int diff = Math.max(0, (int)(moraleCompleteTime - System.currentTimeMillis()) / 1000); String moraleTimeText = KcaUtils.getTimeStr(diff); displayText = moraleTimeText.concat(" | ").concat(fleetCalcInfoText); } else { displayText = fleetCalcInfoText; } } else { displayText = ""; } final String akashi_timer_text = KcaUtils.getTimeStr(KcaAkashiRepairInfo.getAkashiElapsedTimeInSecond()); mHandler.post(new Runnable() { @Override public void run() { if (isReady && displayText.length() > 0) { if (!displayText.contentEquals(fleetInfoLine.getText())) { fleetInfoLine.setText(displayText); } if (KcaAkashiRepairInfo.getAkashiTimerValue() < 0) { fleetAkashiTimerBtn.setVisibility(View.GONE); } else { if (isAkashiTimerActive) { fleetAkashiTimerBtn.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetAkashiTimerBtnActive)); } else { fleetAkashiTimerBtn.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorFleetAkashiTimerBtnDeactive)); } fleetAkashiTimerBtn.setText(akashi_timer_text); fleetAkashiTimerBtn.setVisibility(View.VISIBLE); } } else { fleetInfoLine.setText(getStringWithLocale(R.string.kca_init_content)); fleetAkashiTimerBtn.setVisibility(View.GONE); } } }); } public void setItemViewLayout(JsonObject data, String ship_id, int married) { Log.e("KCA", data.toString()); JsonObject item_fit = gunfitData.getAsJsonObject("e_idx"); JsonObject ship_fit = gunfitData.getAsJsonObject("s_idx"); JsonObject fit_data = gunfitData.getAsJsonObject("f_idx"); JsonArray slot = data.getAsJsonArray("api_slot"); JsonArray onslot = null; JsonArray maxslot = null; if (data.has("api_onslot")) { onslot = data.getAsJsonArray("api_onslot"); maxslot = data.getAsJsonArray("api_maxslot"); } int slot_count = 0; int onslot_count = 0; int slot_ex = 0; if (data.has("api_slot_ex")) { slot_ex = data.get("api_slot_ex").getAsInt(); } for (int i = 0; i < slot.size(); i++) { int item_id = slot.get(i).getAsInt(); if (item_id == -1) { itemView.findViewById(getId("item".concat(String.valueOf(i + 1)), R.id.class)).setVisibility(GONE); itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class)).setVisibility(GONE); } else { slot_count += 1; JsonObject kcItemData; int lv = 0; int alv = -1; if (onslot != null) { Log.e("KCA", "item_id: " + String.valueOf(item_id)); kcItemData = getUserItemStatusById(item_id, "level,alv", "id,type,name"); if (kcItemData == null) continue; Log.e("KCA", kcItemData.toString()); lv = kcItemData.get("level").getAsInt(); if (kcItemData.has("alv")) { alv = kcItemData.get("alv").getAsInt(); } if (lv > 0) { ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_level", i + 1), R.id.class))) .setText(getStringWithLocale(R.string.lv_star).concat(String.valueOf(lv))); itemView.findViewById(getId(KcaUtils.format("item%d_level", i + 1), R.id.class)).setVisibility(View.VISIBLE); } else { itemView.findViewById(getId(KcaUtils.format("item%d_level", i + 1), R.id.class)).setVisibility(GONE); } if (alv > 0) { ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_alv", i + 1), R.id.class))) .setText(getStringWithLocale(getId(KcaUtils.format("alv_%d", alv), R.string.class))); int alvColorId = (alv <= 3) ? 1 : 2; ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_alv", i + 1), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), getId(KcaUtils.format("itemalv%d", alvColorId), R.color.class))); itemView.findViewById(getId(KcaUtils.format("item%d_alv", i + 1), R.id.class)).setVisibility(View.VISIBLE); } else { itemView.findViewById(getId(KcaUtils.format("item%d_alv", i + 1), R.id.class)).setVisibility(GONE); } int itemtype = kcItemData.getAsJsonArray("type").get(2).getAsInt(); if (isItemAircraft(itemtype)) { onslot_count += 1; Log.e("KCA", "ID: " + String.valueOf(itemtype)); int nowSlotValue = onslot.get(i).getAsInt(); int maxSlotValue = maxslot.get(i).getAsInt(); ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class))) .setText(KcaUtils.format("[%02d/%02d]", nowSlotValue, maxSlotValue)); itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class)).setVisibility(View.VISIBLE); } else { itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class)).setVisibility(View.INVISIBLE); } } else { kcItemData = getKcItemStatusById(item_id, "id,type,name"); itemView.findViewById(getId(KcaUtils.format("item%d_level", i + 1), R.id.class)).setVisibility(GONE); itemView.findViewById(getId(KcaUtils.format("item%d_alv", i + 1), R.id.class)).setVisibility(GONE); itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class)).setVisibility(GONE); } String kcItemId = kcItemData.get("id").getAsString(); String kcItemName = getItemTranslation(kcItemData.get("name").getAsString()); int fit_state = -1; if (item_fit.has(kcItemId) && ship_fit.has(ship_id)) { int ship_idx = ship_fit.get(ship_id).getAsInt(); int item_idx = item_fit.get(kcItemId).getAsInt(); String key = KcaUtils.format("%d_%d", item_idx, ship_idx); if (fit_data.has(key)) { fit_state = fit_data.getAsJsonArray(key).get(married).getAsInt() + 2; } } int type = kcItemData.getAsJsonArray("type").get(3).getAsInt(); int typeres = 0; try { typeres = getId(KcaUtils.format("item_%d", type), R.mipmap.class); } catch (Exception e) { typeres = R.mipmap.item_0; } ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_name", i + 1), R.id.class))).setText(kcItemName); if (fit_state == -1) { ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_name", i + 1), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white)); } else { ((TextView) itemView.findViewById(getId(KcaUtils.format("item%d_name", i + 1), R.id.class))) .setTextColor(ContextCompat.getColor(getApplicationContext(), KcaUtils.getId(KcaUtils.format("colorGunfit%d", fit_state), R.color.class))); } ((ImageView) itemView.findViewById(getId(KcaUtils.format("item%d_icon", i + 1), R.id.class))).setImageResource(typeres); itemView.findViewById(getId("item".concat(String.valueOf(i + 1)), R.id.class)).setVisibility(View.VISIBLE); } } if (onslot_count == 0) { for (int i = 0; i < slot.size(); i++) { itemView.findViewById(getId(KcaUtils.format("item%d_slot", i + 1), R.id.class)).setVisibility(GONE); } } if (slot_ex > 0) { // EX_SLOT slot_count += 1; JsonObject kcItemData = getUserItemStatusById(slot_ex, "level", "type,name"); if (kcItemData != null) { String kcItemName = getItemTranslation(kcItemData.get("name").getAsString()); int type = kcItemData.getAsJsonArray("type").get(3).getAsInt(); int lv = kcItemData.get("level").getAsInt(); int typeres = 0; try { typeres = getId(KcaUtils.format("item_%d", type), R.mipmap.class); } catch (Exception e) { typeres = R.mipmap.item_0; } ((TextView) itemView.findViewById(R.id.item_ex_name)).setText(kcItemName); ((ImageView) itemView.findViewById(R.id.item_ex_icon)).setImageResource(typeres); if (lv > 0) { ((TextView) itemView.findViewById(R.id.item_ex_level)) .setText(getStringWithLocale(R.string.lv_star).concat(String.valueOf(lv))); itemView.findViewById(R.id.item_ex_level).setVisibility(View.VISIBLE); } else { itemView.findViewById(R.id.item_ex_level).setVisibility(GONE); } itemView.findViewById(R.id.view_slot_ex).setVisibility(View.VISIBLE); } else { itemView.findViewById(R.id.view_slot_ex).setVisibility(View.INVISIBLE); } } else { itemView.findViewById(R.id.view_slot_ex).setVisibility(GONE); } if (slot_count == 0) { ((TextView) itemView.findViewById(R.id.item1_name)).setText(getStringWithLocale(R.string.slot_empty)); ((ImageView) itemView.findViewById(R.id.item1_icon)).setImageResource(R.mipmap.item_0); itemView.findViewById(R.id.item1_level).setVisibility(GONE); itemView.findViewById(R.id.item1_alv).setVisibility(GONE); itemView.findViewById(R.id.item1_slot).setVisibility(GONE); itemView.findViewById(R.id.item1).setVisibility(View.VISIBLE); } itemView.setVisibility(View.VISIBLE); } private int getSeekCn() { return Integer.valueOf(getStringPreferences(getApplicationContext(), PREF_KCA_SEEK_CN)); } private String getSeekType() { String seekType = ""; switch (seekcn_internal) { case 1: seekType = getStringWithLocale(R.string.seek_type_1); break; case 2: seekType = getStringWithLocale(R.string.seek_type_2); break; case 3: seekType = getStringWithLocale(R.string.seek_type_3); break; case 4: seekType = getStringWithLocale(R.string.seek_type_4); break; default: seekType = getStringWithLocale(R.string.seek_type_0); break; } return seekType; } private void changeInternalSeekCn() { seekcn_internal += 1; seekcn_internal %= 5; } private void updateSelectedView(int idx) { for (int i = 0; i < 5; i++) { int view_id = getId("fleet_".concat(String.valueOf(i + 1)), R.id.class); if (idx == i) { mView.findViewById(view_id).setBackgroundColor( ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)); } else { if (i < 4 && KcaExpedition2.isInExpedition(i)) { mView.findViewById(view_id).setBackgroundColor( ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoExpeditionBtn)); } else if (i < 4 && KcaMoraleInfo.getMoraleCompleteTime(i) > 0) { mView.findViewById(view_id).setBackgroundColor( ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNotGoodStatusBtn)); } else if (i == FLEET_COMBINED_ID && (KcaMoraleInfo.getMoraleCompleteTime(0) > 0 || KcaMoraleInfo.getMoraleCompleteTime(1) > 0)) { // Combined Morale mView.findViewById(view_id).setBackgroundColor( ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoNotGoodStatusBtn)); } else { mView.findViewById(view_id).setBackgroundColor( ContextCompat.getColor(getApplicationContext(), R.color.colorFleetInfoBtn)); } } } } public static JsonObject loadGunfitData(AssetManager am) { try { AssetManager.AssetInputStream ais = (AssetManager.AssetInputStream) am.open("gunfit.json"); byte[] bytes = ByteStreams.toByteArray(ais); return new JsonParser().parse(new String(bytes)).getAsJsonObject(); } catch (IOException e) { return new JsonObject(); } } private void sendReport(Exception e, int type) { error_flag = true; String data_str; dbHelper = new KcaDBHelper(getApplicationContext(), null, KCANOTIFY_DB_VERSION); JsonArray data = dbHelper.getJsonArrayValue(DB_KEY_DECKPORT); if (data == null) { data_str = "data is null"; } else { data_str = data.toString(); } if (mView != null) mView.setVisibility(GONE); KcaDBHelper helper = new KcaDBHelper(getApplicationContext(), null, KCANOTIFY_DB_VERSION); helper.recordErrorLog(ERROR_TYPE_FLEETVIEW, "fleetview", "FV_".concat(String.valueOf(type)), data_str, getStringFromException(e)); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); contextWithLocale = getContextWithLocale(getApplicationContext(), getBaseContext()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getApplicationContext())) { // Can not draw overlays: pass stopSelf(); } else { mInflater = LayoutInflater.from(contextWithLocale); int visibllity = mView.getVisibility(); if (mManager != null) { if (mView.getParent() != null) mManager.removeViewImmediate(mView); initView(); mManager.addView(mView, mParams); int setViewResult = setView(); if (setViewResult == 0) { if (mView.getParent() != null) { mView.invalidate(); mManager.updateViewLayout(mView, mParams); } } mView.setVisibility(visibllity); } } } }