├── .classpath
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_requiest.md
└── pull_request_template.md
├── .gitignore
├── .project
├── .settings
├── edu.umd.cs.findbugs.core.prefs
├── org.eclipse.jdt.core.prefs
└── org.eclipse.m2e.core.prefs
├── LICENSE
├── README.md
├── assembly.xml
├── dist-includes
├── README.url
├── battlelog
│ └── .gitkeep
├── config
│ └── .gitkeep
├── launch.bat
├── logs
│ └── .gitkeep
├── plugins
│ └── .gitkeep
├── resources
│ └── .gitkeep
└── sounds
│ ├── alert
│ └── readme.txt
│ ├── mission
│ └── readme.txt
│ └── ndock
│ └── readme.txt
├── faq.md
├── how-to-build.md
├── how-to-develop.md
├── how-to-preference.md
├── images
├── battlelog1.png
├── battlelog2.png
├── chrome_1.png
├── chrome_2.png
├── chrome_3.png
├── chrome_4.png
├── firefox_1.png
├── firefox_2.png
├── firefox_3.png
├── items1.png
├── items2.png
└── overview.png
├── pom-java11.xml
├── pom.xml
└── src
├── main
├── java
│ ├── logbook
│ │ ├── Messages.java
│ │ ├── api
│ │ │ ├── API.java
│ │ │ ├── APIListenerSpi.java
│ │ │ ├── ApiGetMemberBasic.java
│ │ │ ├── ApiGetMemberDeck.java
│ │ │ ├── ApiGetMemberKdock.java
│ │ │ ├── ApiGetMemberMapinfo.java
│ │ │ ├── ApiGetMemberMaterial.java
│ │ │ ├── ApiGetMemberNdock.java
│ │ │ ├── ApiGetMemberPresetDeck.java
│ │ │ ├── ApiGetMemberQuestlist.java
│ │ │ ├── ApiGetMemberRequireInfo.java
│ │ │ ├── ApiGetMemberShip2.java
│ │ │ ├── ApiGetMemberShip3.java
│ │ │ ├── ApiGetMemberShipDeck.java
│ │ │ ├── ApiGetMemberSlotItem.java
│ │ │ ├── ApiPortPort.java
│ │ │ ├── ApiReqAirCorpsSetAction.java
│ │ │ ├── ApiReqAirCorpsSetPlane.java
│ │ │ ├── ApiReqAirCorpsSupply.java
│ │ │ ├── ApiReqBattleMidnightBattle.java
│ │ │ ├── ApiReqBattleMidnightSpMidnight.java
│ │ │ ├── ApiReqCombinedBattleAirbattle.java
│ │ │ ├── ApiReqCombinedBattleBattle.java
│ │ │ ├── ApiReqCombinedBattleBattleWater.java
│ │ │ ├── ApiReqCombinedBattleBattleresult.java
│ │ │ ├── ApiReqCombinedBattleEachBattle.java
│ │ │ ├── ApiReqCombinedBattleEcBattle.java
│ │ │ ├── ApiReqCombinedBattleEcMidnightBattle.java
│ │ │ ├── ApiReqCombinedBattleEcNightToDay.java
│ │ │ ├── ApiReqCombinedBattleGobackPort.java
│ │ │ ├── ApiReqCombinedBattleLdAirbattle.java
│ │ │ ├── ApiReqCombinedBattleMidnightBattle.java
│ │ │ ├── ApiReqCombinedBattleSpMidnight.java
│ │ │ ├── ApiReqHenseiChange.java
│ │ │ ├── ApiReqHenseiCombined.java
│ │ │ ├── ApiReqHenseiPresetSelect.java
│ │ │ ├── ApiReqHokyuCharge.java
│ │ │ ├── ApiReqKaisouMarriage.java
│ │ │ ├── ApiReqKaisouPowerup.java
│ │ │ ├── ApiReqKaisouSlotDeprive.java
│ │ │ ├── ApiReqKaisouSlotExchangeIndex.java
│ │ │ ├── ApiReqKousyouCreateitem.java
│ │ │ ├── ApiReqKousyouCreateship.java
│ │ │ ├── ApiReqKousyouCreateshipSpeedchange.java
│ │ │ ├── ApiReqKousyouDestroyitem2.java
│ │ │ ├── ApiReqKousyouDestroyship.java
│ │ │ ├── ApiReqKousyouGetship.java
│ │ │ ├── ApiReqKousyouRemodelSlot.java
│ │ │ ├── ApiReqKousyouRemodelSlotlist.java
│ │ │ ├── ApiReqMapNext.java
│ │ │ ├── ApiReqMapStart.java
│ │ │ ├── ApiReqMemberItemuse.java
│ │ │ ├── ApiReqMissionResult.java
│ │ │ ├── ApiReqMissionStart.java
│ │ │ ├── ApiReqNyukyoSpeedchange.java
│ │ │ ├── ApiReqNyukyoStart.java
│ │ │ ├── ApiReqPracticeBattle.java
│ │ │ ├── ApiReqPracticeBattleresult.java
│ │ │ ├── ApiReqPracticeMidnightBattle.java
│ │ │ ├── ApiReqQuestClearitemget.java
│ │ │ ├── ApiReqQuestStop.java
│ │ │ ├── ApiReqSortieAirbattle.java
│ │ │ ├── ApiReqSortieBattle.java
│ │ │ ├── ApiReqSortieBattleresult.java
│ │ │ ├── ApiReqSortieLdAirbattle.java
│ │ │ ├── ApiReqSortieLdShooting.java
│ │ │ └── ApiStart2.java
│ │ ├── bean
│ │ │ ├── AppBouyomiConfig.java
│ │ │ ├── AppCondition.java
│ │ │ ├── AppConfig.java
│ │ │ ├── AppDeck.java
│ │ │ ├── AppDeckCollection.java
│ │ │ ├── AppItemTableConfig.java
│ │ │ ├── AppQuest.java
│ │ │ ├── AppQuestCollection.java
│ │ │ ├── AppQuestCondition.java
│ │ │ ├── AppQuestDuration.java
│ │ │ ├── AppSeaAreaExp.java
│ │ │ ├── AppSeaAreaExpCollection.java
│ │ │ ├── AppShipTableConfig.java
│ │ │ ├── Basic.java
│ │ │ ├── BattleLog.java
│ │ │ ├── BattleLogScriptCollection.java
│ │ │ ├── BattleMidnightBattle.java
│ │ │ ├── BattleMidnightSpMidnight.java
│ │ │ ├── BattleResult.java
│ │ │ ├── BattleTypes.java
│ │ │ ├── Chara.java
│ │ │ ├── CombinedBattleAirbattle.java
│ │ │ ├── CombinedBattleBattle.java
│ │ │ ├── CombinedBattleBattleWater.java
│ │ │ ├── CombinedBattleEachBattle.java
│ │ │ ├── CombinedBattleEcBattle.java
│ │ │ ├── CombinedBattleEcMidnightBattle.java
│ │ │ ├── CombinedBattleEcNightToDay.java
│ │ │ ├── CombinedBattleLdAirbattle.java
│ │ │ ├── CombinedBattleMidnightBattle.java
│ │ │ ├── CombinedBattleSpMidnight.java
│ │ │ ├── Createitem.java
│ │ │ ├── Createship.java
│ │ │ ├── CreateshipCollection.java
│ │ │ ├── DeckPort.java
│ │ │ ├── DeckPortCollection.java
│ │ │ ├── Enemy.java
│ │ │ ├── Friend.java
│ │ │ ├── Kdock.java
│ │ │ ├── MapStartNext.java
│ │ │ ├── MapTypes.java
│ │ │ ├── Maparea.java
│ │ │ ├── MapareaCollection.java
│ │ │ ├── Mapinfo.java
│ │ │ ├── MapinfoMst.java
│ │ │ ├── MapinfoMstCollection.java
│ │ │ ├── Material.java
│ │ │ ├── Mission.java
│ │ │ ├── MissionCollection.java
│ │ │ ├── MissionCondition.java
│ │ │ ├── MissionResult.java
│ │ │ ├── Ndock.java
│ │ │ ├── NdockCollection.java
│ │ │ ├── ParameterFilterConfig.java
│ │ │ ├── QuestList.java
│ │ │ ├── Ship.java
│ │ │ ├── ShipCollection.java
│ │ │ ├── ShipLabelCollection.java
│ │ │ ├── ShipMst.java
│ │ │ ├── ShipMstCollection.java
│ │ │ ├── Shipgraph.java
│ │ │ ├── ShipgraphCollection.java
│ │ │ ├── SlotItem.java
│ │ │ ├── SlotItemCollection.java
│ │ │ ├── SlotitemEquiptype.java
│ │ │ ├── SlotitemEquiptypeCollection.java
│ │ │ ├── SlotitemMst.java
│ │ │ ├── SlotitemMstCollection.java
│ │ │ ├── SortieAirbattle.java
│ │ │ ├── SortieBattle.java
│ │ │ ├── SortieLdAirbattle.java
│ │ │ ├── SortieLdShooting.java
│ │ │ ├── Spritesmith.java
│ │ │ ├── Stype.java
│ │ │ ├── StypeCollection.java
│ │ │ ├── TestAllPredicate.java
│ │ │ ├── Useitem.java
│ │ │ ├── UseitemCollection.java
│ │ │ └── WindowLocation.java
│ │ ├── internal
│ │ │ ├── APIListener.java
│ │ │ ├── AirBases.java
│ │ │ ├── Audios.java
│ │ │ ├── BattleLogs.java
│ │ │ ├── BiImage.java
│ │ │ ├── BouyomiChan.java
│ │ │ ├── BouyomiChanUtils.java
│ │ │ ├── CheckUpdate.java
│ │ │ ├── CheckUpdateStartUp.java
│ │ │ ├── ComparableFilter.java
│ │ │ ├── Config.java
│ │ │ ├── ExpTable.java
│ │ │ ├── ImageListener.java
│ │ │ ├── Items.java
│ │ │ ├── JsonHelper.java
│ │ │ ├── Launcher.java
│ │ │ ├── LoggerHolder.java
│ │ │ ├── Logs.java
│ │ │ ├── Mapping.java
│ │ │ ├── MissionLogs.java
│ │ │ ├── Missions.java
│ │ │ ├── Operator.java
│ │ │ ├── PhaseState.java
│ │ │ ├── QuestCollect.java
│ │ │ ├── Rank.java
│ │ │ ├── ReferenceCache.java
│ │ │ ├── SeaArea.java
│ │ │ ├── ShipFilter.java
│ │ │ ├── ShipImage.java
│ │ │ ├── ShipImageCacheStrategy.java
│ │ │ ├── ShipType.java
│ │ │ ├── ShipTypeGroup.java
│ │ │ ├── Ships.java
│ │ │ ├── SlotItemType.java
│ │ │ ├── ThreadManager.java
│ │ │ ├── Time.java
│ │ │ ├── ToStringConverter.java
│ │ │ ├── Tuple.java
│ │ │ ├── Version.java
│ │ │ ├── gui
│ │ │ │ ├── AirBaseController.java
│ │ │ │ ├── AirBaseItem.java
│ │ │ │ ├── AkashiTimerPane.java
│ │ │ │ ├── BattleDetail.java
│ │ │ │ ├── BattleDetailPhase.java
│ │ │ │ ├── BattleDetailPhaseShip.java
│ │ │ │ ├── BattleDetailPhaseStage1.java
│ │ │ │ ├── BattleDetailPhaseStage2.java
│ │ │ │ ├── BattleLogCollect.java
│ │ │ │ ├── BattleLogController.java
│ │ │ │ ├── BattleLogDetail.java
│ │ │ │ ├── BattleLogDetailAggregate.java
│ │ │ │ ├── BattleLogScriptController.java
│ │ │ │ ├── CalcExpController.java
│ │ │ │ ├── CalcExpSeaAreaEditorController.java
│ │ │ │ ├── CaptureController.java
│ │ │ │ ├── CaptureSaveController.java
│ │ │ │ ├── ColumnVisibleController.java
│ │ │ │ ├── ConfigController.java
│ │ │ │ ├── CreateItemController.java
│ │ │ │ ├── CreatePacFileController.java
│ │ │ │ ├── Deck.java
│ │ │ │ ├── DeckBuilder.java
│ │ │ │ ├── DeckFleetPane.java
│ │ │ │ ├── DeckShipPane.java
│ │ │ │ ├── DetailItem.java
│ │ │ │ ├── DetailPlugin.java
│ │ │ │ ├── ExpChartController.java
│ │ │ │ ├── FleetTabPane.java
│ │ │ │ ├── FleetTabShipPane.java
│ │ │ │ ├── FleetTabShipPopup.java
│ │ │ │ ├── InternalFXMLLoader.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── ItemAirBaseController.java
│ │ │ │ ├── ItemController.java
│ │ │ │ ├── ItemFilter.java
│ │ │ │ ├── ItemItemController.java
│ │ │ │ ├── Main.java
│ │ │ │ ├── MainController.java
│ │ │ │ ├── MainMenuController.java
│ │ │ │ ├── MissionAggregate.java
│ │ │ │ ├── MissionCheck.java
│ │ │ │ ├── MissionLogCollect.java
│ │ │ │ ├── MissionLogController.java
│ │ │ │ ├── MissionLogDetail.java
│ │ │ │ ├── MissionPane.java
│ │ │ │ ├── NdockPane.java
│ │ │ │ ├── ParameterFilterPane.java
│ │ │ │ ├── PopOver.java
│ │ │ │ ├── PopOverPane.java
│ │ │ │ ├── PopupSelectbox.java
│ │ │ │ ├── PopupSelectboxContainer.java
│ │ │ │ ├── PropertyDialog.java
│ │ │ │ ├── QuestPane.java
│ │ │ │ ├── QuestProgress.java
│ │ │ │ ├── RequireNdock.java
│ │ │ │ ├── RequireNdockController.java
│ │ │ │ ├── ResourceChartController.java
│ │ │ │ ├── ResourceTable.java
│ │ │ │ ├── ScreenCapture.java
│ │ │ │ ├── ShipController.java
│ │ │ │ ├── ShipItem.java
│ │ │ │ ├── ShipTablePane.java
│ │ │ │ ├── ShortageShipItem.java
│ │ │ │ ├── StatisticsPane.java
│ │ │ │ ├── SuggestSupport.java
│ │ │ │ ├── TableTool.java
│ │ │ │ ├── TextEditorPane.java
│ │ │ │ ├── Tools.java
│ │ │ │ ├── TreeTableTool.java
│ │ │ │ ├── VersionController.java
│ │ │ │ └── WindowController.java
│ │ │ ├── log
│ │ │ │ ├── BattleResultLogFormat.java
│ │ │ │ ├── CreateitemLogFormat.java
│ │ │ │ ├── CreateshipLogFormat.java
│ │ │ │ ├── LogFormat.java
│ │ │ │ ├── LogFormatBase.java
│ │ │ │ ├── LogWriter.java
│ │ │ │ ├── MaterialLogFormat.java
│ │ │ │ └── MissionResultLogFormat.java
│ │ │ └── proxy
│ │ │ │ ├── ByteArrayInputStream2.java
│ │ │ │ ├── CaptureHolder.java
│ │ │ │ ├── Filter.java
│ │ │ │ ├── ProxyHolder.java
│ │ │ │ ├── ProxyServerImpl.java
│ │ │ │ ├── ProxyServlet.java
│ │ │ │ ├── RequestContentListener.java
│ │ │ │ └── ReverseProxyServlet.java
│ │ ├── plugin
│ │ │ ├── JarBasedPlugin.java
│ │ │ ├── PluginContainer.java
│ │ │ ├── PluginServices.java
│ │ │ ├── gui
│ │ │ │ ├── FleetTabRemark.java
│ │ │ │ ├── MainCalcMenu.java
│ │ │ │ ├── MainCommandMenu.java
│ │ │ │ ├── MainExtMenu.java
│ │ │ │ ├── Plugin.java
│ │ │ │ └── Updateable.java
│ │ │ └── lifecycle
│ │ │ │ └── StartUp.java
│ │ └── proxy
│ │ │ ├── ContentListenerSpi.java
│ │ │ ├── ProxyServerSpi.java
│ │ │ ├── RequestMetaData.java
│ │ │ └── ResponseMetaData.java
│ └── org
│ │ └── apache
│ │ └── logging
│ │ └── log4j
│ │ ├── LogManager.java
│ │ └── Logger.java
└── resources
│ ├── LICENSE
│ ├── META-INF
│ └── services
│ │ ├── logbook.api.APIListenerSpi
│ │ ├── logbook.plugin.gui.FleetTabRemark
│ │ ├── logbook.plugin.lifecycle.StartUp
│ │ ├── logbook.proxy.ContentListenerSpi
│ │ └── logbook.proxy.ProxyServerSpi
│ ├── logback.xml
│ └── logbook
│ ├── bouyomi
│ └── settings.json
│ ├── capture_options
│ ├── Windows_gdigrab_h264.json
│ ├── Windows_gdigrab_h265.json
│ ├── Windows_gdigrab_huffyuv.json
│ ├── Windows_gdigrab_mpeg4.json
│ └── list.json
│ ├── gui
│ ├── airbase.css
│ ├── airbase.fxml
│ ├── akashi_timer.fxml
│ ├── alv1.png
│ ├── alv2.png
│ ├── alv3.png
│ ├── alv4.png
│ ├── alv5.png
│ ├── alv6.png
│ ├── alv7.png
│ ├── application.css
│ ├── application_large1.css
│ ├── application_large2.css
│ ├── battle_detail.css
│ ├── battle_detail.fxml
│ ├── battle_detail_phase.fxml
│ ├── battle_detail_phase_ship.fxml
│ ├── battle_detail_phase_stage1.fxml
│ ├── battle_detail_phase_stage2.fxml
│ ├── battlelog.css
│ ├── battlelog.fxml
│ ├── battlelog_dialog.fxml
│ ├── battlelog_script.fxml
│ ├── battlelog_script_sample.js
│ ├── calc_exp.css
│ ├── calc_exp.fxml
│ ├── calc_exp_area.fxml
│ ├── capture.css
│ ├── capture.fxml
│ ├── capturesave.fxml
│ ├── column_visible.fxml
│ ├── config.css
│ ├── config.fxml
│ ├── create_pac_file.fxml
│ ├── createitemlog.fxml
│ ├── deck.css
│ ├── deck.fxml
│ ├── deck_fleet.fxml
│ ├── deck_ship.fxml
│ ├── exp_chart.fxml
│ ├── fleet_ship.fxml
│ ├── fleet_tab.css
│ ├── fleet_tab.fxml
│ ├── fleet_tab_popup.fxml
│ ├── fleet_tab_popup_item.css
│ ├── fleet_tab_popup_item.fxml
│ ├── fleet_tab_popup_rate.css
│ ├── fleet_tab_popup_rate.fxml
│ ├── icon.svg
│ ├── icon_128x128.png
│ ├── icon_16x16.png
│ ├── icon_256x256.png
│ ├── icon_32x32.png
│ ├── icon_48x48.png
│ ├── icon_64x64.png
│ ├── item.css
│ ├── item.fxml
│ ├── item_airbase.fxml
│ ├── item_item.fxml
│ ├── main.css
│ ├── main.fxml
│ ├── main_menu.fxml
│ ├── main_wide.fxml
│ ├── mission.fxml
│ ├── missioncheck.fxml
│ ├── missionlog.fxml
│ ├── ndock.fxml
│ ├── param_filter_pane.fxml
│ ├── pop-over.css
│ ├── pop-over.fxml
│ ├── popup-selectbox.css
│ ├── popup-selectbox.fxml
│ ├── popup.css
│ ├── quest.fxml
│ ├── quest_progress.css
│ ├── quest_progress.fxml
│ ├── require_ndock.fxml
│ ├── resource_chart.css
│ ├── resource_chart.fxml
│ ├── ship.css
│ ├── ship.fxml
│ ├── ship_table.fxml
│ ├── statistics.css
│ ├── statistics.fxml
│ ├── text_editor_pane.fxml
│ ├── text_editor_pane.html
│ ├── version.css
│ └── version.fxml
│ ├── map
│ └── mapping.json
│ ├── messages.properties
│ ├── mission
│ ├── 1
│ │ ├── 01.json
│ │ ├── 02.json
│ │ ├── 03.json
│ │ ├── 04.json
│ │ ├── 05.json
│ │ ├── 06.json
│ │ ├── 07.json
│ │ ├── 08.json
│ │ ├── A1.json
│ │ ├── A2.json
│ │ ├── A3.json
│ │ ├── A4.json
│ │ ├── A5.json
│ │ └── A6.json
│ ├── 2
│ │ ├── 09.json
│ │ ├── 10.json
│ │ ├── 11.json
│ │ ├── 12.json
│ │ ├── 13.json
│ │ ├── 14.json
│ │ ├── 15.json
│ │ ├── 16.json
│ │ ├── B1.json
│ │ ├── B2.json
│ │ ├── B3.json
│ │ ├── B4.json
│ │ └── B5.json
│ ├── 3
│ │ ├── 17.json
│ │ ├── 18.json
│ │ ├── 19.json
│ │ ├── 20.json
│ │ ├── 21.json
│ │ ├── 22.json
│ │ ├── 23.json
│ │ └── 24.json
│ ├── 4
│ │ ├── 25.json
│ │ ├── 26.json
│ │ ├── 27.json
│ │ ├── 28.json
│ │ ├── 29.json
│ │ ├── 30.json
│ │ ├── 31.json
│ │ ├── 32.json
│ │ ├── D1.json
│ │ └── D2.json
│ ├── 5
│ │ ├── 33.json
│ │ ├── 34.json
│ │ ├── 35.json
│ │ ├── 36.json
│ │ ├── 37.json
│ │ ├── 38.json
│ │ ├── 39.json
│ │ ├── 40.json
│ │ └── E1.json
│ └── 7
│ │ ├── 41.json
│ │ ├── 42.json
│ │ ├── 43.json
│ │ ├── 44.json
│ │ └── 45.json
│ ├── proxy.pac
│ ├── quest
│ ├── 201.json
│ ├── 210.json
│ ├── 211.json
│ ├── 212.json
│ ├── 213.json
│ ├── 214.json
│ ├── 216.json
│ ├── 218.json
│ ├── 220.json
│ ├── 221.json
│ ├── 226.json
│ ├── 228.json
│ ├── 229.json
│ ├── 230.json
│ ├── 241.json
│ ├── 242.json
│ ├── 243.json
│ ├── 249.json
│ ├── 256.json
│ ├── 257.json
│ ├── 259.json
│ ├── 261.json
│ ├── 264.json
│ ├── 265.json
│ ├── 266.json
│ ├── 280.json
│ ├── 284.json
│ ├── 402.json
│ ├── 403.json
│ ├── 404.json
│ ├── 410.json
│ ├── 411.json
│ ├── 424.json
│ ├── 426.json
│ ├── 428.json
│ ├── 434.json
│ ├── 436.json
│ ├── 437.json
│ ├── 438.json
│ ├── 822.json
│ ├── 845.json
│ ├── 854.json
│ ├── 862.json
│ ├── 872.json
│ ├── 873.json
│ ├── 875.json
│ ├── 888.json
│ ├── 893.json
│ ├── 894.json
│ ├── 903.json
│ └── list.md
│ ├── supplemental
│ └── ships.json
│ └── update
│ └── update.js
└── test
├── java
└── logbook
│ ├── bean
│ ├── AppQuestDurationTest.java
│ ├── BattleMidnightBattleTest.java
│ └── SortieBattleTest.java
│ ├── internal
│ └── VersionTest.java
│ ├── map
│ └── MappingGenerator.java
│ └── plugin
│ └── JarBasedPluginTest.java
└── resources
└── logbook
├── bean
├── get_member_questlist.json
├── req_battle_midnight_battle.json
└── req_sortie_battle.json
└── plugin
├── plugin-test-case1.jar.bin
├── plugin-test-case2.jar.bin
├── plugin-test-case3.jar.bin
└── plugin-test-case4.jar.bin
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 問題報告(バグ報告)
3 | about: 動作に問題がある場合はこちらから
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 問題概要
11 | 問題の内容を記述してください。
12 | 例:... を装備していると ... ビューが開かない。
13 |
14 | ### 再現方法
15 | 問題の再現手順を記述してください。バグを修正するには問題再現がもっとも重要なので、可能な限り確実に再現できる手順の記載をお願いします。特に毎回起きるのか、ある特定の条件を満たす必要があるのか、などは問題解析に非常に重要な情報になります。
16 |
17 | (例)
18 | 1. '...' を開く
19 | 2. '....' をクリックする
20 | 3. '.....' というエラーが出る
21 |
22 | ### 本来予想される動作
23 | 本来どのように動作すべきかを記述してください。
24 | 例:装備にかかわらず ... ビューが開く
25 |
26 | ### スクリーンショット
27 | もし問題を表現するのに画像が適切であれば添付してください。コピペできます。
28 |
29 | ### 動作環境
30 | - OS:
31 | - Java:
32 | - Version:
33 |
34 | ### その他
35 | もしあればなんでも。
36 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_requiest.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 機能拡張
3 | about: 機能拡張のリクエストはこちらから
4 | title: ''
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 機能拡張で解決したい課題
11 | その機能拡張で何を解決したいのか、機能拡張を希望する理由を記述してください。
12 | 例:入渠の表示で空きスロットが表示されていないので不便です。
13 |
14 | ### 実装してほしい機能について
15 | どのような機能を実装すれば上記の課題が解決すると思うか記述してください。
16 | 例:入渠ドックの空きスロットも表示してほしいです。
17 |
18 | ### その他
19 | もし他に何かあればなんでも。
20 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | #### 問題解析
2 | もしあれば問題解析の詳細を記述する。
3 |
4 | #### 変更内容
5 | 変更内容を記述する。
6 |
7 | #### 関連するIssue
8 | Fixes #nnn (if any)
9 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Mobile Tools for Java (J2ME)
4 | .mtj.tmp/
5 |
6 | # Package Files #
7 | *.jar
8 | *.war
9 | *.ear
10 |
11 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
12 | hs_err_pid*
13 |
14 | # working directory for the logbook
15 | /target/
16 | /lib/
17 | /dest/
18 | /battlelog/
19 | /config/
20 | /logs/
21 | /plugins/
22 | /resources/
23 | /sounds/
24 | /launch.bat
25 | /README.url
26 | /*.csv
27 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | logbook-kai
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 sanaehirotaka
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/assembly.xml:
--------------------------------------------------------------------------------
1 |
2 | dist
3 |
4 |
5 | zip
6 |
7 |
8 | false
9 |
10 |
11 |
12 | target/${project.name}.jar
13 |
14 |
15 |
16 |
17 |
18 | dist-includes
19 | /
20 |
21 | */.gitkeep
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/dist-includes/README.url:
--------------------------------------------------------------------------------
1 | [InternetShortcut]
2 | URL=https://github.com/sanaehirotaka/logbook-kai/blob/master/README.md
3 | IconFile=https://assets-cdn.github.com/favicon.ico
4 | IconIndex=1
5 |
--------------------------------------------------------------------------------
/dist-includes/battlelog/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/dist-includes/battlelog/.gitkeep
--------------------------------------------------------------------------------
/dist-includes/config/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/dist-includes/config/.gitkeep
--------------------------------------------------------------------------------
/dist-includes/launch.bat:
--------------------------------------------------------------------------------
1 | SET JVM_OPT=-XX:MaxMetaspaceSize=256M
2 | START javaw %JVM_OPT% -jar logbook-kai.jar
3 |
--------------------------------------------------------------------------------
/dist-includes/logs/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/dist-includes/logs/.gitkeep
--------------------------------------------------------------------------------
/dist-includes/plugins/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/dist-includes/plugins/.gitkeep
--------------------------------------------------------------------------------
/dist-includes/resources/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/dist-includes/resources/.gitkeep
--------------------------------------------------------------------------------
/dist-includes/sounds/alert/readme.txt:
--------------------------------------------------------------------------------
1 | このフォルダに出撃中に大破したときのサウンドファイルを置きます。
2 | サブフォルダ内のファイルも読み込みます。
3 |
--------------------------------------------------------------------------------
/dist-includes/sounds/mission/readme.txt:
--------------------------------------------------------------------------------
1 | このフォルダ遠征から帰投したときのサウンドファイルを置きます。
2 | サブフォルダ内のファイルも読み込みます。
3 |
--------------------------------------------------------------------------------
/dist-includes/sounds/ndock/readme.txt:
--------------------------------------------------------------------------------
1 | このフォルダにお風呂から上がるときのサウンドファイルを置きます。
2 | サブフォルダ内のファイルも読み込みます。
3 |
--------------------------------------------------------------------------------
/faq.md:
--------------------------------------------------------------------------------
1 | # FAQ
2 |
3 | ## 画像が表示されません
4 |
5 | * 画像は通信内容をキャプチャして収集しています。画像が表示されない場合はブラウザキャッシュを削除してからログインし直すと
6 | 画像を収集できるようになります(一度に収集できるわけではなく、キャッシュ削除後にゲーム画面(母港や編成画面等)で**表示した**艦娘の画像が収集されます)
7 |
8 | ## キャプチャで座標が認識されません
9 |
10 | * 幅800px×高さ480pxで白色に囲まれた範囲をゲーム画面として認識します。ゲーム画面の大きさを変更している、または白色で囲まれていない、複数のモニターにまたがった位置にゲーム画面がある場合
11 | は座標の認識が出来ませんのでご注意ください。
12 |
13 | ## 通知機能でサポートされるメディア
14 |
15 | エンコーディング
16 |
17 | * **AAC**
18 | * **MP3**
19 | * **PCM** (非圧縮のみ)
20 | * **H.264/AVC**
21 | * **VP6**
22 |
23 | 拡張子
24 |
25 | * **AIFF :** .aif, .aiff
26 | * **FXM, FLV:** .fxm, .flv
27 | * **HLS :** .m3u8
28 | * **HLS :** .m3u8
29 | * **MP3 :** .mp3
30 | * **MP4 :** .mp4, .m4a, .m4v
31 | * **WAV :** .wav
32 |
33 | ## 「資材チャート」または「出撃統計」が見られなくなりました
34 |
35 | * 「資材ログ.csv」などのCSVファイルをExcel等の表計算ソフトで上書き保存してしまうと日付の形式が変わってしまい、読み込むことができなくなります。読み込めなくなってしまった場合再度Excelで開き、日付列の書式を**yyyy-mm-dd hh:mm:ss**に設定して上書き保存してください。
36 |
37 |
--------------------------------------------------------------------------------
/how-to-build.md:
--------------------------------------------------------------------------------
1 | # ビルド手順
2 |
3 | ## ビルド
4 |
5 | 以下のコマンドを実行して、ビルドします
6 |
7 | ```
8 | mvn package
9 | ```
10 |
--------------------------------------------------------------------------------
/how-to-develop.md:
--------------------------------------------------------------------------------
1 | # プラグイン開発
2 |
3 | 航海日誌ではプラグイン開発のために以下のインターフェイスを用意しています。
4 |
5 | これらの実装クラスのは[ServiceLoader](http://docs.oracle.com/javase/jp/8/docs/api/java/util/ServiceLoader.html)より取得されます。
6 | 実装クラスが呼び出されるようにするには META-INF/services/**インターフェイス名** に実装クラスの完全修飾名を記述します
7 |
8 | ## 外部向けインターフェイス
9 |
10 | 起動時に1度だけ行う処理
11 | * [logbook.plugin.lifecycle.StartUp](src/main/java/logbook/plugin/lifecycle/StartUp.java)
12 |
13 | メイン画面へのGUI要素の追加
14 | * [logbook.plugin.gui.MainCalcMenu](src/main/java/logbook/plugin/gui/MainCalcMenu.java)
15 | * [logbook.plugin.gui.MainCommandMenu](src/main/java/logbook/plugin/gui/MainCommandMenu.java)
16 | * [logbook.plugin.gui.MainExtMenu](src/main/java/logbook/plugin/gui/MainExtMenu.java)
17 |
18 | 艦隊タブの注釈へのGUI要素の追加
19 | * [logbook.plugin.gui.FleetTabRemark](src/main/java/logbook/plugin/gui/FleetTabRemark.java)
20 |
21 | 通信のキャプチャ
22 | * [logbook.proxy.ContentListenerSpi](src/main/java/logbook/proxy/ContentListenerSpi.java)
23 | * 関連クラス
24 | * [logbook.proxy.RequestMetaData](src/main/java/logbook/proxy/RequestMetaData.java)
25 | * [logbook.proxy.ResponseMetaData](src/main/java/logbook/proxy/ResponseMetaData.java)
26 |
27 | APIのキャプチャ
28 | * [logbook.api.APIListenerSpi](src/main/java/logbook/api/APIListenerSpi.java)
29 |
30 | プロキシサーバー
31 | * [logbook.proxy.ProxyServerSpi](src/main/java/logbook/proxy/ProxyServerSpi.java)
32 | * プロキシサーバーの実装が複数存在する場合、デフォルト実装以外の実装を1つだけ選択します。実装の選択方法は未定義です。
33 | * [デフォルト実装](src/main/java/logbook/internal/proxy/NettyProxyServer.java)
34 |
--------------------------------------------------------------------------------
/images/battlelog1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/battlelog1.png
--------------------------------------------------------------------------------
/images/battlelog2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/battlelog2.png
--------------------------------------------------------------------------------
/images/chrome_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/chrome_1.png
--------------------------------------------------------------------------------
/images/chrome_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/chrome_2.png
--------------------------------------------------------------------------------
/images/chrome_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/chrome_3.png
--------------------------------------------------------------------------------
/images/chrome_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/chrome_4.png
--------------------------------------------------------------------------------
/images/firefox_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/firefox_1.png
--------------------------------------------------------------------------------
/images/firefox_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/firefox_2.png
--------------------------------------------------------------------------------
/images/firefox_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/firefox_3.png
--------------------------------------------------------------------------------
/images/items1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/items1.png
--------------------------------------------------------------------------------
/images/items2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/items2.png
--------------------------------------------------------------------------------
/images/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sanaehirotaka/logbook-kai/afae74e3b3a3663c6edd6727f390dc6b3548df52/images/overview.png
--------------------------------------------------------------------------------
/src/main/java/logbook/api/API.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * {@code APIListenerSpi}が受け入れるAPIのURIを表す注釈です。
10 | * 例えば次の記述は開発と建造時のみに受け入れることを表します。
11 | *
12 | * @API({"/kcsapi/api_req_kousyou/createitem", "/kcsapi/api_req_kousyou/createship"})
13 | *
14 | *
15 | * @see logbook.api.APIListenerSpi
16 | */
17 | @Target(ElementType.TYPE)
18 | @Retention(RetentionPolicy.RUNTIME)
19 | public @interface API {
20 |
21 | /**
22 | * APIのURIを返します
23 | *
24 | * @return APIのURI
25 | */
26 | String[] value();
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/APIListenerSpi.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.proxy.RequestMetaData;
6 | import logbook.proxy.ResponseMetaData;
7 |
8 | /**
9 | * JSONオブジェクトを受け取るリスナーです。
10 | *
11 | * 実装クラスはServiceLoaderより取得されます。
12 | * 実装クラスが呼び出されるようにするには META-INF/services/logbook.api.APIListenerSpi に
13 | * 実装クラスの完全修飾名を記述します
14 | *
15 | * @see logbook.api.API
16 | * @see logbook.internal.APIListener
17 | */
18 | public interface APIListenerSpi {
19 |
20 | /**
21 | * JSONオブジェクトを受け取ります。
22 | *
23 | * 実装クラスに{@link API}注釈が付与されている場合、{@link API}注釈が持つURIに対してのみ実装クラスが呼び出されます。
24 | * 実装クラスに{@link API}注釈が付与されていない場合、すべてのURIに対して実装クラスが呼び出されます。
25 | *
26 | * @param json APIのレスポンスに含まれるJSONオブジェクト
27 | * @param req リクエスト
28 | * @param res レスポンス
29 | * @see logbook.api.API
30 | */
31 | void accept(JsonObject json, RequestMetaData req, ResponseMetaData res);
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberBasic.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.Basic;
6 | import logbook.proxy.RequestMetaData;
7 | import logbook.proxy.ResponseMetaData;
8 |
9 | /**
10 | * /kcsapi/api_get_member/basic
11 | *
12 | */
13 | @API("/kcsapi/api_get_member/basic")
14 | public class ApiGetMemberBasic implements APIListenerSpi {
15 |
16 | @Override
17 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
18 | JsonObject data = json.getJsonObject("api_data");
19 | if (data != null) {
20 | Basic.updateBasic(Basic.get(), data);
21 | }
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberDeck.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.LinkedHashSet;
4 | import java.util.List;
5 | import java.util.Map;
6 | import java.util.stream.Collectors;
7 |
8 | import javax.json.JsonArray;
9 | import javax.json.JsonObject;
10 |
11 | import logbook.bean.DeckPort;
12 | import logbook.bean.DeckPortCollection;
13 | import logbook.internal.JsonHelper;
14 | import logbook.proxy.RequestMetaData;
15 | import logbook.proxy.ResponseMetaData;
16 |
17 | /**
18 | * /kcsapi/api_get_member/deck
19 | *
20 | */
21 | @API("/kcsapi/api_get_member/deck")
22 | public class ApiGetMemberDeck implements APIListenerSpi {
23 |
24 | @Override
25 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
26 | JsonArray array = json.getJsonArray("api_data");
27 | if (array != null) {
28 | Map deckMap = JsonHelper.toMap(array, DeckPort::getId, DeckPort::toDeckPort);
29 | DeckPortCollection.get()
30 | .setDeckPortMap(deckMap);
31 | DeckPortCollection.get()
32 | .setMissionShips(deckMap.values()
33 | .stream()
34 | .filter(d -> d.getMission().get(0) != 0)
35 | .map(DeckPort::getShip)
36 | .flatMap(List::stream)
37 | .collect(Collectors.toCollection(LinkedHashSet::new)));
38 | }
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberMapinfo.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.Mapinfo;
6 | import logbook.internal.JsonHelper;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_get_member/mapinfo
12 | *
13 | */
14 | @API("/kcsapi/api_get_member/mapinfo")
15 | public class ApiGetMemberMapinfo implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | JsonObject object = json.getJsonObject("api_data");
20 | if (object != null) {
21 | Mapinfo mapinfo = Mapinfo.get();
22 |
23 | // 海域
24 | if (object.getJsonArray("api_map_info") != null) {
25 | mapinfo.setMapInfo(JsonHelper.toList(object.getJsonArray("api_map_info"), Mapinfo.MapInfo::toMapInfo));
26 | }
27 | // 基地航空隊
28 | if (object.getJsonArray("api_air_base") != null) {
29 | mapinfo.setAirBase(JsonHelper.toList(object.getJsonArray("api_air_base"), Mapinfo.AirBase::toAirBase));
30 | } else {
31 | mapinfo.getAirBase().clear();
32 | }
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberMaterial.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.time.Duration;
4 | import java.util.Map;
5 |
6 | import javax.json.JsonArray;
7 | import javax.json.JsonObject;
8 |
9 | import logbook.bean.AppCondition;
10 | import logbook.bean.AppConfig;
11 | import logbook.bean.Material;
12 | import logbook.internal.JsonHelper;
13 | import logbook.internal.log.LogWriter;
14 | import logbook.internal.log.MaterialLogFormat;
15 | import logbook.proxy.RequestMetaData;
16 | import logbook.proxy.ResponseMetaData;
17 |
18 | /**
19 | * /kcsapi/api_get_member/material
20 | *
21 | */
22 | @API("/kcsapi/api_get_member/material")
23 | public class ApiGetMemberMaterial implements APIListenerSpi {
24 |
25 | @Override
26 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
27 | JsonArray array = json.getJsonArray("api_data");
28 | if (array != null) {
29 | Duration duration = Duration.ofMillis(System.currentTimeMillis() - AppCondition.get()
30 | .getWroteMaterialLogLast());
31 | if (duration.compareTo(Duration.ofSeconds(AppConfig.get().getMaterialLogInterval())) >= 0) {
32 | Map material = JsonHelper.toMap(array, Material::getId, Material::toMaterial);
33 | LogWriter.getInstance(MaterialLogFormat::new)
34 | .write(material);
35 | AppCondition.get()
36 | .setWroteMaterialLogLast(System.currentTimeMillis());
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberPresetDeck.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.proxy.RequestMetaData;
6 | import logbook.proxy.ResponseMetaData;
7 |
8 | /**
9 | * /kcsapi/api_get_member/preset_deck
10 | *
11 | */
12 | @API("/kcsapi/api_get_member/preset_deck")
13 | public class ApiGetMemberPresetDeck implements APIListenerSpi {
14 |
15 | @Override
16 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
17 | // TODO 自動生成されたメソッド・スタブ
18 |
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberQuestlist.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.AppQuestCollection;
6 | import logbook.bean.QuestList;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_get_member/questlist
12 | *
13 | */
14 | @API("/kcsapi/api_get_member/questlist")
15 | public class ApiGetMemberQuestlist implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | JsonObject data = json.getJsonObject("api_data");
20 | if (data != null) {
21 | QuestList quest = QuestList.toQuestList(data);
22 |
23 | AppQuestCollection.get()
24 | .update(quest, "0".equals(req.getParameter("api_tab_id")));
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberRequireInfo.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonArray;
4 | import javax.json.JsonObject;
5 |
6 | import logbook.bean.Basic;
7 | import logbook.bean.SlotItem;
8 | import logbook.bean.SlotItemCollection;
9 | import logbook.internal.JsonHelper;
10 | import logbook.proxy.RequestMetaData;
11 | import logbook.proxy.ResponseMetaData;
12 |
13 | /**
14 | * /kcsapi/api_get_member/require_info
15 | *
16 | */
17 | @API("/kcsapi/api_get_member/require_info")
18 | public class ApiGetMemberRequireInfo implements APIListenerSpi {
19 |
20 | @Override
21 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
22 | JsonObject data = json.getJsonObject("api_data");
23 | if (data != null) {
24 | this.apiBasic(data.getJsonObject("api_basic"));
25 | this.apiSlotItem(data.getJsonArray("api_slot_item"));
26 | }
27 | }
28 |
29 | /**
30 | * api_data.api_basic
31 | *
32 | * @param object api_basic
33 | */
34 | private void apiBasic(JsonObject object) {
35 | Basic.updateBasic(Basic.get(), object);
36 | }
37 |
38 | /**
39 | * api_data.api_slot_item
40 | *
41 | * @param array api_slot_item
42 | */
43 | private void apiSlotItem(JsonArray array) {
44 | SlotItemCollection.get()
45 | .setSlotitemMap(JsonHelper.toMap(array, SlotItem::getId, SlotItem::toSlotItem));
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiGetMemberSlotItem.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonArray;
4 | import javax.json.JsonObject;
5 |
6 | import logbook.bean.SlotItem;
7 | import logbook.bean.SlotItemCollection;
8 | import logbook.internal.JsonHelper;
9 | import logbook.proxy.RequestMetaData;
10 | import logbook.proxy.ResponseMetaData;
11 |
12 | /**
13 | * /kcsapi/api_get_member/slot_item
14 | *
15 | */
16 | @API("/kcsapi/api_get_member/slot_item")
17 | public class ApiGetMemberSlotItem implements APIListenerSpi {
18 |
19 | @Override
20 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
21 | JsonArray array = json.getJsonArray("api_data");
22 | if (array != null) {
23 | SlotItemCollection.get()
24 | .setSlotitemMap(JsonHelper.toMap(array, SlotItem::getId, SlotItem::toSlotItem));
25 | }
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqHenseiCombined.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Optional;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.AppCondition;
8 | import logbook.proxy.RequestMetaData;
9 | import logbook.proxy.ResponseMetaData;
10 |
11 | /**
12 | * /kcsapi/api_req_hensei/combined
13 | *
14 | */
15 | @API("/kcsapi/api_req_hensei/combined")
16 | public class ApiReqHenseiCombined implements APIListenerSpi {
17 |
18 | @Override
19 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
20 | Optional.ofNullable(req.getParameter("api_combined_type"))
21 | .map(Integer::valueOf)
22 | .ifPresent(type -> {
23 | AppCondition app = AppCondition.get();
24 | app.setCombinedType(type);
25 | app.setCombinedFlag(type != 0);
26 | });
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqHenseiPresetSelect.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.DeckPort;
6 | import logbook.bean.DeckPortCollection;
7 | import logbook.internal.JsonHelper;
8 | import logbook.proxy.RequestMetaData;
9 | import logbook.proxy.ResponseMetaData;
10 |
11 | /**
12 | * /kcsapi/api_req_hensei/preset_select
13 | *
14 | */
15 | @API("/kcsapi/api_req_hensei/preset_select")
16 | public class ApiReqHenseiPresetSelect implements APIListenerSpi {
17 |
18 | @Override
19 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
20 | JsonObject data = json.getJsonObject("api_data");
21 | if (data != null) {
22 | Integer deckId = Integer.valueOf(req.getParameter("api_deck_id"));
23 | String name = data.getString("api_name");
24 | DeckPort deckPort = DeckPortCollection.get()
25 | .getDeckPortMap()
26 | .get(deckId)
27 | .clone();
28 | deckPort.setName(name);
29 | deckPort.setShip(JsonHelper.toIntegerList(data.getJsonArray("api_ship")));
30 |
31 | DeckPortCollection.get()
32 | .getDeckPortMap()
33 | .put(deckId, deckPort);
34 | }
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqHokyuCharge.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | import javax.json.JsonObject;
7 |
8 | import logbook.bean.Ship;
9 | import logbook.bean.ShipCollection;
10 | import logbook.internal.JsonHelper;
11 | import logbook.proxy.RequestMetaData;
12 | import logbook.proxy.ResponseMetaData;
13 |
14 | /**
15 | * /kcsapi/api_req_hokyu/charge
16 | *
17 | */
18 | @API("/kcsapi/api_req_hokyu/charge")
19 | public class ApiReqHokyuCharge implements APIListenerSpi {
20 |
21 | @Override
22 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
23 | JsonObject data = json.getJsonObject("api_data");
24 | if (data != null) {
25 | Map map = ShipCollection.get()
26 | .getShipMap();
27 |
28 | List ships = JsonHelper.toList(data.getJsonArray("api_ship"), Ship::toShip);
29 | for (Ship ship : ships) {
30 | Ship oldShip = map.get(ship.getId());
31 | Ship newShip = oldShip.clone();
32 | newShip.setBull(ship.getBull());
33 | newShip.setFuel(ship.getFuel());
34 | newShip.setOnslot(ship.getOnslot());
35 | map.put(ship.getId(), newShip);
36 | }
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKaisouMarriage.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Map;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.Ship;
8 | import logbook.bean.ShipCollection;
9 | import logbook.proxy.RequestMetaData;
10 | import logbook.proxy.ResponseMetaData;
11 |
12 | /**
13 | * /kcsapi/api_req_kaisou/marriage
14 | *
15 | */
16 | @API("/kcsapi/api_req_kaisou/marriage")
17 | public class ApiReqKaisouMarriage implements APIListenerSpi {
18 |
19 | @Override
20 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
21 | JsonObject data = json.getJsonObject("api_data");
22 | if (data != null) {
23 | Map shipMap = ShipCollection.get()
24 | .getShipMap();
25 |
26 | Integer shipId = Integer.valueOf(req.getParameter("api_id"));
27 | shipMap.put(shipId, Ship.toShip(data));
28 | }
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKaisouSlotDeprive.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.Ship;
6 | import logbook.bean.ShipCollection;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_req_kaisou/slot_deprive
12 | *
13 | */
14 | @API("/kcsapi/api_req_kaisou/slot_deprive")
15 | public class ApiReqKaisouSlotDeprive implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | JsonObject data = json.getJsonObject("api_data");
20 | if (data != null) {
21 | JsonObject shipData = data.getJsonObject("api_ship_data");
22 | if (shipData != null) {
23 | this.replace(shipData.getJsonObject("api_set_ship"));
24 | this.replace(shipData.getJsonObject("api_unset_ship"));
25 | }
26 | }
27 | }
28 |
29 | private void replace(JsonObject json) {
30 | Ship ship = Ship.toShip(json);
31 | ShipCollection.get()
32 | .getShipMap().put(ship.getId(), ship);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKaisouSlotExchangeIndex.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Map;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.Ship;
8 | import logbook.bean.ShipCollection;
9 | import logbook.proxy.RequestMetaData;
10 | import logbook.proxy.ResponseMetaData;
11 |
12 | /**
13 | * /kcsapi/api_req_kaisou/slot_exchange_index
14 | *
15 | */
16 | @API("/kcsapi/api_req_kaisou/slot_exchange_index")
17 | public class ApiReqKaisouSlotExchangeIndex implements APIListenerSpi {
18 |
19 | @Override
20 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
21 | JsonObject data = json.getJsonObject("api_data");
22 | if (data != null) {
23 | Map shipMap = ShipCollection.get()
24 | .getShipMap();
25 |
26 | Integer shipId = Integer.valueOf(req.getParameter("api_id"));
27 | shipMap.put(shipId, Ship.toShip(data.getJsonObject("api_ship_data")));
28 | }
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKousyouCreateship.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.Createship;
6 | import logbook.bean.CreateshipCollection;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_req_kousyou/createship
12 | *
13 | */
14 | @API("/kcsapi/api_req_kousyou/createship")
15 | public class ApiReqKousyouCreateship implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | Createship createship = Createship.toCreateship(req);
20 | CreateshipCollection.get()
21 | .getCreateshipMap()
22 | .put(createship.getKdockId(), createship);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKousyouCreateshipSpeedchange.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.proxy.RequestMetaData;
6 | import logbook.proxy.ResponseMetaData;
7 |
8 | /**
9 | * /kcsapi/api_req_kousyou/createship_speedchange
10 | *
11 | */
12 | @API("/kcsapi/api_req_kousyou/createship_speedchange")
13 | public class ApiReqKousyouCreateshipSpeedchange implements APIListenerSpi {
14 |
15 | @Override
16 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
17 | // TODO 自動生成されたメソッド・スタブ
18 |
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKousyouDestroyitem2.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Map;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.SlotItem;
8 | import logbook.bean.SlotItemCollection;
9 | import logbook.proxy.RequestMetaData;
10 | import logbook.proxy.ResponseMetaData;
11 |
12 | /**
13 | * /kcsapi/api_req_kousyou/destroyitem2
14 | *
15 | */
16 | @API("/kcsapi/api_req_kousyou/destroyitem2")
17 | public class ApiReqKousyouDestroyitem2 implements APIListenerSpi {
18 |
19 | @Override
20 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
21 | String apiSlotitemIds = req.getParameter("api_slotitem_ids");
22 | if (apiSlotitemIds != null) {
23 | Map itemMap = SlotItemCollection.get()
24 | .getSlotitemMap();
25 | for (String apiSlotitemId : apiSlotitemIds.split(",")) {
26 | Integer itemId = Integer.valueOf(apiSlotitemId);
27 | // 装備を廃棄する
28 | itemMap.remove(itemId);
29 | }
30 | }
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKousyouRemodelSlot.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Map;
4 |
5 | import javax.json.JsonArray;
6 | import javax.json.JsonObject;
7 |
8 | import logbook.bean.SlotItem;
9 | import logbook.bean.SlotItemCollection;
10 | import logbook.internal.JsonHelper;
11 | import logbook.proxy.RequestMetaData;
12 | import logbook.proxy.ResponseMetaData;
13 |
14 | /**
15 | * /kcsapi/api_req_kousyou/remodel_slot
16 | *
17 | */
18 | @API("/kcsapi/api_req_kousyou/remodel_slot")
19 | public class ApiReqKousyouRemodelSlot implements APIListenerSpi {
20 |
21 | @Override
22 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
23 | JsonObject data = json.getJsonObject("api_data");
24 | if (data != null) {
25 | Map itemMap = SlotItemCollection.get()
26 | .getSlotitemMap();
27 |
28 | // 改修後装備
29 | JsonObject afterSlot = data.getJsonObject("api_after_slot");
30 | if (afterSlot != null) {
31 | SlotItem replace = SlotItem.toSlotItem(afterSlot);
32 | itemMap.put(replace.getId(), replace);
33 | }
34 |
35 | // 消費装備
36 | JsonArray useSlotId = data.getJsonArray("api_use_slot_id");
37 | if (useSlotId != null) {
38 | for (Integer slotId : JsonHelper.toIntegerList(useSlotId)) {
39 | itemMap.remove(slotId);
40 | }
41 | }
42 | }
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqKousyouRemodelSlotlist.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.proxy.RequestMetaData;
6 | import logbook.proxy.ResponseMetaData;
7 |
8 | /**
9 | * /kcsapi/api_req_kousyou/remodel_slotlist
10 | *
11 | */
12 | @API("/kcsapi/api_req_kousyou/remodel_slotlist")
13 | public class ApiReqKousyouRemodelSlotlist implements APIListenerSpi {
14 |
15 | @Override
16 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
17 | // TODO 自動生成されたメソッド・スタブ
18 |
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqMissionResult.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.MissionResult;
6 | import logbook.internal.log.LogWriter;
7 | import logbook.internal.log.MissionResultLogFormat;
8 | import logbook.proxy.RequestMetaData;
9 | import logbook.proxy.ResponseMetaData;
10 |
11 | /**
12 | * /kcsapi/api_req_mission/result
13 | *
14 | */
15 | @API("/kcsapi/api_req_mission/result")
16 | public class ApiReqMissionResult implements APIListenerSpi {
17 |
18 | @Override
19 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
20 |
21 | JsonObject data = json.getJsonObject("api_data");
22 | if (data != null) {
23 | MissionResult result = MissionResult.toMissionResult(data);
24 |
25 | LogWriter.getInstance(MissionResultLogFormat::new)
26 | .write(result);
27 | }
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqNyukyoStart.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Map;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.Ship;
8 | import logbook.bean.ShipCollection;
9 | import logbook.proxy.RequestMetaData;
10 | import logbook.proxy.ResponseMetaData;
11 |
12 | /**
13 | * /kcsapi/api_req_nyukyo/start
14 | *
15 | */
16 | @API("/kcsapi/api_req_nyukyo/start")
17 | public class ApiReqNyukyoStart implements APIListenerSpi {
18 |
19 | @Override
20 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
21 | Map map = ShipCollection.get()
22 | .getShipMap();
23 | Integer shipId = Integer.valueOf(req.getParameter("api_ship_id"));
24 | Ship ship = map.get(shipId)
25 | .clone();
26 |
27 | if ("1".equals(req.getParameter("api_highspeed"))) {
28 | ship.setNowhp(ship.getMaxhp());
29 | ship.setNdockTime(0);
30 | if (ship.getCond() < 40) {
31 | ship.setCond(40);
32 | }
33 | }
34 | // 高速修復材未使用時でも入れ替える(艦隊タブを更新するため)
35 | map.put(shipId, ship);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqPracticeBattle.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Optional;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.AppCondition;
8 | import logbook.bean.BattleLog;
9 | import logbook.bean.BattleTypes.IFormation;
10 | import logbook.bean.SortieBattle;
11 | import logbook.proxy.RequestMetaData;
12 | import logbook.proxy.ResponseMetaData;
13 |
14 | /**
15 | * /kcsapi/api_req_practice/battle
16 | *
17 | */
18 | @API("/kcsapi/api_req_practice/battle")
19 | public class ApiReqPracticeBattle implements APIListenerSpi {
20 |
21 | @Override
22 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
23 | try {
24 | JsonObject data = json.getJsonObject("api_data");
25 | if (data != null) {
26 | AppCondition condition = AppCondition.get();
27 | BattleLog log = new BattleLog();
28 | condition.setPracticeBattleResult(log);
29 | log.setPractice(true);
30 | log.setBattle(SortieBattle.toBattle(data));
31 | // 出撃艦隊
32 | Integer dockId = Optional.ofNullable(log.getBattle())
33 | .map(IFormation::getDockId)
34 | .orElse(1);
35 | // 艦隊スナップショットを作る
36 | BattleLog.snapshot(log, dockId);
37 | }
38 | } catch (Throwable e) {
39 | e.printStackTrace();
40 | }
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqPracticeBattleresult.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import java.util.Optional;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.bean.AppCondition;
8 | import logbook.bean.BattleLog;
9 | import logbook.bean.BattleResult;
10 | import logbook.bean.BattleTypes.IFormation;
11 | import logbook.internal.Logs;
12 | import logbook.proxy.RequestMetaData;
13 | import logbook.proxy.ResponseMetaData;
14 |
15 | /**
16 | * /kcsapi/api_req_practice/battle_result
17 | *
18 | */
19 | @API("/kcsapi/api_req_practice/battle_result")
20 | public class ApiReqPracticeBattleresult implements APIListenerSpi {
21 |
22 | @Override
23 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
24 | try {
25 | JsonObject data = json.getJsonObject("api_data");
26 | if (data != null) {
27 | BattleResult result = BattleResult.toBattleResult(data);
28 | BattleLog log = AppCondition.get().getPracticeBattleResult();
29 | if (log != null) {
30 | log.setResult(result);
31 | log.setTime(Logs.nowString());
32 | // 出撃艦隊
33 | Integer dockId = Optional.ofNullable(log.getBattle())
34 | .map(IFormation::getDockId)
35 | .orElse(1);
36 | // 艦隊スナップショットを作る
37 | BattleLog.snapshot(log, dockId);
38 | }
39 | }
40 | } catch (Throwable e) {
41 | e.printStackTrace();
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqPracticeMidnightBattle.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.AppCondition;
6 | import logbook.bean.BattleLog;
7 | import logbook.bean.BattleMidnightBattle;
8 | import logbook.proxy.RequestMetaData;
9 | import logbook.proxy.ResponseMetaData;
10 |
11 | /**
12 | * /kcsapi/api_req_practice/midnight_battle
13 | *
14 | */
15 | @API("/kcsapi/api_req_practice/midnight_battle")
16 | public class ApiReqPracticeMidnightBattle implements APIListenerSpi {
17 |
18 | @Override
19 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
20 | JsonObject data = json.getJsonObject("api_data");
21 | if (data != null) {
22 |
23 | BattleLog log = AppCondition.get().getPracticeBattleResult();
24 | if (log != null) {
25 | log.setMidnight(BattleMidnightBattle.toBattle(data));
26 | }
27 | }
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqQuestClearitemget.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.AppQuestCollection;
6 | import logbook.bean.AppQuestDuration;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_req_quest/clearitemget
12 | *
13 | */
14 | @API("/kcsapi/api_req_quest/clearitemget")
15 | public class ApiReqQuestClearitemget implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | String id = req.getParameter("api_quest_id");
20 | if (id != null) {
21 | Integer key = Integer.valueOf(id);
22 | AppQuestCollection.get().getQuest().remove(key);
23 | AppQuestDuration.get().remove(key);
24 | }
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/logbook/api/ApiReqQuestStop.java:
--------------------------------------------------------------------------------
1 | package logbook.api;
2 |
3 | import javax.json.JsonObject;
4 |
5 | import logbook.bean.AppQuestCollection;
6 | import logbook.bean.AppQuestDuration;
7 | import logbook.proxy.RequestMetaData;
8 | import logbook.proxy.ResponseMetaData;
9 |
10 | /**
11 | * /kcsapi/api_req_quest/stop
12 | *
13 | */
14 | @API("/kcsapi/api_req_quest/stop")
15 | public class ApiReqQuestStop implements APIListenerSpi {
16 |
17 | @Override
18 | public void accept(JsonObject json, RequestMetaData req, ResponseMetaData res) {
19 | String id = req.getParameter("api_quest_id");
20 | if (id != null) {
21 | Integer key = Integer.valueOf(id);
22 | AppQuestCollection.get().getQuest().remove(key);
23 | AppQuestDuration.get().unset(key);
24 | }
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/AppBouyomiConfig.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.util.Map;
4 | import java.util.concurrent.ConcurrentHashMap;
5 |
6 | import logbook.internal.Config;
7 | import lombok.Data;
8 |
9 | /**
10 | * 棒読みちゃん連携設定
11 | *
12 | */
13 | @Data
14 | public class AppBouyomiConfig {
15 |
16 | private boolean enable = false;
17 |
18 | private String host = "localhost";
19 |
20 | private int port = 50001;
21 |
22 | private boolean tryExecute = false;
23 |
24 | private String bouyomiPath = "";
25 |
26 | private Map text = new ConcurrentHashMap<>();
27 |
28 | @Data
29 | public static class AppBouyomiText {
30 |
31 | private boolean enable = true;
32 |
33 | private String id;
34 |
35 | private String text;
36 | }
37 |
38 | /**
39 | * アプリケーションのデフォルト設定ディレクトリからAppBouyomiCollection
を取得します、
40 | * これは次の記述と同等です
41 | *
42 | * Config.getDefault().get(AppBouyomiCollection.class, AppBouyomiCollection::new)
43 | *
44 | *
45 | * @return AppBouyomiCollection
46 | */
47 | public static AppBouyomiConfig get() {
48 | return Config.getDefault().get(AppBouyomiConfig.class, AppBouyomiConfig::new);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/AppDeckCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 編成記録のコレクション
12 | *
13 | */
14 | @Data
15 | public class AppDeckCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = 6506397370160062508L;
18 |
19 | /** 編成記録 */
20 | private List decks = new ArrayList<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリからAppDeckCollection
を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(AppDeckCollection.class, AppDeckCollection::new)
27 | *
28 | *
29 | * @return AppDeckCollection
30 | */
31 | public static AppDeckCollection get() {
32 | return Config.getDefault().get(AppDeckCollection.class, AppDeckCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/AppSeaAreaExp.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import lombok.AllArgsConstructor;
6 | import lombok.Data;
7 |
8 | /**
9 | * 海域経験値
10 | */
11 | @Data
12 | @AllArgsConstructor
13 | public class AppSeaAreaExp implements Serializable {
14 |
15 | private static final long serialVersionUID = 380470177565807966L;
16 |
17 | public AppSeaAreaExp() {
18 | }
19 |
20 | /** 海域 */
21 | private String name;
22 |
23 | /** 海域Exp */
24 | private int exp;
25 |
26 | @Override
27 | public String toString() {
28 | return this.name;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/CreateshipCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 建造
12 | *
13 | */
14 | @Data
15 | public class CreateshipCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -1055716236895968695L;
18 |
19 | /** 建造 */
20 | private Map createshipMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリからCreateshipCollection
を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(CreateshipCollection.class, CreateshipCollection::new)
27 | *
28 | *
29 | * @return CreateshipCollection
30 | */
31 | public static CreateshipCollection get() {
32 | return Config.getDefault().get(CreateshipCollection.class, CreateshipCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/DeckPortCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.LinkedHashSet;
6 | import java.util.Map;
7 | import java.util.Set;
8 |
9 | import logbook.internal.Config;
10 | import lombok.Data;
11 |
12 | /**
13 | * 艦隊のコレクション
14 | *
15 | */
16 | @Data
17 | public class DeckPortCollection implements Serializable {
18 |
19 | private static final long serialVersionUID = -1465703933249298173L;
20 |
21 | /** 艦隊 */
22 | private Map deckPortMap = new LinkedHashMap<>();
23 |
24 | /** 遠征中の艦娘 */
25 | private Set missionShips = new LinkedHashSet<>();
26 |
27 | /**
28 | * アプリケーションのデフォルト設定ディレクトリからDeckPortCollection
を取得します、
29 | * これは次の記述と同等です
30 | *
31 | * Config.getDefault().get(DeckPortCollection.class, DeckPortCollection::new)
32 | *
33 | *
34 | * @return DeckPortCollection
35 | */
36 | public static DeckPortCollection get() {
37 | return Config.getDefault().get(DeckPortCollection.class, DeckPortCollection::new);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Enemy.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | import lombok.Data;
7 |
8 | /**
9 | * 敵艦
10 | *
11 | */
12 | @Data
13 | public class Enemy implements Chara, Serializable, Cloneable {
14 |
15 | private static final long serialVersionUID = -4222845234889789870L;
16 |
17 | /** 艦船ID */
18 | private Integer shipId;
19 |
20 | /** Lv */
21 | private Integer lv;
22 |
23 | /** HP */
24 | private Integer nowhp;
25 |
26 | /** 最大HP */
27 | private Integer maxhp;
28 |
29 | /** 装備 */
30 | private List slot;
31 |
32 | /** 序列 */
33 | private Integer order;
34 |
35 | /** 演習相手かどうか */
36 | private boolean practice;
37 |
38 | @Override
39 | public boolean isEnemy() {
40 | return true;
41 | }
42 |
43 | @Override
44 | public Enemy asEnemy() {
45 | return this;
46 | }
47 |
48 | @Override
49 | public Enemy clone() {
50 | try {
51 | return (Enemy) super.clone();
52 | } catch (CloneNotSupportedException e) {
53 | throw new IllegalStateException(e);
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Friend.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.List;
5 |
6 | import lombok.Data;
7 |
8 | /**
9 | * 友軍
10 | *
11 | */
12 | @Data
13 | public class Friend implements Chara, Serializable, Cloneable {
14 |
15 | private static final long serialVersionUID = -4222845234889789870L;
16 |
17 | /** 艦船ID */
18 | private Integer shipId;
19 |
20 | /** Lv */
21 | private Integer lv;
22 |
23 | /** HP */
24 | private Integer nowhp;
25 |
26 | /** 最大HP */
27 | private Integer maxhp;
28 |
29 | /** 装備 */
30 | private List slot;
31 |
32 | @Override
33 | public boolean isFriend() {
34 | return true;
35 | }
36 |
37 | @Override
38 | public Friend asFriend() {
39 | return this;
40 | }
41 |
42 | @Override
43 | public Friend clone() {
44 | try {
45 | return (Friend) super.clone();
46 | } catch (CloneNotSupportedException e) {
47 | throw new IllegalStateException(e);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Maparea.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.internal.JsonHelper;
8 | import lombok.Data;
9 |
10 | /**
11 | * api_mst_maparea
12 | *
13 | */
14 | @Data
15 | public class Maparea implements Serializable {
16 |
17 | private static final long serialVersionUID = 3065470938786532030L;
18 |
19 | /** api_id */
20 | private Integer id;
21 |
22 | /** api_name */
23 | private String name;
24 |
25 | /** api_type */
26 | private Integer type;
27 |
28 | /**
29 | * JsonObjectから{@link Maparea}を構築します
30 | *
31 | * @param json JsonObject
32 | * @return {@link Maparea}
33 | */
34 | public static Maparea toMaparea(JsonObject json) {
35 | Maparea bean = new Maparea();
36 | JsonHelper.bind(json)
37 | .setInteger("api_id", bean::setId)
38 | .setString("api_name", bean::setName)
39 | .setInteger("api_type", bean::setType);
40 | return bean;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/MapareaCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 出撃海域のコレクション
12 | *
13 | */
14 | @Data
15 | public class MapareaCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -5052707686530360461L;
18 |
19 | private Map maparea = new LinkedHashMap<>();
20 |
21 | /**
22 | * アプリケーションのデフォルト設定ディレクトリから{@link MapareaCollection}を取得します、
23 | * これは次の記述と同等です
24 | *
25 | * Config.getDefault().get(MapareaCollection.class, MapareaCollection::new)
26 | *
27 | *
28 | * @return {@link MapareaCollection}
29 | */
30 | public static MapareaCollection get() {
31 | return Config.getDefault().get(MapareaCollection.class, MapareaCollection::new);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/MapinfoMstCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | @Data
11 | public class MapinfoMstCollection implements Serializable {
12 |
13 | private static final long serialVersionUID = -8209654433723984736L;
14 |
15 | private Map mapinfo = new LinkedHashMap<>();
16 |
17 | /**
18 | * アプリケーションのデフォルト設定ディレクトリからMapinfoMstCollection
を取得します、
19 | * これは次の記述と同等です
20 | *
21 | * Config.getDefault().get(MapinfoMstCollection.class, MapinfoMstCollection::new)
22 | *
23 | *
24 | * @return MapinfoMstCollection
25 | */
26 | public static MapinfoMstCollection get() {
27 | return Config.getDefault().get(MapinfoMstCollection.class, MapinfoMstCollection::new);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Material.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.internal.JsonHelper;
8 | import lombok.Data;
9 |
10 | /**
11 | * api_material
12 | *
13 | */
14 | @Data
15 | public class Material implements Serializable {
16 |
17 | private static final long serialVersionUID = -6919096591550530580L;
18 |
19 | /** api_id */
20 | private Integer id;
21 |
22 | /** api_value */
23 | private Integer value;
24 |
25 | /**
26 | * JsonObjectから{@link Material}を構築します
27 | *
28 | * @param json JsonObject
29 | * @return {@link Material}
30 | */
31 | public static Material toMaterial(JsonObject json) {
32 | Material bean = new Material();
33 | JsonHelper.bind(json)
34 | .setInteger("api_id", bean::setId)
35 | .setInteger("api_value", bean::setValue);
36 | return bean;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/MissionCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 遠征のコレクション
12 | *
13 | */
14 | @Data
15 | public class MissionCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = 3540653891280633865L;
18 |
19 | /** 遠征 */
20 | private Map missionMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリからMissionCollection
を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(MissionCollection.class)
27 | *
28 | *
29 | * @return MissionCollection
30 | */
31 | public static MissionCollection get() {
32 | return Config.getDefault().get(MissionCollection.class, MissionCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/NdockCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.LinkedHashSet;
6 | import java.util.Map;
7 | import java.util.Set;
8 |
9 | import logbook.internal.Config;
10 | import lombok.Data;
11 |
12 | /**
13 | * 入渠ドックのコレクション
14 | *
15 | */
16 | @Data
17 | public class NdockCollection implements Serializable {
18 |
19 | private static final long serialVersionUID = 3570762805703032390L;
20 |
21 | /** 入渠ドック */
22 | private Map ndockMap = new LinkedHashMap<>();
23 |
24 | /** 入渠中の艦娘 */
25 | private Set ndockSet = new LinkedHashSet<>();
26 |
27 | /**
28 | * アプリケーションのデフォルト設定ディレクトリからNdockCollection
を取得します、
29 | * これは次の記述と同等です
30 | *
31 | * Config.getDefault().get(NdockCollection.class, NdockCollection::new)
32 | *
33 | *
34 | * @return NdockCollection
35 | */
36 | public static NdockCollection get() {
37 | return Config.getDefault().get(NdockCollection.class, NdockCollection::new);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/ParameterFilterConfig.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import logbook.internal.Operator;
4 | import lombok.Data;
5 |
6 | /**
7 | * パラメータフィルターの設定
8 | */
9 | @Data
10 | public class ParameterFilterConfig {
11 | /** 有効 */
12 | private boolean enabled;
13 | /** 選ばれていたパラメータ */
14 | private String name;
15 | /** フィールドの値 */
16 | private Integer value;
17 | /** 選択のインデックス */
18 | private Integer valueChoice;
19 | /** 比較タイプ */
20 | private Operator type;
21 | }
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/ShipCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 艦娘
12 | *
13 | */
14 | @Data
15 | public class ShipCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -8680643608671594758L;
18 |
19 | /** 艦娘 */
20 | private Map shipMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link ShipCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(ShipCollection.class, ShipCollection::new)
27 | *
28 | *
29 | * @return {@link ShipCollection}
30 | */
31 | public static ShipCollection get() {
32 | return Config.getDefault().get(ShipCollection.class, ShipCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/ShipLabelCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.HashMap;
5 | import java.util.Map;
6 | import java.util.Set;
7 |
8 | import logbook.internal.Config;
9 | import lombok.Data;
10 |
11 | /**
12 | * 艦娘のラベル
13 | *
14 | */
15 | @Data
16 | public class ShipLabelCollection implements Serializable {
17 |
18 | private static final long serialVersionUID = -5742379498848962924L;
19 |
20 | private Map> labels = new HashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリからShipLabelCollection
を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(ShipLabelCollection.class)
27 | *
28 | *
29 | * @return ShipLabelCollection
30 | */
31 | public static ShipLabelCollection get() {
32 | return Config.getDefault().get(ShipLabelCollection.class, ShipLabelCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/ShipMstCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 艦娘のコレクション
12 | *
13 | */
14 | @Data
15 | public class ShipMstCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = 3473178293202796312L;
18 |
19 | /** 艦娘 */
20 | private Map shipMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link ShipMstCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(ShipMstCollection.class, ShipMstCollection::new)
27 | *
28 | *
29 | * @return {@link ShipMstCollection}
30 | */
31 | public static ShipMstCollection get() {
32 | return Config.getDefault().get(ShipMstCollection.class, ShipMstCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/ShipgraphCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | @Data
11 | public class ShipgraphCollection implements Serializable {
12 |
13 | private static final long serialVersionUID = 3318926490130170935L;
14 |
15 | /** 艦娘画像設定 */
16 | private Map shipgraphMap = new LinkedHashMap<>();
17 |
18 | /**
19 | * アプリケーションのデフォルト設定ディレクトリから{@link ShipgraphCollection}を取得します、
20 | * これは次の記述と同等です
21 | *
22 | * Config.getDefault().get(ShipgraphCollection.class, ShipgraphCollection::new)
23 | *
24 | *
25 | * @return {@link ShipgraphCollection}
26 | */
27 | public static ShipgraphCollection get() {
28 | return Config.getDefault().get(ShipgraphCollection.class, ShipgraphCollection::new);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/SlotItem.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.internal.JsonHelper;
8 | import lombok.Data;
9 |
10 | /**
11 | * 装備
12 | *
13 | */
14 | @Data
15 | public class SlotItem implements Serializable {
16 |
17 | private static final long serialVersionUID = -5902864924857205128L;
18 |
19 | /** api_id */
20 | private Integer id;
21 |
22 | /** api_level */
23 | private Integer level;
24 |
25 | /** api_alv */
26 | private Integer alv;
27 |
28 | /** api_locked */
29 | private Boolean locked;
30 |
31 | /** api_slotitem_id */
32 | private Integer slotitemId;
33 |
34 | /**
35 | * JsonObjectから{@link SlotItem}を構築します
36 | *
37 | * @param json JsonObject
38 | * @return {@link SlotItem}
39 | */
40 | public static SlotItem toSlotItem(JsonObject json) {
41 | SlotItem bean = new SlotItem();
42 | JsonHelper.bind(json)
43 | .setInteger("api_id", bean::setId)
44 | .setInteger("api_level", bean::setLevel)
45 | .setInteger("api_alv", bean::setAlv)
46 | .setBoolean("api_locked", bean::setLocked)
47 | .setInteger("api_slotitem_id", bean::setSlotitemId);
48 | return bean;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/SlotItemCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * アイテムのコレクション
12 | *
13 | */
14 | @Data
15 | public class SlotItemCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -2530569251712024161L;
18 |
19 | /** アイテム */
20 | private Map slotitemMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link SlotItemCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(SlotItemCollection.class, SlotItemCollection::new)
27 | *
28 | *
29 | * @return {@link SlotItemCollection}
30 | */
31 | public static SlotItemCollection get() {
32 | return Config.getDefault().get(SlotItemCollection.class, SlotItemCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/SlotitemEquiptype.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.internal.JsonHelper;
8 | import lombok.Data;
9 |
10 | /**
11 | * api_mst_slotitem_equiptype
12 | *
13 | */
14 | @Data
15 | public class SlotitemEquiptype implements Serializable {
16 |
17 | private static final long serialVersionUID = 6987412391631651270L;
18 |
19 | /** api_id */
20 | private Integer id;
21 |
22 | /** api_name */
23 | private String name;
24 |
25 | /** api_show_flg */
26 | private Integer showFlg;
27 |
28 | @Override
29 | public String toString() {
30 | return this.name;
31 | }
32 |
33 | /**
34 | * JsonObjectから{@link SlotitemEquiptype}を構築します
35 | *
36 | * @param json JsonObject
37 | * @return {@link SlotitemEquiptype}
38 | */
39 | public static SlotitemEquiptype toSlotitemEquiptype(JsonObject json) {
40 | SlotitemEquiptype bean = new SlotitemEquiptype();
41 | JsonHelper.bind(json)
42 | .setInteger("api_id", bean::setId)
43 | .setString("api_name", bean::setName)
44 | .setInteger("api_show_flg", bean::setShowFlg);
45 | return bean;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/SlotitemEquiptypeCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * アイテム種類のコレクション
12 | *
13 | */
14 | @Data
15 | public class SlotitemEquiptypeCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = 1623208831316913362L;
18 |
19 | /** アイテム種類 */
20 | private Map equiptypeMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link SlotitemEquiptypeCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(SlotitemEquiptypeCollection.class, SlotitemEquiptypeCollection::new)
27 | *
28 | *
29 | * @return {@link SlotitemEquiptypeCollection}
30 | */
31 | public static SlotitemEquiptypeCollection get() {
32 | return Config.getDefault().get(SlotitemEquiptypeCollection.class, SlotitemEquiptypeCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/SlotitemMstCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * アイテムのコレクション
12 | *
13 | */
14 | @Data
15 | public class SlotitemMstCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = 8409969154221160905L;
18 |
19 | /** アイテム */
20 | private Map slotitemMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link SlotitemMstCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(SlotitemMstCollection.class, SlotitemMstCollection::new)
27 | *
28 | *
29 | * @return {@link SlotitemMstCollection}
30 | */
31 | public static SlotitemMstCollection get() {
32 | return Config.getDefault().get(SlotitemMstCollection.class, SlotitemMstCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Spritesmith.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.util.Map;
4 |
5 | import lombok.Data;
6 |
7 | /**
8 | * スプライト情報
9 | *
10 | */
11 | @Data
12 | public class Spritesmith {
13 |
14 | private Map frames;
15 |
16 | @Data
17 | public static class Frame {
18 | private Rect frame;
19 | private boolean rotated;
20 | private boolean trimmed;
21 | private Rect spriteSourceSize;
22 | private Rect sourceSize;
23 | }
24 |
25 | @Data
26 | public static class Rect {
27 | private int x;
28 | private int y;
29 | private int w;
30 | private int h;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/StypeCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * 艦種のコレクション
12 | *
13 | */
14 | @Data
15 | public class StypeCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -7530294903513038451L;
18 |
19 | /** 艦種 */
20 | private Map stypeMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link StypeCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(StypeCollection.class, StypeCollection::new)
27 | *
28 | *
29 | * @return {@link StypeCollection}
30 | */
31 | public static StypeCollection get() {
32 | return Config.getDefault().get(StypeCollection.class, StypeCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/TestAllPredicate.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.util.Objects;
4 | import java.util.function.Predicate;
5 |
6 | public interface TestAllPredicate extends Predicate {
7 | @Override
8 | default public TestAllPredicate and(Predicate super T> other) {
9 | Objects.requireNonNull(other);
10 | return (t) -> {
11 | boolean result1 = test(t);
12 | boolean result2 = other.test(t);
13 | return result1 && result2;
14 | };
15 | }
16 |
17 | @Override
18 | default public TestAllPredicate or(Predicate super T> other) {
19 | Objects.requireNonNull(other);
20 | return (t) -> {
21 | boolean result1 = test(t);
22 | boolean result2 = other.test(t);
23 | return result1 || result2;
24 | };
25 | }
26 | }
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/Useitem.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import javax.json.JsonObject;
6 |
7 | import logbook.internal.JsonHelper;
8 | import lombok.Data;
9 |
10 | /**
11 | * api_mst_useitem
12 | */
13 | @Data
14 | public class Useitem implements Serializable {
15 |
16 | private static final long serialVersionUID = -3290324243327123224L;
17 |
18 | /** api_id */
19 | private Integer id;
20 |
21 | /** api_name */
22 | private String name;
23 |
24 | @Override
25 | public String toString() {
26 | return this.name;
27 | }
28 |
29 | /**
30 | * JsonObjectから{@link Useitem}を構築します
31 | *
32 | * @param json JsonObject
33 | * @return {@link Useitem}
34 | */
35 | public static Useitem toMission(JsonObject json) {
36 | Useitem bean = new Useitem();
37 | JsonHelper.bind(json)
38 | .setInteger("api_id", bean::setId)
39 | .setString("api_name", bean::setName);
40 | return bean;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/UseitemCollection.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.LinkedHashMap;
5 | import java.util.Map;
6 |
7 | import logbook.internal.Config;
8 | import lombok.Data;
9 |
10 | /**
11 | * アイテムのコレクション
12 | *
13 | */
14 | @Data
15 | public class UseitemCollection implements Serializable {
16 |
17 | private static final long serialVersionUID = -3813660780247992556L;
18 |
19 | /** アイテム */
20 | private Map useitemMap = new LinkedHashMap<>();
21 |
22 | /**
23 | * アプリケーションのデフォルト設定ディレクトリから{@link UseitemCollection}を取得します、
24 | * これは次の記述と同等です
25 | *
26 | * Config.getDefault().get(UseitemCollection.class, UseitemCollection::new)
27 | *
28 | *
29 | * @return {@link UseitemCollection}
30 | */
31 | public static UseitemCollection get() {
32 | return Config.getDefault().get(UseitemCollection.class, UseitemCollection::new);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/bean/WindowLocation.java:
--------------------------------------------------------------------------------
1 | package logbook.bean;
2 |
3 | import java.io.Serializable;
4 |
5 | import lombok.Data;
6 |
7 | /**
8 | * ウインドウの位置とサイズ
9 | *
10 | */
11 | @Data
12 | public class WindowLocation implements Serializable {
13 |
14 | private static final long serialVersionUID = 3548270453031293618L;
15 |
16 | /** X */
17 | private double x;
18 |
19 | /** Y */
20 | private double y;
21 |
22 | /** Width */
23 | private double width;
24 |
25 | /** Height */
26 | private double height;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/CheckUpdateStartUp.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import logbook.bean.AppConfig;
4 | import logbook.plugin.lifecycle.StartUp;
5 |
6 | /**
7 | * アップデートチェック
8 | *
9 | */
10 | public class CheckUpdateStartUp implements StartUp {
11 |
12 | @Override
13 | public void run() {
14 | if (!AppConfig.get().isCheckUpdate()) {
15 | return;
16 | }
17 |
18 | CheckUpdate.run(true);
19 | }
20 | }
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/ComparableFilter.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.util.function.Function;
4 | import java.util.function.Predicate;
5 |
6 | import lombok.Builder;
7 |
8 | @Builder
9 | /**
10 | * 任意の Comparable
なパラメータによるフィルター
11 | *
12 | * @param 比較するパラメータを持っているクラス
13 | * @param 比較するパラメータの型
14 | */
15 | public class ComparableFilter> implements Predicate {
16 | /** ShipItem からパラメータに変換する mapper */
17 | private Function mapper;
18 | /** 比較対象の値 */
19 | private T value;
20 | /** 演算子 */
21 | private Operator type;
22 |
23 | @Override
24 | public boolean test(S obj) {
25 | if (obj == null) {
26 | return false;
27 | }
28 | return this.type.compare(this.mapper.apply(obj), this.value);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/Logs.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.time.ZoneId;
4 | import java.time.ZonedDateTime;
5 | import java.time.format.DateTimeFormatter;
6 |
7 | /**
8 | * ログの表示、書き込みで使用する
9 | *
10 | */
11 | public final class Logs {
12 |
13 | /** 日付書式 */
14 | public static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
15 |
16 | /**
17 | * タイムゾーンをJSTとして現在の日付/時間を取得します
18 | *
19 | * @return 現在の日付/時間
20 | */
21 | public static ZonedDateTime now() {
22 | return ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
23 | }
24 |
25 | /**
26 | * タイムゾーンをJSTとして現在の日付/時間を"yyyy-MM-dd HH:mm:ss"形式の文字列として取得します
27 | *
28 | * @return 現在の日付/時間
29 | */
30 | public static String nowString() {
31 | return DATE_FORMAT.format(now());
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/Rank.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | /**
4 | * ランク
5 | *
6 | */
7 | public enum Rank {
8 |
9 | S完全勝利("S完全勝利", 1.2d),
10 | S勝利("S勝利", 1.2d),
11 | A勝利("A勝利", 1.0d),
12 | B戦術的勝利("B戦術的勝利", 1.0d),
13 | C戦術的敗北("C戦術的敗北", 0.8d),
14 | D敗北("D敗北", 0.7d),
15 | E敗北("E敗北", 0.5d);
16 |
17 | /** 名前 */
18 | private String name;
19 |
20 | /** 経験値倍率 */
21 | private double ratio;
22 |
23 | Rank(String name, double ratio) {
24 | this.name = name;
25 | this.ratio = ratio;
26 | }
27 |
28 | /**
29 | * 名前を取得します。
30 | * @return 名前
31 | */
32 | public String getName() {
33 | return this.name;
34 | }
35 |
36 | /**
37 | * 経験値倍率を取得します。
38 | * @return 経験値倍率
39 | */
40 | public double getRatio() {
41 | return this.ratio;
42 | }
43 |
44 | @Override
45 | public String toString() {
46 | return this.name;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/SeaArea.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.util.stream.Stream;
4 |
5 | /**
6 | * 海域
7 | *
8 | */
9 | public enum SeaArea {
10 |
11 | 識別札1("千島方面部隊", 1),
12 | 識別札2("沖縄方面部隊", 2),
13 | 識別札3("第二遊撃部隊", 3),
14 | 識別札4("小笠原方面部隊", 4),
15 | 識別札5("南東方面部隊", 5),
16 | 識別札6("第二艦隊", 6),
17 | 識別札7("前進部隊", 7),
18 | 識別札8("機動部隊前衛", 8),
19 | 識別札9("機動部隊", 9),
20 | 識別札10("識別札10", 10);
21 |
22 | /** 名前 */
23 | private String name;
24 |
25 | /** 海域(イベント海域のお札) */
26 | private int area;
27 |
28 | SeaArea(String name, int area) {
29 | this.name = name;
30 | this.area = area;
31 | }
32 |
33 | /**
34 | * 名前を取得します。
35 | * @return 名前
36 | */
37 | public String getName() {
38 | return this.name;
39 | }
40 |
41 | /**
42 | * 海域(イベント海域のお札)を取得します。
43 | * @return 海域(イベント海域のお札)
44 | */
45 | public int getArea() {
46 | return this.area;
47 | }
48 |
49 | @Override
50 | public String toString() {
51 | return this.name;
52 | }
53 |
54 | /**
55 | * イベント海域を取得します
56 | *
57 | * @param area お札
58 | * @return 海域
59 | */
60 | public static SeaArea fromArea(int area) {
61 | return Stream.of(SeaArea.values()).filter(s -> s.getArea() == area).findAny().orElse(null);
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/ShipImageCacheStrategy.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.util.Arrays;
4 | import java.util.Collections;
5 | import java.util.List;
6 |
7 | /**
8 | * 画像キャッシュ設定
9 | *
10 | */
11 | public enum ShipImageCacheStrategy {
12 | /** 全て */
13 | ALL,
14 | /** 使用される画像のみ */
15 | USED("1.jpg", "1.png", "3.jpg", "3.png"),
16 | /** 制限 */
17 | LIMIT("1.jpg", "1.png");
18 |
19 | private List names;
20 |
21 | private ShipImageCacheStrategy() {
22 | this.names = null;
23 | }
24 |
25 | private ShipImageCacheStrategy(String... names) {
26 | this.names = Collections.unmodifiableList(Arrays.asList(names));
27 | }
28 |
29 | public List getFileNames() {
30 | return this.names;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/ShipTypeGroup.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.util.Arrays;
4 | import java.util.Collections;
5 | import java.util.List;
6 |
7 | /**
8 | * 艦種グループ
9 | *
10 | */
11 | public enum ShipTypeGroup {
12 |
13 | 海防艦("海防艦"),
14 | 駆逐艦("駆逐艦"),
15 | 巡洋艦("軽巡洋艦", "重雷装巡洋艦", "重巡洋艦", "航空巡洋艦", "練習巡洋艦"),
16 | 空母("軽空母", "正規空母", "装甲空母"),
17 | 戦艦("戦艦", "航空戦艦"),
18 | 潜水艦("潜水艦", "潜水空母"),
19 | 水上機母艦("水上機母艦"),
20 | 揚陸艦("揚陸艦"),
21 | 工作艦("工作艦"),
22 | 潜水母艦("潜水母艦"),
23 | 補給艦("補給艦");
24 |
25 | private String[] group;
26 |
27 | private ShipTypeGroup(String... shipTypes) {
28 | this.group = shipTypes;
29 | }
30 |
31 | public List shipTypes() {
32 | return Collections.unmodifiableList(Arrays.asList(this.group));
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/ThreadManager.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.util.concurrent.Executors;
4 | import java.util.concurrent.ScheduledExecutorService;
5 |
6 | /**
7 | * スレッドを管理します
8 | *
9 | */
10 | public final class ThreadManager {
11 |
12 | /** Executor */
13 | private static final ScheduledExecutorService EXECUTOR = Executors.newScheduledThreadPool(4);
14 |
15 | /**
16 | * アプリケーションで共有するExecutorService
17 | *
18 | * 長時間実行する必要のあるスレッドを登録する場合、割り込みされたかを検知して適切に終了するようにしてください。
19 | *
20 | *
21 | * @return ExecutorService
22 | */
23 | public static ScheduledExecutorService getExecutorService() {
24 | return EXECUTOR;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/Time.java:
--------------------------------------------------------------------------------
1 | package logbook.internal;
2 |
3 | import java.time.Duration;
4 | import java.util.concurrent.TimeUnit;
5 |
6 | public class Time {
7 |
8 | /**
9 | * 時間のテキスト表現
10 | *
11 | * @param d 期間
12 | * @param message {@code Duration}が0または負の場合のテキスト
13 | * @return 時間のテキスト表現
14 | */
15 | public static String toString(Duration d, String message) {
16 | if (d.isZero() || d.isNegative()) {
17 | return message;
18 | }
19 | // Durationの秒未満を切り上げた秒数
20 | long duration = d.getSeconds() + Math.min(1, d.getNano());
21 |
22 | long days = TimeUnit.SECONDS.toDays(duration);
23 | long hours = TimeUnit.SECONDS.toHours(duration) % 24;
24 | long minutes = TimeUnit.SECONDS.toMinutes(duration) % 60;
25 | long seconds = duration % 60;
26 |
27 | StringBuilder sb = new StringBuilder();
28 | if (days > 0) {
29 | sb.append(days + "日");
30 | }
31 | if (hours > 0) {
32 | sb.append(hours + "時間");
33 | }
34 | if (minutes > 0) {
35 | sb.append(minutes + "分");
36 | }
37 | if (seconds > 0 && days == 0 && hours == 0) {
38 | sb.append(seconds + "秒");
39 | }
40 | return sb.toString();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/gui/ItemController.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.gui;
2 |
3 | import javafx.fxml.FXML;
4 | import javafx.scene.control.TabPane;
5 | import javafx.stage.Stage;
6 | import logbook.bean.AppItemTableConfig;
7 |
8 | /**
9 | * 所有装備一覧のUIコントローラー(親)
10 | *
11 | */
12 | public class ItemController extends WindowController {
13 | @FXML
14 | private TabPane tab;
15 |
16 | @FXML
17 | private ItemItemController itemController;
18 |
19 | @FXML
20 | private ItemAirBaseController airbaseController;
21 |
22 | @FXML
23 | void initialize() {
24 | this.tab.getSelectionModel().select(AppItemTableConfig.get().getTabIndex());
25 | this.tab.getSelectionModel().selectedIndexProperty().addListener((ob, o, n) -> AppItemTableConfig.get().setTabIndex(n.intValue()));
26 | }
27 |
28 | @Override
29 | public void setWindow(Stage window) {
30 | super.setWindow(window);
31 | this.itemController.setWindow(window);
32 | this.airbaseController.setWindow(window);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/gui/ItemFilter.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.gui;
2 |
3 | import java.util.function.Predicate;
4 |
5 | import lombok.Builder;
6 |
7 | /**
8 | * 所有装備一覧のフィルター
9 | *
10 | */
11 | @FunctionalInterface
12 | public interface ItemFilter extends Predicate- {
13 |
14 | @Builder
15 | public static class DefaultFilter implements ItemFilter {
16 |
17 | /** テキスト */
18 | private boolean typeFilter;
19 |
20 | /** テキスト */
21 | private String typeValue;
22 |
23 | @Override
24 | public boolean test(Item item) {
25 | if (this.typeFilter) {
26 | if (item.typeProperty().get().contains(this.typeValue))
27 | return true;
28 | if (item.getName().contains(this.typeValue))
29 | return true;
30 |
31 | return false;
32 | }
33 | return true;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/gui/TreeTableTool.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.gui;
2 |
3 | import javafx.scene.control.TreeTableView;
4 |
5 | public class TreeTableTool {
6 | /**
7 | * テーブル列の表示・非表示の設定を行う
8 | * @param table テーブル
9 | * @param key テーブルのキー名
10 | */
11 | static void setVisible(TreeTableView> table, String key) {
12 | //Tools.Trees.setVisible(table, key); // not yet implemented
13 | Tools.Trees.setWidth(table, key);
14 | Tools.Trees.setSortOrder(table, key);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/log/LogFormat.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.log;
2 |
3 | /**
4 | * ログ情報
5 | *
6 | */
7 | public interface LogFormat {
8 |
9 | /**
10 | * ログ名を取得します。
11 | * @return ログ名
12 | */
13 | String name();
14 |
15 | /**
16 | * ファイル名を取得します。
17 | * @return ファイル名
18 | */
19 | default String fileName() {
20 | return name() + ".csv";
21 | }
22 |
23 | /**
24 | * 代替ファイル名を取得します。
25 | * @return 代替ファイル名
26 | */
27 | default String alterFileName() {
28 | return name() + "_alternativefile.csv";
29 | }
30 |
31 | /**
32 | * ヘッダーを取得します。
33 | * @return ヘッダー
34 | */
35 | String header();
36 |
37 | /**
38 | * 文字列表現を取得します。
39 | * @return 文字列表現
40 | */
41 | String format(T value);
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/log/LogFormatBase.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.log;
2 |
3 | import java.time.ZonedDateTime;
4 | import java.time.format.DateTimeFormatter;
5 |
6 | import logbook.internal.Logs;
7 |
8 | public abstract class LogFormatBase implements LogFormat {
9 |
10 | /** 日付書式 */
11 | protected static final DateTimeFormatter DATE_FORMAT = Logs.DATE_FORMAT;
12 |
13 | /**
14 | * タイムゾーンをJSTとして現在の日付/時間を取得します
15 | *
16 | * @return 現在の日付/時間
17 | */
18 | protected static ZonedDateTime now() {
19 | return Logs.now();
20 | }
21 |
22 | /**
23 | * タイムゾーンをJSTとして現在の日付/時間を"yyyy-MM-dd HH:mm:ss"形式の文字列として取得します
24 | *
25 | * @return 現在の日付/時間
26 | */
27 | protected static String nowString() {
28 | return Logs.nowString();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/proxy/CaptureHolder.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.proxy;
2 |
3 | import java.io.InputStream;
4 | import java.util.ArrayList;
5 | import java.util.Arrays;
6 | import java.util.List;
7 |
8 | public class CaptureHolder {
9 |
10 | private List req = new ArrayList<>();
11 |
12 | private List res = new ArrayList<>();
13 |
14 | public void putRequest(byte[] data) {
15 | if (this.req.size() > 0 && Arrays.equals(this.req.get(this.req.size()-1), data)) {
16 | // if the data is the same as the last one in this.req array, no need to add this to req as it is duplicated
17 | return;
18 | }
19 | this.req.add(data);
20 | }
21 |
22 | public InputStream getRequest() {
23 | return new ByteArrayInputStream2(this.req);
24 | }
25 |
26 | public void putResponse(byte[] data) {
27 | this.res.add(data);
28 | }
29 |
30 | public InputStream getResponse() {
31 | return new ByteArrayInputStream2(this.res);
32 | }
33 |
34 | public void clear() {
35 | this.req = null;
36 | this.res = null;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/proxy/Filter.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.proxy;
2 |
3 | /**
4 | * 動作に必要なデータのみ取得するためのフィルターです。
5 | *
6 | */
7 | public class Filter {
8 |
9 | /** キャプチャーするリクエストのバイトサイズ上限 */
10 | public static final int MAX_POST_FIELD_SIZE = 1024 * 1024 * 12;
11 |
12 | /** setAttribute用のキー(CaptureHolder) */
13 | public static final String CONTENT_HOLDER = "logbook.content-holder";
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/proxy/ProxyHolder.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.proxy;
2 |
3 | import java.util.List;
4 | import java.util.stream.Collectors;
5 |
6 | import logbook.internal.LoggerHolder;
7 | import logbook.plugin.PluginServices;
8 | import logbook.proxy.ProxyServerSpi;
9 |
10 | /**
11 | * プロキシサーバースレッドを保持します
12 | *
13 | */
14 | public class ProxyHolder {
15 |
16 | private static final Thread SERVER;
17 |
18 | static {
19 | Thread thread = null;
20 | try {
21 | List proxies = PluginServices.instances(ProxyServerSpi.class)
22 | .collect(Collectors.toList());
23 | ProxyServerSpi impl = null;
24 | for (ProxyServerSpi proxy : proxies) {
25 | // プラグインのプロキシサーバーを優先する
26 | if (impl == null || !(proxy instanceof logbook.internal.proxy.ProxyServerImpl)) {
27 | impl = proxy;
28 | }
29 | }
30 | thread = new Thread(impl);
31 | thread.setDaemon(true);
32 | } catch (Exception e) {
33 | LoggerHolder.get().error("プロキシサーバーの初期化中に例外", e);
34 | }
35 | SERVER = thread;
36 | }
37 |
38 | /**
39 | * リバースプロキシスレッド を取得します
40 | * @return リバースプロキシ スレッドインスタンス
41 | */
42 | public static Thread getInstance() {
43 | return SERVER;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/logbook/internal/proxy/RequestContentListener.java:
--------------------------------------------------------------------------------
1 | package logbook.internal.proxy;
2 |
3 | import java.nio.ByteBuffer;
4 |
5 | import javax.servlet.http.HttpServletRequest;
6 |
7 | import org.eclipse.jetty.client.api.Request;
8 | import org.eclipse.jetty.client.api.Request.ContentListener;
9 |
10 | /**
11 | * リクエストをキャプチャします
12 | *
13 | */
14 | public final class RequestContentListener implements ContentListener {
15 |
16 | private final HttpServletRequest httpRequest;
17 |
18 | /**
19 | * @param request {@link HttpServletRequest}
20 | */
21 | public RequestContentListener(HttpServletRequest request) {
22 | this.httpRequest = request;
23 | }
24 |
25 | /*
26 | * 必要なPOSTデータの場合キャプチャします
27 | */
28 | @Override
29 | public void onContent(Request request, ByteBuffer buffer) {
30 | int length = buffer.remaining();
31 |
32 | if (((length > 0) && (length <= Filter.MAX_POST_FIELD_SIZE))) {
33 | byte[] bytes = new byte[length];
34 | buffer.get(bytes);
35 |
36 | CaptureHolder holder = (CaptureHolder) this.httpRequest.getAttribute(Filter.CONTENT_HOLDER);
37 | if (holder == null) {
38 | holder = new CaptureHolder();
39 | this.httpRequest.setAttribute(Filter.CONTENT_HOLDER, holder);
40 | }
41 | holder.putRequest(bytes);
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/logbook/plugin/gui/FleetTabRemark.java:
--------------------------------------------------------------------------------
1 | package logbook.plugin.gui;
2 |
3 | import logbook.bean.DeckPort;
4 |
5 | /**
6 | * 艦隊タブの注釈に追加するプラグインのインターフェイス
7 | * {@link #getContent()}の戻りの型は{@link javafx.scene.Node}またはtoStringメソッド
8 | * によって表現可能である必要があります。
9 | *
10 | */
11 | public interface FleetTabRemark extends Plugin> {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/logbook/plugin/gui/MainCalcMenu.java:
--------------------------------------------------------------------------------
1 | package logbook.plugin.gui;
2 |
3 | import javafx.scene.control.MenuItem;
4 |
5 | /**
6 | * メイン画面の計算機メニューに追加するプラグインのインターフェイス
7 | *
8 | */
9 | public interface MainCalcMenu extends Plugin