├── .gitattributes ├── .gitignore ├── .gitmodules ├── BrowserLib ├── BrowserLib.csproj ├── IBrowser.cs ├── IBrowserHost.cs ├── PipeCommunicator.cs ├── Properties │ └── AssemblyInfo.cs └── VolumeManager.cs ├── ElectronicObserver.sln ├── ElectronicObserver ├── 74eo.ico ├── App.config ├── Assets.zip ├── Assets │ ├── AppIcon.ico │ ├── AppIcon_16.png │ ├── AppIcon_32.png │ ├── AppIcon_48.png │ ├── AppIcon_64.png │ ├── Battle │ │ ├── FormationEnemy01.png │ │ ├── FormationEnemy02.png │ │ ├── FormationEnemy03.png │ │ ├── FormationEnemy04.png │ │ └── FormationEnemy05.png │ ├── Browser │ │ ├── Mute.png │ │ ├── Navigate.png │ │ ├── Other.png │ │ ├── Refresh.png │ │ ├── ScreenShot.png │ │ ├── Unmute.png │ │ ├── Zoom.png │ │ ├── ZoomIn.png │ │ └── ZoomOut.png │ ├── Condition │ │ ├── LittleTired.png │ │ ├── Normal.png │ │ ├── Sparkle.png │ │ ├── Tired.png │ │ └── VeryTired.png │ ├── Equipment │ │ ├── AADirector.png │ │ ├── AAGun.png │ │ ├── AAShell.png │ │ ├── APShell.png │ │ ├── ASPatrol.png │ │ ├── AmphibiousVehicle.png │ │ ├── ArmyInterceptor.png │ │ ├── Autogyro.png │ │ ├── Bulge.png │ │ ├── CarrierBasedAircraft.png │ │ ├── CarrierBasedBomber.png │ │ ├── CarrierBasedFighter.png │ │ ├── CarrierBasedRecon.png │ │ ├── CarrierBasedTorpedo.png │ │ ├── CommandFacility.png │ │ ├── DamageControl.png │ │ ├── DepthCharge.png │ │ ├── DrumCanister.png │ │ ├── Engine.png │ │ ├── Flare.png │ │ ├── FlyingBoat.png │ │ ├── HighAngleGun.png │ │ ├── Interceptor.png │ │ ├── JetFightingBomberKeiun.png │ │ ├── JetFightingBomberKikka.png │ │ ├── LandASPatrol.png │ │ ├── LandAttacker.png │ │ ├── LandingCraft.png │ │ ├── Locked.png │ │ ├── MainGunL.png │ │ ├── MainGunM.png │ │ ├── MainGunS.png │ │ ├── MaintenanceTeam.png │ │ ├── NightAttacker.png │ │ ├── NightFighter.png │ │ ├── Nothing.png │ │ ├── PicketCrew.png │ │ ├── RADAR.png │ │ ├── Ration.png │ │ ├── RepairFacility.png │ │ ├── RocketArtillery.png │ │ ├── SONAR.png │ │ ├── Seaplane.png │ │ ├── SeaplaneFighter.png │ │ ├── Searchlight.png │ │ ├── SecondaryGun.png │ │ ├── SubmarineEquipment.png │ │ ├── Supplies.png │ │ ├── Torpedo.png │ │ ├── TransportMaterials.png │ │ └── Unknown.png │ ├── Fairy │ │ ├── Fairy1.png │ │ ├── Fairy2.png │ │ ├── Fairy3.png │ │ └── Fairy4.png │ ├── Fleet │ │ ├── AnchorageRepairing.png │ │ ├── Combined.png │ │ ├── Damaged.png │ │ ├── Docking.png │ │ ├── Expedition.png │ │ ├── NoShip.png │ │ ├── NotReplenished.png │ │ ├── Ready.png │ │ ├── Sortie.png │ │ └── SortieDamaged.png │ ├── Form │ │ ├── AlbumEquipment.png │ │ ├── AlbumShip.png │ │ ├── AntiAirDefense.png │ │ ├── Arsenal.png │ │ ├── BaseAirCorps.png │ │ ├── Battle.png │ │ ├── Browser.png │ │ ├── Compass.png │ │ ├── Configuration.png │ │ ├── ConstructionRecord.png │ │ ├── DevelopmentRecord.png │ │ ├── Dock.png │ │ ├── DropRecord.png │ │ ├── EquipmentList.png │ │ ├── Fleet.png │ │ ├── FleetImageGenerator.png │ │ ├── Headquarters.png │ │ ├── Information.png │ │ ├── Json.png │ │ ├── Log.png │ │ ├── Main.png │ │ ├── Quest.png │ │ ├── ResourceChart.png │ │ ├── ShipGroup.png │ │ └── WindowCapture.png │ ├── Headquarters │ │ ├── Equipment.png │ │ └── Ship.png │ ├── Item │ │ ├── ActionReport.png │ │ ├── Blueprint.png │ │ ├── Catapult.png │ │ ├── DevelopmentMaterial.png │ │ ├── FurnitureCoin.png │ │ ├── InstantConstruction.png │ │ ├── InstantRepair.png │ │ ├── ModdingMaterial.png │ │ └── PresentBox.png │ ├── Level │ │ ├── AircraftLevel0.png │ │ ├── AircraftLevel1.png │ │ ├── AircraftLevel2.png │ │ ├── AircraftLevel3.png │ │ ├── AircraftLevel4.png │ │ ├── AircraftLevel5.png │ │ ├── AircraftLevel6.png │ │ ├── AircraftLevel7.png │ │ ├── AircraftLevelTop0.png │ │ ├── AircraftLevelTop1.png │ │ ├── AircraftLevelTop2.png │ │ ├── AircraftLevelTop3.png │ │ ├── AircraftLevelTop4.png │ │ ├── AircraftLevelTop5.png │ │ ├── AircraftLevelTop6.png │ │ └── AircraftLevelTop7.png │ ├── Nothing.png │ ├── Parameter │ │ ├── AA.png │ │ ├── ASW.png │ │ ├── Accuracy.png │ │ ├── Aircraft.png │ │ ├── AircraftCost.png │ │ ├── AircraftDistance.png │ │ ├── Armor.png │ │ ├── Bomber.png │ │ ├── Evasion.png │ │ ├── Firepower.png │ │ ├── HP.png │ │ ├── LOS.png │ │ ├── Luck.png │ │ ├── Range.png │ │ ├── Speed.png │ │ └── Torpedo.png │ ├── Rarity │ │ ├── Black.png │ │ ├── BlueA.png │ │ ├── BlueB.png │ │ ├── BlueC.png │ │ ├── Cherry.png │ │ ├── Gold.png │ │ ├── HoloA.png │ │ ├── HoloB.png │ │ ├── Red.png │ │ └── Silver.png │ ├── Record │ │ ├── EnemyFleetRecord.csv │ │ └── ShipParameterRecord.csv │ ├── Resource │ │ ├── Ammo.png │ │ ├── Bauxite.png │ │ ├── Fuel.png │ │ └── Steel.png │ ├── Settings │ │ └── ShipGroups.xml │ └── Unused │ │ ├── Other.png │ │ ├── Resource │ │ ├── ammo_empty.png │ │ ├── ammo_low.png │ │ ├── bauxite_empty.png │ │ ├── bauxite_low.png │ │ ├── fuel_empty.png │ │ ├── fuel_low.png │ │ ├── steel_empty.png │ │ └── steel_low.png │ │ └── ShipState │ │ ├── damageL.png │ │ ├── damageM.png │ │ ├── damageS.png │ │ ├── escape.png │ │ ├── expedition.png │ │ ├── repair.png │ │ └── sunk.png ├── Data │ ├── APIWrapper.cs │ ├── AdmiralData.cs │ ├── ArsenalData.cs │ ├── BaseAirCorpsData.cs │ ├── BaseAirCorpsSquadron.cs │ ├── Battle │ │ ├── BattleAirBattle.cs │ │ ├── BattleAirRaid.cs │ │ ├── BattleBaseAirRaid.cs │ │ ├── BattleCombinedAirBattle.cs │ │ ├── BattleCombinedAirRaid.cs │ │ ├── BattleCombinedEachDay.cs │ │ ├── BattleCombinedEachWater.cs │ │ ├── BattleCombinedNightOnly.cs │ │ ├── BattleCombinedNormalDay.cs │ │ ├── BattleCombinedNormalNight.cs │ │ ├── BattleCombinedWater.cs │ │ ├── BattleData.cs │ │ ├── BattleDay.cs │ │ ├── BattleDayFromNight.cs │ │ ├── BattleEnemyCombinedDay.cs │ │ ├── BattleEnemyCombinedDayFromNight.cs │ │ ├── BattleEnemyCombinedNight.cs │ │ ├── BattleIndex.cs │ │ ├── BattleManager.cs │ │ ├── BattleNight.cs │ │ ├── BattleNightOnly.cs │ │ ├── BattleNormalDay.cs │ │ ├── BattleNormalDayFromNight.cs │ │ ├── BattleNormalNight.cs │ │ ├── BattlePracticeDay.cs │ │ ├── BattlePracticeNight.cs │ │ ├── BattleResultData.cs │ │ ├── Detail │ │ │ ├── BattleDetail.cs │ │ │ └── BattleDetailDescriptor.cs │ │ └── Phase │ │ │ ├── PhaseAirBattle.cs │ │ │ ├── PhaseAirBattleBase.cs │ │ │ ├── PhaseBase.cs │ │ │ ├── PhaseBaseAirAttack.cs │ │ │ ├── PhaseBaseAirRaid.cs │ │ │ ├── PhaseInitial.cs │ │ │ ├── PhaseJetAirBattle.cs │ │ │ ├── PhaseJetBaseAirAttack.cs │ │ │ ├── PhaseNightBattle.cs │ │ │ ├── PhaseOpeningASW.cs │ │ │ ├── PhaseSearching.cs │ │ │ ├── PhaseShelling.cs │ │ │ ├── PhaseSupport.cs │ │ │ └── PhaseTorpedo.cs │ ├── CompassData.cs │ ├── Constants.cs │ ├── DockData.cs │ ├── EquipmentData.cs │ ├── EquipmentDataMaster.cs │ ├── EquipmentType.cs │ ├── EquipmentTypes.cs │ ├── FleetData.cs │ ├── FleetManager.cs │ ├── IDDictionary.cs │ ├── IIdentifiable.cs │ ├── KCDatabase.cs │ ├── MapAreaData.cs │ ├── MapInfoData.cs │ ├── MaterialData.cs │ ├── MissionData.cs │ ├── Quest │ │ ├── ProgressAGo.cs │ │ ├── ProgressBattle.cs │ │ ├── ProgressConstruction.cs │ │ ├── ProgressData.cs │ │ ├── ProgressDestruction.cs │ │ ├── ProgressDevelopment.cs │ │ ├── ProgressDiscard.cs │ │ ├── ProgressDocking.cs │ │ ├── ProgressExpedition.cs │ │ ├── ProgressImprovement.cs │ │ ├── ProgressModernization.cs │ │ ├── ProgressMultiBattle.cs │ │ ├── ProgressMultiDiscard.cs │ │ ├── ProgressPractice.cs │ │ ├── ProgressSlaughter.cs │ │ ├── ProgressSupply.cs │ │ └── QuestProgressManager.cs │ ├── QuestData.cs │ ├── QuestManager.cs │ ├── QuestRewards.cs │ ├── RelocationData.cs │ ├── ResponseWrapper.cs │ ├── ShipData.cs │ ├── ShipDataMaster.cs │ ├── ShipGroup │ │ ├── ExpressionData.cs │ │ ├── ExpressionList.cs │ │ └── ExpressionManager.cs │ ├── ShipGroupData.cs │ ├── ShipGroupManager.cs │ ├── ShipOrders.cs │ ├── ShipType.cs │ ├── ShipTypes.cs │ ├── UseItem.cs │ └── UseItemMaster.cs ├── ElectronicObserver.csproj ├── Notifier │ ├── NotifierAnchorageRepair.cs │ ├── NotifierBase.cs │ ├── NotifierCondition.cs │ ├── NotifierConstruction.cs │ ├── NotifierDamage.cs │ ├── NotifierDialogData.cs │ ├── NotifierExpedition.cs │ ├── NotifierManager.cs │ └── NotifierRepair.cs ├── Observer │ ├── APIBase.cs │ ├── APIDictionary.cs │ ├── APIObserver.cs │ └── kcsapi │ │ ├── api_get_member │ │ ├── base_air_corps.cs │ │ ├── basic.cs │ │ ├── deck.cs │ │ ├── kdock.cs │ │ ├── mapinfo.cs │ │ ├── material.cs │ │ ├── ndock.cs │ │ ├── payitem.cs │ │ ├── picture_book.cs │ │ ├── questlist.cs │ │ ├── record.cs │ │ ├── require_info.cs │ │ ├── ship2.cs │ │ ├── ship3.cs │ │ ├── ship_deck.cs │ │ ├── slot_item.cs │ │ ├── sortie_conditions.cs │ │ └── useitem.cs │ │ ├── api_port │ │ └── port.cs │ │ ├── api_req_air_corps │ │ ├── change_name.cs │ │ ├── expand_base.cs │ │ ├── set_action.cs │ │ ├── set_plane.cs │ │ └── supply.cs │ │ ├── api_req_battle_midnight │ │ ├── battle.cs │ │ └── sp_midnight.cs │ │ ├── api_req_combined_battle │ │ ├── airbattle.cs │ │ ├── battle.cs │ │ ├── battle_water.cs │ │ ├── battleresult.cs │ │ ├── each_battle.cs │ │ ├── each_battle_water.cs │ │ ├── ec_battle.cs │ │ ├── ec_midnight_battle.cs │ │ ├── ec_night_to_day.cs │ │ ├── goback_port.cs │ │ ├── ld_airbattle.cs │ │ ├── midnight_battle.cs │ │ └── sp_midnight.cs │ │ ├── api_req_hensei │ │ ├── change.cs │ │ ├── combined.cs │ │ └── preset_select.cs │ │ ├── api_req_hokyu │ │ └── charge.cs │ │ ├── api_req_kaisou │ │ ├── marriage.cs │ │ ├── open_exslot.cs │ │ ├── powerup.cs │ │ ├── remodeling.cs │ │ ├── slot_deprive.cs │ │ └── slot_exchange_index.cs │ │ ├── api_req_kousyou │ │ ├── createitem.cs │ │ ├── createship.cs │ │ ├── createship_speedchange.cs │ │ ├── destroyitem2.cs │ │ ├── destroyship.cs │ │ ├── getship.cs │ │ ├── remodel_slot.cs │ │ └── remodel_slotlist.cs │ │ ├── api_req_map │ │ ├── next.cs │ │ ├── select_eventmap_rank.cs │ │ └── start.cs │ │ ├── api_req_member │ │ ├── get_practice_enemyinfo.cs │ │ ├── updatecomment.cs │ │ └── updatedeckname.cs │ │ ├── api_req_mission │ │ ├── result.cs │ │ └── start.cs │ │ ├── api_req_nyukyo │ │ ├── speedchange.cs │ │ └── start.cs │ │ ├── api_req_practice │ │ ├── battle.cs │ │ ├── battle_result.cs │ │ └── midnight_battle.cs │ │ ├── api_req_quest │ │ ├── clearitemget.cs │ │ └── stop.cs │ │ ├── api_req_ranking │ │ └── getlist.cs │ │ ├── api_req_sortie │ │ ├── airbattle.cs │ │ ├── battle.cs │ │ ├── battleresult.cs │ │ ├── goback_port.cs │ │ ├── ld_airbattle.cs │ │ └── night_to_day.cs │ │ ├── api_start2.cs │ │ └── api_start2 │ │ └── getData.cs ├── Other │ └── Information │ │ ├── apilist.txt │ │ └── kcmemo.md ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resource │ ├── Record │ │ ├── ConstructionRecord.cs │ │ ├── DevelopmentRecord.cs │ │ ├── EnemyFleetRecord.cs │ │ ├── RecordBase.cs │ │ ├── RecordManager.cs │ │ ├── ResourceRecord.cs │ │ ├── ShipDropRecord.cs │ │ └── ShipParameterRecord.cs │ ├── ResourceManager.cs │ └── SwfHelper.cs ├── Settings │ ├── ColorScheme.Solarized.json │ └── ColorScheme.example.json ├── Utility │ ├── Configuration.cs │ ├── Data │ │ ├── Calculator.cs │ │ ├── ExpTable.cs │ │ └── RecordHash.cs │ ├── ErrorReporter.cs │ ├── FleetImageGenerator.cs │ ├── Logger.cs │ ├── Mathematics │ │ ├── DateTimeHelper.cs │ │ └── Fraction.cs │ ├── MediaPlayer.cs │ ├── PathHelper.cs │ ├── SoftwareInformation.cs │ ├── Storage │ │ ├── DataStorage.cs │ │ ├── SerializableColor.cs │ │ ├── SerializableFont.cs │ │ ├── SerializableKeyValuePair.cs │ │ └── SerializableList.cs │ ├── SyncBGMPlayer.cs │ ├── SystemEvents.cs │ └── WinAPI.cs ├── Window │ ├── Control │ │ ├── FleetState.Designer.cs │ │ ├── FleetState.cs │ │ ├── FleetState.resx │ │ ├── ImageLabel.Designer.cs │ │ ├── ImageLabel.cs │ │ ├── ImageLabel.resx │ │ ├── ShipStatusEquipment.Designer.cs │ │ ├── ShipStatusEquipment.cs │ │ ├── ShipStatusEquipment.resx │ │ ├── ShipStatusHP.Designer.cs │ │ ├── ShipStatusHP.cs │ │ ├── ShipStatusHP.resx │ │ ├── ShipStatusLevel.Designer.cs │ │ ├── ShipStatusLevel.cs │ │ ├── ShipStatusLevel.resx │ │ ├── ShipStatusResource.Designer.cs │ │ ├── ShipStatusResource.cs │ │ ├── ShipStatusResource.resx │ │ ├── StatusBarModule.cs │ │ ├── WindowCaptureButton.Designer.cs │ │ ├── WindowCaptureButton.cs │ │ └── WindowCaptureButton.resx │ ├── Dialog │ │ ├── DialogAlbumMasterEquipment.Designer.cs │ │ ├── DialogAlbumMasterEquipment.cs │ │ ├── DialogAlbumMasterEquipment.resx │ │ ├── DialogAlbumMasterShip.Designer.cs │ │ ├── DialogAlbumMasterShip.cs │ │ ├── DialogAlbumMasterShip.resx │ │ ├── DialogAlbumShipParameter.Designer.cs │ │ ├── DialogAlbumShipParameter.cs │ │ ├── DialogAlbumShipParameter.resx │ │ ├── DialogAntiAirDefense.Designer.cs │ │ ├── DialogAntiAirDefense.cs │ │ ├── DialogAntiAirDefense.resx │ │ ├── DialogBaseAirCorpsSimulation.Designer.cs │ │ ├── DialogBaseAirCorpsSimulation.cs │ │ ├── DialogBaseAirCorpsSimulation.resx │ │ ├── DialogBattleDetail.Designer.cs │ │ ├── DialogBattleDetail.cs │ │ ├── DialogBattleDetail.resx │ │ ├── DialogConfiguration.Designer.cs │ │ ├── DialogConfiguration.cs │ │ ├── DialogConfiguration.resx │ │ ├── DialogConfigurationBGMPlayer.Designer.cs │ │ ├── DialogConfigurationBGMPlayer.cs │ │ ├── DialogConfigurationBGMPlayer.resx │ │ ├── DialogConfigurationNotifier.Designer.cs │ │ ├── DialogConfigurationNotifier.cs │ │ ├── DialogConfigurationNotifier.resx │ │ ├── DialogConstructionRecordViewer.Designer.cs │ │ ├── DialogConstructionRecordViewer.cs │ │ ├── DialogConstructionRecordViewer.resx │ │ ├── DialogDevelopmentRecordViewer.Designer.cs │ │ ├── DialogDevelopmentRecordViewer.cs │ │ ├── DialogDevelopmentRecordViewer.resx │ │ ├── DialogDropRecordViewer.Designer.cs │ │ ├── DialogDropRecordViewer.cs │ │ ├── DialogDropRecordViewer.resx │ │ ├── DialogEquipmentList.Designer.cs │ │ ├── DialogEquipmentList.cs │ │ ├── DialogEquipmentList.resx │ │ ├── DialogFleetImageGenerator.Designer.cs │ │ ├── DialogFleetImageGenerator.cs │ │ ├── DialogFleetImageGenerator.resx │ │ ├── DialogHalloween.Designer.cs │ │ ├── DialogHalloween.cs │ │ ├── DialogHalloween.resx │ │ ├── DialogLocalAPILoader.Designer.cs │ │ ├── DialogLocalAPILoader.cs │ │ ├── DialogLocalAPILoader.resx │ │ ├── DialogLocalAPILoader2.Designer.cs │ │ ├── DialogLocalAPILoader2.cs │ │ ├── DialogLocalAPILoader2.resx │ │ ├── DialogNotifier.Designer.cs │ │ ├── DialogNotifier.cs │ │ ├── DialogNotifier.resx │ │ ├── DialogResourceChart.Designer.cs │ │ ├── DialogResourceChart.cs │ │ ├── DialogResourceChart.resx │ │ ├── DialogShipGraphicViewer.Designer.cs │ │ ├── DialogShipGraphicViewer.cs │ │ ├── DialogShipGraphicViewer.resx │ │ ├── DialogShipGroupCSVOutput.Designer.cs │ │ ├── DialogShipGroupCSVOutput.cs │ │ ├── DialogShipGroupCSVOutput.resx │ │ ├── DialogShipGroupColumnFilter.Designer.cs │ │ ├── DialogShipGroupColumnFilter.cs │ │ ├── DialogShipGroupColumnFilter.resx │ │ ├── DialogShipGroupFilter.Designer.cs │ │ ├── DialogShipGroupFilter.cs │ │ ├── DialogShipGroupFilter.resx │ │ ├── DialogShipGroupLocateShip.Designer.cs │ │ ├── DialogShipGroupLocateShip.cs │ │ ├── DialogShipGroupLocateShip.resx │ │ ├── DialogShipGroupSortOrder.Designer.cs │ │ ├── DialogShipGroupSortOrder.cs │ │ ├── DialogShipGroupSortOrder.resx │ │ ├── DialogTextInput.Designer.cs │ │ ├── DialogTextInput.cs │ │ ├── DialogTextInput.resx │ │ ├── DialogTextSelect.Designer.cs │ │ ├── DialogTextSelect.cs │ │ ├── DialogTextSelect.resx │ │ ├── DialogVersion.Designer.cs │ │ ├── DialogVersion.cs │ │ ├── DialogVersion.resx │ │ ├── DialogWhitecap.Designer.cs │ │ ├── DialogWhitecap.cs │ │ └── DialogWhitecap.resx │ ├── FormArsenal.Designer.cs │ ├── FormArsenal.cs │ ├── FormArsenal.resx │ ├── FormBaseAirCorps.Designer.cs │ ├── FormBaseAirCorps.cs │ ├── FormBaseAirCorps.resx │ ├── FormBattle.Designer.cs │ ├── FormBattle.cs │ ├── FormBattle.resx │ ├── FormBrowserHost.Designer.cs │ ├── FormBrowserHost.cs │ ├── FormBrowserHost.resx │ ├── FormCompass.Designer.cs │ ├── FormCompass.cs │ ├── FormCompass.resx │ ├── FormDock.Designer.cs │ ├── FormDock.cs │ ├── FormDock.resx │ ├── FormFleet.Designer.cs │ ├── FormFleet.cs │ ├── FormFleet.resx │ ├── FormFleetOverview.Designer.cs │ ├── FormFleetOverview.cs │ ├── FormFleetOverview.resx │ ├── FormHeadQuarters.Designer.cs │ ├── FormHeadquarters.cs │ ├── FormHeadquarters.resx │ ├── FormInformation.Designer.cs │ ├── FormInformation.cs │ ├── FormInformation.resx │ ├── FormJson.Designer.cs │ ├── FormJson.cs │ ├── FormJson.resx │ ├── FormLog.Designer.cs │ ├── FormLog.cs │ ├── FormLog.resx │ ├── FormMain.Designer.cs │ ├── FormMain.cs │ ├── FormMain.resx │ ├── FormQuest.Designer.cs │ ├── FormQuest.cs │ ├── FormQuest.resx │ ├── FormShipGroup.Designer.cs │ ├── FormShipGroup.cs │ ├── FormShipGroup.resx │ ├── FormWindowCapture.Designer.cs │ ├── FormWindowCapture.cs │ ├── FormWindowCapture.resx │ ├── Integrate │ │ ├── FormCandidate.Designer.cs │ │ ├── FormCandidate.cs │ │ ├── FormCandidate.resx │ │ ├── FormCapturing.Designer.cs │ │ ├── FormCapturing.cs │ │ ├── FormCapturing.resx │ │ ├── FormIntegrated.Designer.cs │ │ ├── FormIntegrated.cs │ │ └── FormIntegrated.resx │ └── Support │ │ ├── ControlHelper.cs │ │ ├── CustomFloatWindowFactory.cs │ │ └── WindowPlacementManager.cs └── packages.config ├── LICENSE ├── Libraries └── DynamicJson.dll ├── Licenses ├── Apache.txt ├── DockPanelSuite.txt ├── LGPL.txt ├── Ms-PL.txt ├── Nekoxy.txt └── SwfExtractor.txt ├── README.md ├── VERSION └── packages └── repositories.config /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "DockPanelSuite"] 2 | path = DockPanelSuite 3 | url = https://github.com/RadarNyan/dockpanelsuite.git 4 | branch = 74eo-rn 5 | [submodule "SwfExtractor"] 6 | path = SwfExtractor 7 | url = https://github.com/andanteyk/SwfExtractor.git 8 | [submodule "CefEOBrowser"] 9 | path = CefEOBrowser 10 | url = https://github.com/RadarNyan/CefEOBrowser 11 | -------------------------------------------------------------------------------- /BrowserLib/IBrowser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.ServiceModel; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace BrowserLib 9 | { 10 | /// 11 | /// FormBrowserのインターフェス 12 | /// WCFでプロセス間通信用 13 | /// 14 | [ServiceContract] 15 | public interface IBrowser 16 | { 17 | [OperationContract] 18 | void ConfigurationChanged(BrowserConfiguration conf); 19 | 20 | [OperationContract] 21 | void InitialAPIReceived(); 22 | 23 | [OperationContract] 24 | void SaveScreenShot(); 25 | 26 | [OperationContract] 27 | void RefreshBrowser(); 28 | 29 | [OperationContract] 30 | void ApplyZoom(); 31 | 32 | [OperationContract] 33 | void Navigate(string url); 34 | 35 | /// 36 | /// プロキシをセット 37 | /// 38 | [OperationContract] 39 | void SetProxy(string proxy); 40 | 41 | [OperationContract] 42 | void ApplyStyleSheet(); 43 | 44 | [OperationContract] 45 | void DestroyDMMreloadDialog(); 46 | 47 | [OperationContract] 48 | void CloseBrowser(); 49 | 50 | [OperationContract] 51 | void SetIconResource(byte[] canvas); 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /BrowserLib/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 6 | // アセンブリに関連付けられている情報を変更するには、 7 | // これらの属性値を変更してください。 8 | [assembly: AssemblyTitle("BrowserLib")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BrowserLib")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 18 | // 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 19 | // その型の ComVisible 属性を true に設定してください。 20 | [assembly: ComVisible(false)] 21 | 22 | // 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です 23 | [assembly: Guid("2ed42fa2-5b91-4192-8907-917dcc57a8f5")] 24 | 25 | // アセンブリのバージョン情報は、以下の 4 つの値で構成されています: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 33 | // 既定値にすることができます: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ElectronicObserver/74eo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/74eo.ico -------------------------------------------------------------------------------- /ElectronicObserver/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ElectronicObserver/Assets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets.zip -------------------------------------------------------------------------------- /ElectronicObserver/Assets/AppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/AppIcon.ico -------------------------------------------------------------------------------- /ElectronicObserver/Assets/AppIcon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/AppIcon_16.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/AppIcon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/AppIcon_32.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/AppIcon_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/AppIcon_48.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/AppIcon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/AppIcon_64.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Battle/FormationEnemy01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Battle/FormationEnemy01.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Battle/FormationEnemy02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Battle/FormationEnemy02.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Battle/FormationEnemy03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Battle/FormationEnemy03.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Battle/FormationEnemy04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Battle/FormationEnemy04.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Battle/FormationEnemy05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Battle/FormationEnemy05.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Mute.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Navigate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Navigate.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Other.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Refresh.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/ScreenShot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/ScreenShot.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Unmute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Unmute.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/Zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/Zoom.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/ZoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/ZoomIn.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Browser/ZoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Browser/ZoomOut.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Condition/LittleTired.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Condition/LittleTired.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Condition/Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Condition/Normal.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Condition/Sparkle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Condition/Sparkle.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Condition/Tired.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Condition/Tired.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Condition/VeryTired.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Condition/VeryTired.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/AADirector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/AADirector.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/AAGun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/AAGun.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/AAShell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/AAShell.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/APShell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/APShell.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/ASPatrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/ASPatrol.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/AmphibiousVehicle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/AmphibiousVehicle.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/ArmyInterceptor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/ArmyInterceptor.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Autogyro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Autogyro.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Bulge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Bulge.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CarrierBasedAircraft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CarrierBasedAircraft.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CarrierBasedBomber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CarrierBasedBomber.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CarrierBasedFighter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CarrierBasedFighter.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CarrierBasedRecon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CarrierBasedRecon.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CarrierBasedTorpedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CarrierBasedTorpedo.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/CommandFacility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/CommandFacility.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/DamageControl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/DamageControl.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/DepthCharge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/DepthCharge.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/DrumCanister.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/DrumCanister.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Engine.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Flare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Flare.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/FlyingBoat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/FlyingBoat.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/HighAngleGun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/HighAngleGun.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Interceptor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Interceptor.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/JetFightingBomberKeiun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/JetFightingBomberKeiun.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/JetFightingBomberKikka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/JetFightingBomberKikka.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/LandASPatrol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/LandASPatrol.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/LandAttacker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/LandAttacker.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/LandingCraft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/LandingCraft.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Locked.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/MainGunL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/MainGunL.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/MainGunM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/MainGunM.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/MainGunS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/MainGunS.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/MaintenanceTeam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/MaintenanceTeam.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/NightAttacker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/NightAttacker.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/NightFighter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/NightFighter.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Nothing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Nothing.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/PicketCrew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/PicketCrew.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/RADAR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/RADAR.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Ration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Ration.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/RepairFacility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/RepairFacility.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/RocketArtillery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/RocketArtillery.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/SONAR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/SONAR.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Seaplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Seaplane.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/SeaplaneFighter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/SeaplaneFighter.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Searchlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Searchlight.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/SecondaryGun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/SecondaryGun.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/SubmarineEquipment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/SubmarineEquipment.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Supplies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Supplies.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Torpedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Torpedo.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/TransportMaterials.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/TransportMaterials.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Equipment/Unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Equipment/Unknown.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fairy/Fairy1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fairy/Fairy1.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fairy/Fairy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fairy/Fairy2.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fairy/Fairy3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fairy/Fairy3.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fairy/Fairy4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fairy/Fairy4.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/AnchorageRepairing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/AnchorageRepairing.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Combined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Combined.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Damaged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Damaged.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Docking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Docking.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Expedition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Expedition.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/NoShip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/NoShip.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/NotReplenished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/NotReplenished.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Ready.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Ready.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/Sortie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/Sortie.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Fleet/SortieDamaged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Fleet/SortieDamaged.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/AlbumEquipment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/AlbumEquipment.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/AlbumShip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/AlbumShip.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/AntiAirDefense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/AntiAirDefense.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Arsenal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Arsenal.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/BaseAirCorps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/BaseAirCorps.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Battle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Battle.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Browser.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Compass.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Configuration.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/ConstructionRecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/ConstructionRecord.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/DevelopmentRecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/DevelopmentRecord.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Dock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Dock.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/DropRecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/DropRecord.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/EquipmentList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/EquipmentList.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Fleet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Fleet.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/FleetImageGenerator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/FleetImageGenerator.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Headquarters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Headquarters.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Information.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Json.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Log.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Main.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/Quest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/Quest.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/ResourceChart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/ResourceChart.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/ShipGroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/ShipGroup.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Form/WindowCapture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Form/WindowCapture.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Headquarters/Equipment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Headquarters/Equipment.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Headquarters/Ship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Headquarters/Ship.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/ActionReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/ActionReport.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/Blueprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/Blueprint.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/Catapult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/Catapult.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/DevelopmentMaterial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/DevelopmentMaterial.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/FurnitureCoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/FurnitureCoin.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/InstantConstruction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/InstantConstruction.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/InstantRepair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/InstantRepair.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/ModdingMaterial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/ModdingMaterial.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Item/PresentBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Item/PresentBox.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel0.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel1.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel2.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel3.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel4.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel5.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel6.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevel7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevel7.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop0.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop1.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop2.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop3.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop4.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop5.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop6.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Level/AircraftLevelTop7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Level/AircraftLevelTop7.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Nothing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Nothing.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/AA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/AA.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/ASW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/ASW.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Accuracy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Accuracy.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Aircraft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Aircraft.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/AircraftCost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/AircraftCost.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/AircraftDistance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/AircraftDistance.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Armor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Armor.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Bomber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Bomber.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Evasion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Evasion.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Firepower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Firepower.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/HP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/HP.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/LOS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/LOS.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Luck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Luck.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Range.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Speed.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Parameter/Torpedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Parameter/Torpedo.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/Black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/Black.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/BlueA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/BlueA.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/BlueB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/BlueB.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/BlueC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/BlueC.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/Cherry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/Cherry.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/Gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/Gold.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/HoloA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/HoloA.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/HoloB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/HoloB.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/Red.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Rarity/Silver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Rarity/Silver.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Record/EnemyFleetRecord.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Record/EnemyFleetRecord.csv -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Record/ShipParameterRecord.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Record/ShipParameterRecord.csv -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Resource/Ammo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Resource/Ammo.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Resource/Bauxite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Resource/Bauxite.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Resource/Fuel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Resource/Fuel.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Resource/Steel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Resource/Steel.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Other.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/ammo_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/ammo_empty.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/ammo_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/ammo_low.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/bauxite_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/bauxite_empty.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/bauxite_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/bauxite_low.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/fuel_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/fuel_empty.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/fuel_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/fuel_low.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/steel_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/steel_empty.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/Resource/steel_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/Resource/steel_low.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/damageL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/damageL.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/damageM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/damageM.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/damageS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/damageS.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/escape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/escape.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/expedition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/expedition.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/repair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/repair.png -------------------------------------------------------------------------------- /ElectronicObserver/Assets/Unused/ShipState/sunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/ElectronicObserver/Assets/Unused/ShipState/sunk.png -------------------------------------------------------------------------------- /ElectronicObserver/Data/APIWrapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Web; 7 | 8 | namespace ElectronicObserver.Data 9 | { 10 | 11 | /// 12 | /// Responseに加え、Requestも扱うことのできるクラスの基底です。 13 | /// 14 | public abstract class APIWrapper : ResponseWrapper 15 | { 16 | 17 | public Dictionary RequestData { get; private set; } 18 | 19 | 20 | public APIWrapper() 21 | : base() 22 | { 23 | 24 | RequestData = new Dictionary(); 25 | 26 | } 27 | 28 | 29 | public virtual void LoadFromRequest(string apiname, Dictionary data) 30 | { 31 | 32 | /* 33 | // data is string: 34 | data = HttpUtility.UrlDecode( data ); 35 | 36 | RequestData.Clear(); 37 | foreach ( string unit in data.Split( "&".ToCharArray() ) ) { 38 | string[] pair = unit.Split( "=".ToCharArray() ); 39 | RequestData.Add( pair[0], pair[1] ); 40 | } 41 | */ 42 | 43 | RequestData = data; 44 | } 45 | 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleAirBattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 通常艦隊 vs 通常艦隊 航空戦 13 | /// 14 | public class BattleAirBattle : BattleDay 15 | { 16 | 17 | public PhaseAirBattle AirBattle2 { get; protected set; } 18 | 19 | public override void LoadFromResponse(string apiname, dynamic data) 20 | { 21 | base.LoadFromResponse(apiname, (object)data); 22 | 23 | JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "喷式基地航空队攻击"); 24 | JetAirBattle = new PhaseJetAirBattle(this, "喷式航空战"); 25 | BaseAirAttack = new PhaseBaseAirAttack(this, "基地航空队攻击"); 26 | AirBattle = new PhaseAirBattle(this, "第一次航空战"); 27 | Support = new PhaseSupport(this, "支援攻击"); 28 | AirBattle2 = new PhaseAirBattle(this, "第二次航空战", "2"); 29 | 30 | foreach (var phase in GetPhases()) 31 | phase.EmulateBattle(_resultHPs, _attackDamages); 32 | 33 | } 34 | 35 | public override string APIName => "api_req_sortie/airbattle"; 36 | 37 | public override string BattleName => "通常舰队 航空战"; 38 | 39 | 40 | 41 | 42 | public override IEnumerable GetPhases() 43 | { 44 | yield return Initial; 45 | yield return Searching; 46 | yield return JetBaseAirAttack; 47 | yield return JetAirBattle; 48 | yield return BaseAirAttack; 49 | yield return AirBattle; 50 | yield return Support; 51 | yield return AirBattle2; 52 | } 53 | 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleAirRaid.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 通常艦隊 vs 通常艦隊 長距離空襲戦 13 | /// 14 | public class BattleAirRaid : BattleDay 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "喷式基地航空队攻击"); 22 | JetAirBattle = new PhaseJetAirBattle(this, "喷式空袭战"); 23 | BaseAirAttack = new PhaseBaseAirAttack(this, "基地航空队攻击"); 24 | AirBattle = new PhaseAirBattle(this, "空袭战"); 25 | // 支援は出ないものとする 26 | 27 | foreach (var phase in GetPhases()) 28 | phase.EmulateBattle(_resultHPs, _attackDamages); 29 | 30 | } 31 | 32 | public override string APIName => "api_req_sortie/ld_airbattle"; 33 | 34 | public override string BattleName => "通常舰队 长距离空袭战"; 35 | 36 | 37 | public override IEnumerable GetPhases() 38 | { 39 | yield return Initial; 40 | yield return Searching; 41 | yield return JetBaseAirAttack; 42 | yield return JetAirBattle; 43 | yield return BaseAirAttack; 44 | yield return AirBattle; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleBaseAirRaid.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 基地防空戦 13 | /// 14 | public class BattleBaseAirRaid : BattleDay 15 | { 16 | 17 | public PhaseBaseAirRaid BaseAirRaid { get; protected set; } 18 | 19 | public override void LoadFromResponse(string apiname, dynamic data) 20 | { 21 | base.LoadFromResponse(apiname, (object)data); 22 | 23 | BaseAirRaid = new PhaseBaseAirRaid(this, "防空战"); 24 | 25 | foreach (var phase in GetPhases()) 26 | phase.EmulateBattle(_resultHPs, _attackDamages); 27 | 28 | } 29 | 30 | 31 | public override string APIName => "api_req_map/next"; 32 | 33 | public override string BattleName => "基地防空战"; 34 | 35 | public override bool IsBaseAirRaid => true; 36 | 37 | public override IEnumerable GetPhases() 38 | { 39 | yield return Initial; 40 | yield return Searching; 41 | yield return BaseAirRaid; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleCombinedAirBattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ElectronicObserver.Data.Battle 10 | { 11 | 12 | /// 13 | /// 連合艦隊 vs 通常艦隊 航空戦 14 | /// 15 | public class BattleCombinedAirBattle : BattleDay 16 | { 17 | 18 | public PhaseAirBattle AirBattle2 { get; protected set; } 19 | 20 | public override void LoadFromResponse(string apiname, dynamic data) 21 | { 22 | base.LoadFromResponse(apiname, (object)data); 23 | 24 | JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "喷式基地航空队攻击"); 25 | JetAirBattle = new PhaseJetAirBattle(this, "喷式航空战"); 26 | BaseAirAttack = new PhaseBaseAirAttack(this, "基地航空队攻击"); 27 | AirBattle = new PhaseAirBattle(this, "第一次航空战"); 28 | Support = new PhaseSupport(this, "支援攻击"); 29 | AirBattle2 = new PhaseAirBattle(this, "第二次航空战", "2"); 30 | 31 | foreach (var phase in GetPhases()) 32 | phase.EmulateBattle(_resultHPs, _attackDamages); 33 | 34 | } 35 | 36 | 37 | public override string APIName => "api_req_combined_battle/airbattle"; 38 | 39 | public override string BattleName => "联合舰队 航空战"; 40 | 41 | 42 | public override IEnumerable GetPhases() 43 | { 44 | yield return Initial; 45 | yield return Searching; 46 | yield return JetBaseAirAttack; 47 | yield return JetAirBattle; 48 | yield return BaseAirAttack; 49 | yield return AirBattle; 50 | yield return Support; 51 | yield return AirBattle2; 52 | } 53 | 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleCombinedAirRaid.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 連合艦隊 vs 通常艦隊 長距離空襲戦 13 | /// 14 | public class BattleCombinedAirRaid : BattleDay 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "喷式基地航空队攻击"); 22 | JetAirBattle = new PhaseJetAirBattle(this, "喷式空袭战"); 23 | BaseAirAttack = new PhaseBaseAirAttack(this, "基地航空队攻击"); 24 | AirBattle = new PhaseAirBattle(this, "空袭战"); 25 | // 支援はないものとする 26 | 27 | foreach (var phase in GetPhases()) 28 | phase.EmulateBattle(_resultHPs, _attackDamages); 29 | 30 | } 31 | 32 | 33 | public override string APIName => "api_req_combined_battle/ld_airbattle"; 34 | 35 | public override string BattleName => "联合舰队 长距离空袭战"; 36 | 37 | 38 | public override IEnumerable GetPhases() 39 | { 40 | yield return Initial; 41 | yield return Searching; 42 | yield return JetBaseAirAttack; 43 | yield return JetAirBattle; 44 | yield return BaseAirAttack; 45 | yield return AirBattle; 46 | } 47 | 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleCombinedNightOnly.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ElectronicObserver.Data.Battle 10 | { 11 | 12 | /// 13 | /// 連合艦隊 vs 通常艦隊 開幕夜戦 14 | /// 15 | public class BattleCombinedNightOnly : BattleNight 16 | { 17 | 18 | public override void LoadFromResponse(string apiname, dynamic data) 19 | { 20 | base.LoadFromResponse(apiname, (object)data); 21 | 22 | Support = new PhaseSupport(this, "夜间支援攻击", true); 23 | NightBattle = new PhaseNightBattle(this, "夜战", 0, true); 24 | 25 | 26 | foreach (var phase in GetPhases()) 27 | phase.EmulateBattle(_resultHPs, _attackDamages); 28 | } 29 | 30 | 31 | 32 | public override string APIName => "api_req_combined_battle/sp_midnight"; 33 | 34 | public override string BattleName => "联合舰队 开幕夜战"; 35 | 36 | 37 | public override IEnumerable GetPhases() 38 | { 39 | yield return Initial; 40 | yield return Searching; 41 | yield return Support; 42 | yield return NightBattle; 43 | } 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleCombinedNormalNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Collections.ObjectModel; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ElectronicObserver.Data.Battle 10 | { 11 | 12 | /// 13 | /// 連合艦隊 vs 通常艦隊 夜戦 14 | /// 15 | public class BattleCombinedNormalNight : BattleNight 16 | { 17 | 18 | public override void LoadFromResponse(string apiname, dynamic data) 19 | { 20 | base.LoadFromResponse(apiname, (object)data); 21 | 22 | // 支援なし? 23 | NightBattle = new PhaseNightBattle(this, "夜战", 0, true); 24 | 25 | 26 | foreach (var phase in GetPhases()) 27 | phase.EmulateBattle(_resultHPs, _attackDamages); 28 | } 29 | 30 | 31 | public override string APIName => "api_req_combined_battle/midnight_battle"; 32 | 33 | public override string BattleName => "联合舰队 夜战"; 34 | 35 | 36 | public override IEnumerable GetPhases() 37 | { 38 | yield return Initial; 39 | yield return NightBattle; 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleDay.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 昼戦の基底クラス 13 | /// 14 | public abstract class BattleDay : BattleData 15 | { 16 | 17 | public PhaseJetBaseAirAttack JetBaseAirAttack { get; protected set; } 18 | public PhaseJetAirBattle JetAirBattle { get; protected set; } 19 | public PhaseBaseAirAttack BaseAirAttack { get; protected set; } 20 | public PhaseAirBattle AirBattle { get; protected set; } 21 | public PhaseOpeningASW OpeningASW { get; protected set; } 22 | public PhaseTorpedo OpeningTorpedo { get; protected set; } 23 | public PhaseShelling Shelling1 { get; protected set; } 24 | public PhaseShelling Shelling2 { get; protected set; } 25 | public PhaseShelling Shelling3 { get; protected set; } 26 | public PhaseTorpedo Torpedo { get; protected set; } 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleDayFromNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | /// 11 | /// 夜昼戦 12 | /// 13 | public abstract class BattleDayFromNight : BattleNight 14 | { 15 | 16 | public PhaseSupport NightSupport { get; protected set; } 17 | public PhaseNightBattle NightBattle2 { get; protected set; } 18 | 19 | public bool NextToDay => (int)RawData.api_day_flag != 0; 20 | 21 | public PhaseJetBaseAirAttack JetBaseAirAttack { get; protected set; } 22 | public PhaseJetAirBattle JetAirBattle { get; protected set; } 23 | public PhaseBaseAirAttack BaseAirAttack { get; protected set; } 24 | public PhaseAirBattle AirBattle { get; protected set; } 25 | public PhaseOpeningASW OpeningASW { get; protected set; } 26 | public PhaseTorpedo OpeningTorpedo { get; protected set; } 27 | public PhaseShelling Shelling1 { get; protected set; } 28 | public PhaseShelling Shelling2 { get; protected set; } 29 | public PhaseTorpedo Torpedo { get; protected set; } 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleEnemyCombinedNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 通常/連合艦隊 vs 連合艦隊 夜戦 13 | /// 14 | public class BattleEnemyCombinedNight : BattleNight 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | // 支援なし? 22 | NightBattle = new PhaseNightBattle(this, "夜战", 0, false); 23 | 24 | 25 | foreach (var phase in GetPhases()) 26 | phase.EmulateBattle(_resultHPs, _attackDamages); 27 | } 28 | 29 | 30 | public override string APIName => "api_req_combined_battle/ec_midnight_battle"; 31 | 32 | public override string BattleName => "对联合舰队 夜战"; 33 | 34 | 35 | 36 | public override IEnumerable GetPhases() 37 | { 38 | yield return Initial; 39 | yield return NightBattle; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 夜戦の基底クラス 13 | /// 14 | public abstract class BattleNight : BattleData 15 | { 16 | 17 | public PhaseNightBattle NightBattle { get; protected set; } 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleNightOnly.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 通常/連合艦隊 vs 通常艦隊 開幕夜戦 13 | /// 14 | public class BattleNightOnly : BattleNight 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | Support = new PhaseSupport(this, "夜间支援攻击", true); 22 | NightBattle = new PhaseNightBattle(this, "夜战", 0, false); 23 | 24 | 25 | foreach (var phase in GetPhases()) 26 | phase.EmulateBattle(_resultHPs, _attackDamages); 27 | } 28 | 29 | 30 | public override string APIName => "api_req_battle_midnight/sp_midnight"; 31 | 32 | public override string BattleName => "通常舰队 开幕夜战"; 33 | 34 | 35 | 36 | public override IEnumerable GetPhases() 37 | { 38 | yield return Initial; 39 | yield return Searching; 40 | yield return Support; 41 | yield return NightBattle; 42 | } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattleNormalNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 通常艦隊 vs 通常艦隊 夜戦 13 | /// 14 | public class BattleNormalNight : BattleNight 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | // 支援なし? 22 | NightBattle = new PhaseNightBattle(this, "夜战", 0, false); 23 | 24 | foreach (var phase in GetPhases()) 25 | phase.EmulateBattle(_resultHPs, _attackDamages); 26 | } 27 | 28 | 29 | public override string APIName => "api_req_battle_midnight/battle"; 30 | 31 | public override string BattleName => "通常舰队 夜战"; 32 | 33 | 34 | 35 | public override IEnumerable GetPhases() 36 | { 37 | yield return Initial; 38 | yield return NightBattle; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattlePracticeDay.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 演習 昼戦 13 | /// 14 | public class BattlePracticeDay : BattleDay 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | JetAirBattle = new PhaseJetAirBattle(this, "喷式航空战"); 22 | AirBattle = new PhaseAirBattle(this, "航空战"); 23 | OpeningASW = new PhaseOpeningASW(this, "先制对潜"); 24 | OpeningTorpedo = new PhaseTorpedo(this, "开幕雷击", 0); 25 | Shelling1 = new PhaseShelling(this, "第一次炮击战", 1, "1"); 26 | Shelling2 = new PhaseShelling(this, "第二次炮击战", 2, "2"); 27 | Shelling3 = new PhaseShelling(this, "第三次炮击战", 3, "3"); 28 | Torpedo = new PhaseTorpedo(this, "雷击战", 4); 29 | 30 | 31 | foreach (var phase in GetPhases()) 32 | phase.EmulateBattle(_resultHPs, _attackDamages); 33 | 34 | } 35 | 36 | 37 | public override string APIName => "api_req_practice/battle"; 38 | 39 | public override string BattleName => "演习 昼战"; 40 | 41 | public override bool IsPractice => true; 42 | 43 | 44 | public override IEnumerable GetPhases() 45 | { 46 | yield return Initial; 47 | yield return Searching; 48 | yield return JetAirBattle; 49 | yield return AirBattle; 50 | yield return OpeningASW; 51 | yield return OpeningTorpedo; 52 | yield return Shelling1; 53 | yield return Shelling2; 54 | yield return Shelling3; 55 | yield return Torpedo; 56 | } 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/BattlePracticeNight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data.Battle.Phase; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Battle 9 | { 10 | 11 | /// 12 | /// 演習 夜戦 13 | /// 14 | public class BattlePracticeNight : BattleNight 15 | { 16 | 17 | public override void LoadFromResponse(string apiname, dynamic data) 18 | { 19 | base.LoadFromResponse(apiname, (object)data); 20 | 21 | NightBattle = new PhaseNightBattle(this, "夜战", 0, false); 22 | 23 | NightBattle.EmulateBattle(_resultHPs, _attackDamages); 24 | 25 | } 26 | 27 | 28 | public override string APIName => "api_req_practice/midnight_battle"; 29 | 30 | public override string BattleName => "演习 夜战"; 31 | 32 | public override bool IsPractice => true; 33 | 34 | 35 | public override IEnumerable GetPhases() 36 | { 37 | yield return Initial; 38 | yield return NightBattle; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/Phase/PhaseOpeningASW.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data.Battle.Phase 8 | { 9 | 10 | /// 11 | /// 開幕対潜攻撃フェーズの処理を行います。 12 | /// 13 | public class PhaseOpeningASW : PhaseShelling 14 | { 15 | 16 | // 砲撃戦とフォーマットが同じなので流用 17 | 18 | public PhaseOpeningASW(BattleData data, string title) 19 | : base(data, title, 0, "") 20 | { 21 | 22 | } 23 | 24 | public override bool IsAvailable => (int)RawData.api_opening_taisen_flag != 0; 25 | 26 | public override dynamic ShellingData => RawData.api_opening_taisen; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Battle/Phase/PhaseSearching.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data.Battle.Phase 8 | { 9 | 10 | /// 11 | /// 索敵フェーズの処理を行います。 12 | /// 13 | public class PhaseSearching : PhaseBase 14 | { 15 | 16 | 17 | public PhaseSearching(BattleData data, string title) 18 | : base(data, title) { } 19 | 20 | 21 | public override bool IsAvailable => RawData.api_search() && RawData.api_formation(); 22 | 23 | public override void EmulateBattle(int[] hps, int[] damages) 24 | { 25 | } 26 | 27 | 28 | /// 29 | /// 自軍索敵結果 30 | /// 31 | public int SearchingFriend => !RawData.api_search() ? -1 : (int)RawData.api_search[0]; 32 | 33 | 34 | /// 35 | /// 敵軍索敵結果 36 | /// 37 | public int SearchingEnemy => !RawData.api_search() ? -1 : (int)RawData.api_search[1]; 38 | 39 | 40 | /// 41 | /// 自軍陣形 42 | /// 43 | public int FormationFriend 44 | { 45 | get 46 | { 47 | dynamic form = RawData.api_formation[0]; 48 | return form is string ? int.Parse((string)form) : (int)form; 49 | } 50 | } 51 | 52 | /// 53 | /// 敵軍陣形 54 | /// 55 | public int FormationEnemy => (int)RawData.api_formation[1]; 56 | 57 | /// 58 | /// 交戦形態 59 | /// 60 | public int EngagementForm => (int)RawData.api_formation[2]; 61 | } 62 | } 63 | 64 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/EquipmentType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data 9 | { 10 | 11 | /// 12 | /// 装備種別 13 | /// 14 | public class EquipmentType : ResponseWrapper, IIdentifiable 15 | { 16 | 17 | /// 18 | /// 装備種別ID 19 | /// 20 | public int TypeID => (int)RawData.api_id; 21 | 22 | /// 23 | /// 名前 24 | /// 25 | public string Name => RawData.api_name; 26 | 27 | //show_flg 28 | 29 | 30 | /// 31 | /// 装備種別ID 32 | /// 33 | public EquipmentTypes Type => (EquipmentTypes)TypeID; 34 | 35 | 36 | public override string ToString() => $"[{TypeID}] {Name}"; 37 | 38 | public int ID => TypeID; 39 | 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/IIdentifiable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data 8 | { 9 | 10 | /// 11 | /// 固有のIDを取得できることを示します。 12 | /// 13 | public interface IIdentifiable 14 | { 15 | 16 | int ID { get; } 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/MapAreaData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data 8 | { 9 | 10 | public class MapAreaData : APIWrapper, IIdentifiable 11 | { 12 | 13 | /// 14 | /// 海域カテゴリID 15 | /// 16 | public int MapAreaID => (int)RawData.api_id; 17 | 18 | /// 19 | /// 海域カテゴリ名 20 | /// 21 | public string Name => RawData.api_name; 22 | 23 | /// 24 | /// 海域タイプ 0=通常, 1=イベント 25 | /// 26 | public int MapType => (int)RawData.api_type; 27 | 28 | 29 | 30 | public int ID => MapAreaID; 31 | public override string ToString() => $"[{MapAreaID}] {Name}"; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/MissionData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data 8 | { 9 | 10 | /// 11 | /// 遠征データを保持します。 12 | /// 13 | public class MissionData : APIWrapper, IIdentifiable 14 | { 15 | 16 | /// 17 | /// 任務ID 18 | /// 19 | public int MissionID => (int)RawData.api_id; 20 | 21 | /// 22 | /// 海域カテゴリID 23 | /// 24 | public int MapAreaID => (int)RawData.api_maparea_id; 25 | 26 | /// 27 | /// 遠征名 28 | /// 29 | public string Name => RawData.api_name; 30 | 31 | /// 32 | /// 説明文 33 | /// 34 | public string Detail => RawData.api_details; 35 | 36 | /// 37 | /// 遠征時間(分単位) 38 | /// 39 | public int Time => (int)RawData.api_time; 40 | 41 | /// 42 | /// 難易度 43 | /// 44 | public int Difficulty => (int)RawData.api_difficulty; 45 | 46 | /// 47 | /// 消費燃料割合 48 | /// 49 | public double Fuel => RawData.api_use_fuel; 50 | 51 | /// 52 | /// 消費弾薬割合 53 | /// 54 | public double Ammo => RawData.api_use_bull; 55 | 56 | //win_item 57 | 58 | /// 59 | /// 遠征中断・強制帰投可能かどうか 60 | /// 61 | public bool Cancelable => (int)RawData.api_return_flag != 0; 62 | 63 | 64 | 65 | public int ID => MissionID; 66 | public override string ToString() => $"[{MissionID}] {Name}"; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressConstruction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 艦船建造任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressConstruction")] 15 | public class ProgressConstruction : ProgressData 16 | { 17 | 18 | public ProgressConstruction(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | 24 | public override string GetClearCondition() 25 | { 26 | return "建造" + ProgressMax; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressDestruction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 艦船解体任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressDestruction")] 15 | public class ProgressDestruction : ProgressData 16 | { 17 | 18 | public ProgressDestruction(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public void Increment(int amount) 24 | { 25 | for (int i = 0; i < amount; i++) 26 | Increment(); 27 | } 28 | 29 | public override string GetClearCondition() 30 | { 31 | return "解体" + ProgressMax; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressDevelopment.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 装備開発任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressDevelopment")] 15 | public class ProgressDevelopment : ProgressData 16 | { 17 | 18 | public ProgressDevelopment(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public override string GetClearCondition() 24 | { 25 | return "開発" + ProgressMax; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressDocking.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 入渠任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressDocking")] 15 | public class ProgressDocking : ProgressData 16 | { 17 | 18 | public ProgressDocking(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public override string GetClearCondition() 24 | { 25 | return "入渠" + ProgressMax; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressExpedition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 遠征の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressExpedition")] 15 | public class ProgressExpedition : ProgressData 16 | { 17 | 18 | /// 19 | /// 対象となる海域 20 | /// 21 | [DataMember] 22 | private HashSet TargetArea { get; set; } 23 | 24 | 25 | public ProgressExpedition(QuestData quest, int maxCount, int[] targetArea) 26 | : base(quest, maxCount) 27 | { 28 | 29 | TargetArea = targetArea == null ? null : new HashSet(targetArea); 30 | } 31 | 32 | 33 | public void Increment(int areaID) 34 | { 35 | 36 | if (TargetArea != null && !TargetArea.Contains(areaID)) 37 | return; 38 | 39 | Increment(); 40 | } 41 | 42 | 43 | public override string GetClearCondition() 44 | { 45 | StringBuilder sb = new StringBuilder(); 46 | if (TargetArea != null) 47 | { 48 | sb.Append(string.Join("・", TargetArea.OrderBy(s => s).Select(s => KCDatabase.Instance.Mission[s].Name))); 49 | } 50 | else 51 | { 52 | sb.Append("遠征"); 53 | } 54 | sb.Append(ProgressMax); 55 | 56 | return sb.ToString(); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressImprovement.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 装備改修任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressImprovement")] 15 | public class ProgressImprovement : ProgressData 16 | { 17 | 18 | public ProgressImprovement(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public override string GetClearCondition() 24 | { 25 | return "装備改修" + ProgressMax; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressModernization.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 近代化改修任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressModernization")] 15 | public class ProgressModernization : ProgressData 16 | { 17 | 18 | public ProgressModernization(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public override string GetClearCondition() 24 | { 25 | return "近代化改修" + ProgressMax; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressMultiBattle.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | [DataContract(Name = "ProgressMultiBattle")] 12 | public class ProgressMultiBattle : ProgressData 13 | { 14 | 15 | [DataMember] 16 | private ProgressBattle[] ProgressList; 17 | 18 | public ProgressMultiBattle(QuestData quest, IEnumerable progressList) 19 | : base(quest, 1) 20 | { 21 | ProgressList = progressList.ToArray(); 22 | ProgressMax = ProgressList.Sum(p => p.ProgressMax); 23 | } 24 | 25 | 26 | public void Increment(string rank, int areaID, bool isBoss) 27 | { 28 | foreach (var p in ProgressList) 29 | p.Increment(rank, areaID, isBoss); 30 | 31 | Progress = ProgressList.Sum(p => p.Progress); 32 | } 33 | 34 | public override void Increment() 35 | { 36 | throw new NotSupportedException(); 37 | } 38 | 39 | public override void Decrement() 40 | { 41 | throw new NotSupportedException(); 42 | } 43 | 44 | public override void CheckProgress(QuestData q) 45 | { 46 | // do nothing 47 | } 48 | 49 | public override string ToString() 50 | { 51 | if (ProgressList.All(p => p.IsCleared)) 52 | return "完成!"; 53 | else 54 | return string.Join(", ", ProgressList.Where(p => !p.IsCleared).Select(p => p.GetClearCondition() + ": " + p.ToString())); 55 | } 56 | 57 | public override string GetClearCondition() 58 | { 59 | return string.Join(", ", ProgressList.Select(p => p.GetClearCondition())); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressMultiDiscard.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | [DataContract(Name = "ProgressMultiDiscard")] 11 | public class ProgressMultiDiscard : ProgressData 12 | { 13 | 14 | [DataMember] 15 | private ProgressDiscard[] ProgressList; 16 | 17 | public ProgressMultiDiscard(QuestData quest, IEnumerable progressList) 18 | : base(quest, 1) 19 | { 20 | ProgressList = progressList.ToArray(); 21 | ProgressMax = progressList.Sum(p => p.ProgressMax); 22 | } 23 | 24 | 25 | public void Increment(IEnumerable equipments) 26 | { 27 | foreach (var p in ProgressList) 28 | p.Increment(equipments); 29 | 30 | Progress = ProgressList.Sum(p => p.Progress); 31 | } 32 | 33 | 34 | public override void Increment() 35 | { 36 | throw new NotSupportedException(); 37 | } 38 | 39 | public override void Decrement() 40 | { 41 | throw new NotSupportedException(); 42 | } 43 | 44 | 45 | public override void CheckProgress(QuestData q) 46 | { 47 | // do nothing 48 | } 49 | 50 | 51 | public override string ToString() 52 | { 53 | if (ProgressList.All(p => p.IsCleared)) 54 | return "完成!"; 55 | else 56 | return string.Join(", ", ProgressList.Where(p => !p.IsCleared).Select(p => p.GetClearCondition() + ": " + p.ToString())); 57 | } 58 | 59 | 60 | public override string GetClearCondition() 61 | { 62 | return string.Join(", ", ProgressList.Select(p => p.GetClearCondition())); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressPractice.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 演習任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressPractice")] 15 | public class ProgressPractice : ProgressData 16 | { 17 | 18 | /// 19 | /// 勝利のみカウントする 20 | /// 21 | [DataMember] 22 | private bool WinOnly { get; set; } 23 | 24 | 25 | public ProgressPractice(QuestData quest, int maxCount, bool winOnly) 26 | : base(quest, maxCount) 27 | { 28 | 29 | WinOnly = winOnly; 30 | } 31 | 32 | 33 | public void Increment(string rank) 34 | { 35 | 36 | if (WinOnly && Constants.GetWinRank(rank) < Constants.GetWinRank("B")) 37 | return; 38 | 39 | Increment(); 40 | } 41 | 42 | 43 | public override string GetClearCondition() 44 | { 45 | return "演習" + (WinOnly ? "勝利" : "") + ProgressMax; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressSlaughter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 特定艦種撃沈任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressSlaughter")] 15 | public class ProgressSlaughter : ProgressData 16 | { 17 | 18 | /// 19 | /// 対象となる艦種リスト 20 | /// 互換性維持のため enum ではなく int で管理する 21 | /// 22 | [DataMember] 23 | private HashSet TargetShipType { get; set; } 24 | 25 | public ProgressSlaughter(QuestData quest, int maxCount, int[] targetShipType) 26 | : base(quest, maxCount) 27 | { 28 | 29 | TargetShipType = targetShipType == null ? null : new HashSet(targetShipType); 30 | 31 | } 32 | 33 | 34 | public void Increment(ShipTypes shipType) 35 | { 36 | if (TargetShipType.Contains((int)shipType)) 37 | Increment(); 38 | } 39 | 40 | 41 | public override string GetClearCondition() 42 | { 43 | StringBuilder sb = new StringBuilder(); 44 | if (TargetShipType != null) 45 | { 46 | sb.Append(string.Join("・", TargetShipType.OrderBy(s => s).Select(s => KCDatabase.Instance.ShipTypes[s].Name))); 47 | } 48 | 49 | sb.Append("撃沈"); 50 | sb.Append(ProgressMax); 51 | 52 | return sb.ToString(); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/Quest/ProgressSupply.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data.Quest 9 | { 10 | 11 | /// 12 | /// 補給任務の進捗を管理します。 13 | /// 14 | [DataContract(Name = "ProgressSupply")] 15 | public class ProgressSupply : ProgressData 16 | { 17 | 18 | public ProgressSupply(QuestData quest, int maxCount) 19 | : base(quest, maxCount) 20 | { 21 | } 22 | 23 | public override string GetClearCondition() 24 | { 25 | return "補給" + ProgressMax; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/RelocationData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data 8 | { 9 | 10 | public class RelocationData : IIdentifiable 11 | { 12 | 13 | /// 14 | /// 装備ID 15 | /// 16 | public int EquipmentID { get; set; } 17 | 18 | /// 19 | /// 配置転換を開始した時間 20 | /// 21 | public DateTime RelocatedTime { get; set; } 22 | 23 | 24 | /// 25 | /// 装備のインスタンス 26 | /// 27 | public EquipmentData EquipmentInstance => KCDatabase.Instance.Equipments[EquipmentID]; 28 | 29 | 30 | public RelocationData(int equipmentID, DateTime relocatedTime) 31 | { 32 | EquipmentID = equipmentID; 33 | RelocatedTime = relocatedTime; 34 | } 35 | 36 | public int ID => EquipmentID; 37 | public override string ToString() => $"[{EquipmentID}] {EquipmentInstance.NameWithLevel} @ {RelocatedTime}"; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/ResponseWrapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Data 8 | { 9 | 10 | 11 | /// 12 | /// Responseを受信しデータを処理するクラスの基底です。 13 | /// 14 | public abstract class ResponseWrapper 15 | { 16 | 17 | /// 18 | /// 生の受信データ(api_data) 19 | /// 20 | public dynamic RawData { get; private set; } 21 | 22 | /// 23 | /// Responseを読み込みます。 24 | /// 25 | /// 読み込むAPIの名前。 26 | /// 受信したデータ。 27 | public virtual void LoadFromResponse(string apiname, dynamic data) 28 | { 29 | RawData = data; 30 | } 31 | 32 | /// 33 | /// 現在のデータが有効かを取得します。 34 | /// 35 | public bool IsAvailable => RawData != null; 36 | 37 | public ResponseWrapper() 38 | { 39 | RawData = null; 40 | } 41 | 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/ShipTypes.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace ElectronicObserver.Data 3 | { 4 | public enum ShipTypes 5 | { 6 | /// 海防艦 7 | Escort = 1, 8 | 9 | /// 駆逐艦 10 | Destroyer = 2, 11 | 12 | /// 軽巡洋艦 13 | LightCruiser = 3, 14 | 15 | /// 重雷装巡洋艦 16 | TorpedoCruiser = 4, 17 | 18 | /// 重巡洋艦 19 | HeavyCruiser = 5, 20 | 21 | /// 航空巡洋艦 22 | AviationCruiser = 6, 23 | 24 | /// 軽空母 25 | LightAircraftCarrier = 7, 26 | 27 | /// 巡洋戦艦 28 | Battlecruiser = 8, 29 | 30 | /// 戦艦 31 | Battleship = 9, 32 | 33 | /// 航空戦艦 34 | AviationBattleship = 10, 35 | 36 | /// 正規空母 37 | AircraftCarrier = 11, 38 | 39 | /// 超弩級戦艦 40 | SuperDreadnoughts = 12, 41 | 42 | /// 潜水艦 43 | Submarine = 13, 44 | 45 | /// 潜水空母 46 | SubmarineAircraftCarrier = 14, 47 | 48 | /// 輸送艦 49 | Transport = 15, 50 | 51 | /// 水上機母艦 52 | SeaplaneTender = 16, 53 | 54 | /// 揚陸艦 55 | AmphibiousAssaultShip = 17, 56 | 57 | /// 装甲空母 58 | ArmoredAircraftCarrier = 18, 59 | 60 | /// 工作艦 61 | RepairShip = 19, 62 | 63 | /// 潜水母艦 64 | SubmarineTender = 20, 65 | 66 | /// 練習巡洋艦 67 | TrainingCruiser = 21, 68 | 69 | /// 補給艦 70 | FleetOiler = 22, 71 | 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/UseItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data 9 | { 10 | 11 | /// 12 | /// 消費アイテムのデータを保持します。 13 | /// 14 | public class UseItem : ResponseWrapper, IIdentifiable 15 | { 16 | 17 | /// 18 | /// アイテムID 19 | /// 20 | public int ItemID => (int)RawData.api_id; 21 | 22 | /// 23 | /// 個数 24 | /// 25 | public int Count => (int)RawData.api_count; 26 | 27 | 28 | public UseItemMaster MasterUseItem => KCDatabase.Instance.MasterUseItems[ItemID]; 29 | 30 | 31 | public int ID => ItemID; 32 | public override string ToString() => $"[{ItemID}] {MasterUseItem.Name} x {Count}"; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /ElectronicObserver/Data/UseItemMaster.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Data 9 | { 10 | 11 | /// 12 | /// 消費アイテムのマスターデータを保持します。 13 | /// 14 | public class UseItemMaster : ResponseWrapper, IIdentifiable 15 | { 16 | 17 | /// 18 | /// アイテムID 19 | /// 20 | public int ItemID => (int)RawData.api_id; 21 | 22 | /// 23 | /// 使用形態 24 | /// 1=高速修復材, 2=高速建造材, 3=開発資材, 4=資源還元, その他 25 | /// 26 | public int UseType => (int)RawData.api_usetype; 27 | 28 | /// 29 | /// カテゴリ 30 | /// 31 | public int Category => (int)RawData.api_category; 32 | 33 | /// 34 | /// アイテム名 35 | /// 36 | public string Name => RawData.api_name; 37 | 38 | /// 39 | /// 説明 40 | /// 41 | public string Description => RawData.api_description[0]; 42 | 43 | //description[1]=家具コインの内容量 省略します 44 | 45 | 46 | public int ID => ItemID; 47 | public override string ToString() => $"[{ItemID}] {Name}"; 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /ElectronicObserver/Notifier/NotifierRepair.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Notifier 9 | { 10 | 11 | /// 12 | /// 入渠完了通知を扱います。 13 | /// 14 | public class NotifierRepair : NotifierBase 15 | { 16 | 17 | private Dictionary processedFlags; 18 | 19 | 20 | public NotifierRepair() 21 | : base() 22 | { 23 | Initialize(); 24 | } 25 | 26 | public NotifierRepair(Utility.Configuration.ConfigurationData.ConfigNotifierBase config) 27 | : base(config) 28 | { 29 | Initialize(); 30 | } 31 | 32 | 33 | private void Initialize() 34 | { 35 | DialogData.Title = "入渠结束"; 36 | processedFlags = new Dictionary(); 37 | } 38 | 39 | 40 | protected override void UpdateTimerTick() 41 | { 42 | 43 | foreach (var dock in KCDatabase.Instance.Docks.Values) 44 | { 45 | 46 | if (!processedFlags.ContainsKey(dock.DockID)) 47 | processedFlags.Add(dock.DockID, false); 48 | 49 | if (dock.State > 0) 50 | { 51 | if (!processedFlags[dock.DockID] && (int)(dock.CompletionTime - DateTime.Now).TotalMilliseconds <= AccelInterval) 52 | { 53 | 54 | processedFlags[dock.DockID] = true; 55 | Notify(dock.DockID, dock.ShipID); 56 | 57 | } 58 | 59 | } 60 | else 61 | { 62 | processedFlags[dock.DockID] = false; 63 | } 64 | 65 | } 66 | 67 | } 68 | 69 | public void Notify(int dockID, int shipID) 70 | { 71 | 72 | DialogData.Message = string.Format("入渠ドック #{0} で「{1}」の修復が完了しました。", 73 | dockID, KCDatabase.Instance.Ships[shipID].NameWithLevel); 74 | 75 | base.Notify(); 76 | } 77 | 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/APIBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer 8 | { 9 | 10 | public delegate void APIReceivedEventHandler(string apiname, dynamic data); 11 | 12 | /// 13 | /// API処理部の基底となるクラスです。 14 | /// 15 | public abstract class APIBase 16 | { 17 | 18 | /// 19 | /// Requestの処理が完了した時に発生します。 20 | /// 21 | public event APIReceivedEventHandler RequestReceived = delegate { }; 22 | 23 | /// 24 | /// Responseの処理が完了した時に発生します。 25 | /// 26 | public event APIReceivedEventHandler ResponseReceived = delegate { }; 27 | 28 | 29 | /// 30 | /// Requestを処理し、RequestReceivedを起動します。 31 | /// 継承時は最後に呼ぶようにして下さい。 32 | /// 33 | /// 処理するデータ。 34 | public virtual void OnRequestReceived(Dictionary data) 35 | { 36 | RequestReceived(APIName, data); 37 | } 38 | 39 | /// 40 | /// Responseを処理し、ResponseReceivedを起動します。 41 | /// 継承時は最後に呼ぶようにして下さい。 42 | /// 43 | /// 処理するデータ。 44 | public virtual void OnResponseReceived(dynamic data) 45 | { 46 | ResponseReceived(APIName, data); 47 | } 48 | 49 | 50 | /// 51 | /// Requestの処理をサポートしているかを取得します。 52 | /// 53 | public virtual bool IsRequestSupported => false; 54 | 55 | /// 56 | /// Responseの処理をサポートしているかを取得します。 57 | /// 58 | public virtual bool IsResponseSupported => true; 59 | 60 | 61 | 62 | /// 63 | /// API名を取得します。 64 | /// 65 | public abstract string APIName { get; } 66 | 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/base_air_corps.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | public class base_air_corps : APIBase 11 | { 12 | 13 | public override void OnResponseReceived(dynamic data) 14 | { 15 | 16 | var db = KCDatabase.Instance; 17 | 18 | db.BaseAirCorps.Clear(); 19 | foreach (var elem in data) 20 | { 21 | 22 | int id = BaseAirCorpsData.GetID(elem); 23 | 24 | if (!db.BaseAirCorps.ContainsKey(id)) 25 | { 26 | var a = new BaseAirCorpsData(); 27 | a.LoadFromResponse(APIName, elem); 28 | db.BaseAirCorps.Add(a); 29 | 30 | } 31 | else 32 | { 33 | db.BaseAirCorps[id].LoadFromResponse(APIName, elem); 34 | } 35 | } 36 | 37 | base.OnResponseReceived((object)data); 38 | } 39 | 40 | public override string APIName => "api_get_member/base_air_corps"; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/basic.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class basic : APIBase 12 | { 13 | 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase.Instance.Admiral.LoadFromResponse(APIName, data); 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_get_member/basic"; 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/deck.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class deck : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Fleet.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | 23 | public override string APIName => "api_get_member/deck"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/kdock.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class kdock : APIBase 12 | { 13 | 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | foreach (var ars in data) 21 | { 22 | 23 | int id = (int)ars.api_id; 24 | 25 | if (!db.Arsenals.ContainsKey(id)) 26 | { 27 | var a = new ArsenalData(); 28 | a.LoadFromResponse(APIName, ars); 29 | db.Arsenals.Add(a); 30 | 31 | } 32 | else 33 | { 34 | db.Arsenals[id].LoadFromResponse(APIName, ars); 35 | } 36 | } 37 | 38 | 39 | base.OnResponseReceived((object)data); 40 | } 41 | 42 | 43 | public override string APIName => "api_get_member/kdock"; 44 | } 45 | 46 | } 47 | 48 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/mapinfo.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class mapinfo : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | // 旧データとの互換性確保 20 | var list = data.api_map_info() ? data.api_map_info : data; 21 | 22 | foreach (var elem in list) 23 | { 24 | 25 | int id = (int)elem.api_id; 26 | 27 | if (db.MapInfo[id] != null) 28 | { 29 | db.MapInfo[id].LoadFromResponse(APIName, elem); 30 | } 31 | } 32 | 33 | if (data.api_air_base()) 34 | { 35 | db.BaseAirCorps.Clear(); 36 | foreach (var elem in data.api_air_base) 37 | { 38 | int id = BaseAirCorpsData.GetID(elem); 39 | 40 | if (db.BaseAirCorps[id] == null) 41 | { 42 | var inst = new BaseAirCorpsData(); 43 | inst.LoadFromResponse(APIName, elem); 44 | db.BaseAirCorps.Add(inst); 45 | 46 | } 47 | else 48 | { 49 | db.BaseAirCorps[id].LoadFromResponse(APIName, elem); 50 | } 51 | } 52 | } 53 | 54 | base.OnResponseReceived((object)data); 55 | } 56 | 57 | 58 | public override string APIName => "api_get_member/mapinfo"; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/material.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class material : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Material.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_get_member/material"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/ndock.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class ndock : APIBase 12 | { 13 | 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | foreach (var dock in data) 21 | { 22 | 23 | int id = (int)dock.api_id; 24 | 25 | if (!db.Docks.ContainsKey(id)) 26 | { 27 | var d = new DockData(); 28 | d.LoadFromResponse(APIName, dock); 29 | db.Docks.Add(d); 30 | 31 | } 32 | else 33 | { 34 | db.Docks[id].LoadFromResponse(APIName, dock); 35 | } 36 | } 37 | 38 | 39 | db.Fleet.LoadFromResponse(APIName, data); 40 | 41 | base.OnResponseReceived((object)data); 42 | } 43 | 44 | public override string APIName => "api_get_member/ndock"; 45 | } 46 | 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/payitem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 8 | { 9 | public class payitem : APIBase 10 | { 11 | public override string APIName => "api_get_member/payitem"; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/picture_book.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 8 | { 9 | 10 | public class picture_book : APIBase 11 | { 12 | 13 | public override string APIName => "api_get_member/picture_book"; 14 | } 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/questlist.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class questlist : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Quest.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_get_member/questlist"; 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/record.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 8 | { 9 | 10 | public class record : APIBase 11 | { 12 | public override string APIName => "api_get_member/record"; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/require_info.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class require_info : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | // Admiral - 各所でバグるので封印 20 | //db.Admiral.LoadFromResponse( APIName, data.api_basic ); 21 | 22 | 23 | // Equipments 24 | db.Equipments.Clear(); 25 | foreach (var elem in data.api_slot_item) 26 | { 27 | 28 | var eq = new EquipmentData(); 29 | eq.LoadFromResponse(APIName, elem); 30 | db.Equipments.Add(eq); 31 | 32 | } 33 | 34 | 35 | // Arsenal 36 | foreach (var ars in data.api_kdock) 37 | { 38 | 39 | int id = (int)ars.api_id; 40 | 41 | if (!db.Arsenals.ContainsKey(id)) 42 | { 43 | var a = new ArsenalData(); 44 | a.LoadFromResponse(APIName, ars); 45 | db.Arsenals.Add(a); 46 | 47 | } 48 | else 49 | { 50 | db.Arsenals[id].LoadFromResponse(APIName, ars); 51 | } 52 | } 53 | 54 | 55 | // UseItem 56 | db.UseItems.Clear(); 57 | if (data.api_useitem()) 58 | { 59 | foreach (var elem in data.api_useitem) 60 | { 61 | 62 | var item = new UseItem(); 63 | item.LoadFromResponse(APIName, elem); 64 | db.UseItems.Add(item); 65 | 66 | } 67 | } 68 | 69 | base.OnResponseReceived((object)data); 70 | } 71 | 72 | public override string APIName => "api_get_member/require_info"; 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/ship2.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | //一応現役、ケッコンした時などに呼ばれる 12 | public class ship2 : APIBase 13 | { 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | 21 | //api_data 22 | 23 | var ships = (dynamic[])data.api_data; 24 | 25 | if (ships.Length > 1) 26 | db.Ships.Clear(); 27 | 28 | foreach (var elem in ships) 29 | { 30 | int id = (int)elem.api_id; 31 | var ship = db.Ships[id]; 32 | 33 | if (ship != null) 34 | ship.LoadFromResponse(APIName, elem); 35 | else 36 | { 37 | var a = new ShipData(); 38 | a.LoadFromResponse(APIName, elem); 39 | db.Ships.Add(a); 40 | } 41 | } 42 | 43 | 44 | //api_data_deck 45 | db.Fleet.LoadFromResponse(APIName, data.api_data_deck); 46 | 47 | base.OnResponseReceived((object)data); 48 | } 49 | 50 | public override string APIName => "api_get_member/ship2"; 51 | } 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/ship3.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class ship3 : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | //api_ship_data 20 | foreach (var elem in data.api_ship_data) 21 | { 22 | 23 | int id = (int)elem.api_id; 24 | 25 | ShipData ship = db.Ships[id]; 26 | ship.LoadFromResponse(APIName, elem); 27 | 28 | for (int i = 0; i < ship.Slot.Count; i++) 29 | { 30 | if (ship.Slot[i] == -1) continue; 31 | if (!db.Equipments.ContainsKey(ship.Slot[i])) 32 | { //改装時に新装備を入手するが、追加される前にIDを与えられてしまうため 33 | EquipmentData eq = new EquipmentData(); 34 | eq.LoadFromResponse(APIName, ship.Slot[i]); 35 | db.Equipments.Add(eq); 36 | } 37 | } 38 | 39 | } 40 | 41 | //api_deck_data 42 | db.Fleet.LoadFromResponse(APIName, data.api_deck_data); 43 | 44 | 45 | 46 | base.OnResponseReceived((object)data); 47 | } 48 | 49 | 50 | public override string APIName => "api_get_member/ship3"; 51 | } 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/ship_deck.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class ship_deck : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | 20 | //api_ship_data 21 | foreach (var elem in data.api_ship_data) 22 | { 23 | 24 | int id = (int)elem.api_id; 25 | ShipData ship = db.Ships[id]; 26 | 27 | if (ship != null) 28 | { 29 | ship.LoadFromResponse(APIName, elem); 30 | 31 | } 32 | else 33 | { //ないとは思うけど 34 | var a = new ShipData(); 35 | a.LoadFromResponse(APIName, elem); 36 | db.Ships.Add(a); 37 | 38 | } 39 | 40 | } 41 | 42 | 43 | //api_deck_data 44 | db.Fleet.LoadFromResponse(APIName, data.api_deck_data); 45 | 46 | base.OnResponseReceived((object)data); 47 | } 48 | 49 | public override string APIName => "api_get_member/ship_deck"; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/slot_item.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | 12 | public class slot_item : APIBase 13 | { 14 | 15 | 16 | public override void OnResponseReceived(dynamic data) 17 | { 18 | 19 | KCDatabase db = KCDatabase.Instance; 20 | 21 | 22 | db.Equipments.Clear(); 23 | foreach (var elem in data) 24 | { 25 | 26 | var eq = new EquipmentData(); 27 | eq.LoadFromResponse(APIName, elem); 28 | db.Equipments.Add(eq); 29 | 30 | } 31 | 32 | db.Battle.LoadFromResponse(APIName, data); 33 | 34 | base.OnResponseReceived((object)data); 35 | } 36 | 37 | public override string APIName => "api_get_member/slot_item"; 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/sortie_conditions.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class sortie_conditions : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | base.OnResponseReceived((object)data); 17 | } 18 | 19 | public override string APIName => "api_get_member/sortie_conditions"; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_get_member/useitem.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_get_member 9 | { 10 | 11 | public class useitem : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | db.UseItems.Clear(); 20 | 21 | if (data != null) 22 | { 23 | foreach (var elem in data) 24 | { 25 | 26 | var item = new UseItem(); 27 | item.LoadFromResponse(APIName, elem); 28 | db.UseItems.Add(item); 29 | 30 | } 31 | } 32 | 33 | base.OnResponseReceived((object)data); 34 | } 35 | 36 | public override string APIName => "api_get_member/useitem"; 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_air_corps/change_name.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_air_corps 9 | { 10 | public class change_name : APIBase 11 | { 12 | 13 | public override bool IsRequestSupported => true; 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | var corps = KCDatabase.Instance.BaseAirCorps; 19 | int aircorpsID = BaseAirCorpsData.GetID(data); 20 | 21 | if (corps.ContainsKey(aircorpsID)) 22 | { 23 | corps[aircorpsID].LoadFromRequest(APIName, data); 24 | } 25 | 26 | base.OnRequestReceived(data); 27 | } 28 | 29 | public override string APIName => "api_req_air_corps/change_name"; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_air_corps/expand_base.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_air_corps 9 | { 10 | 11 | public class expand_base : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | foreach (var elem in data) 20 | { 21 | int id = BaseAirCorpsData.GetID(elem); 22 | 23 | if (db.BaseAirCorps[id] == null) 24 | { 25 | var inst = new BaseAirCorpsData(); 26 | inst.LoadFromResponse(APIName, elem); 27 | db.BaseAirCorps.Add(inst); 28 | 29 | } 30 | else 31 | { 32 | db.BaseAirCorps[id].LoadFromResponse(APIName, elem); 33 | } 34 | } 35 | 36 | base.OnResponseReceived((object)data); 37 | } 38 | 39 | public override string APIName => "api_req_air_corps/expand_base"; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_air_corps/set_action.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_air_corps 9 | { 10 | public class set_action : APIBase 11 | { 12 | 13 | public override bool IsRequestSupported => true; 14 | 15 | 16 | public override void OnRequestReceived(Dictionary data) 17 | { 18 | 19 | int areaID = int.Parse(data["api_area_id"]); 20 | foreach (var c in KCDatabase.Instance.BaseAirCorps.Values.Where(b => b.MapAreaID == areaID)) 21 | { 22 | c.LoadFromRequest(APIName, data); 23 | } 24 | 25 | base.OnRequestReceived(data); 26 | } 27 | 28 | 29 | public override string APIName => "api_req_air_corps/set_action"; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_air_corps/set_plane.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_air_corps 9 | { 10 | 11 | public class set_plane : APIBase 12 | { 13 | 14 | private int _aircorpsID; 15 | 16 | 17 | public override bool IsRequestSupported => true; 18 | 19 | public override void OnRequestReceived(Dictionary data) 20 | { 21 | 22 | _aircorpsID = BaseAirCorpsData.GetID(data); 23 | 24 | base.OnRequestReceived(data); 25 | } 26 | 27 | public override void OnResponseReceived(dynamic data) 28 | { 29 | 30 | var corps = KCDatabase.Instance.BaseAirCorps; 31 | 32 | if (corps.ContainsKey(_aircorpsID)) 33 | corps[_aircorpsID].LoadFromResponse(APIName, data); 34 | 35 | 36 | KCDatabase.Instance.Material.LoadFromResponse(APIName, data); 37 | 38 | base.OnResponseReceived((object)data); 39 | } 40 | 41 | public override string APIName => "api_req_air_corps/set_plane"; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_air_corps/supply.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_air_corps 9 | { 10 | public class supply : APIBase 11 | { 12 | 13 | private int _aircorpsID; 14 | 15 | 16 | public override bool IsRequestSupported => true; 17 | 18 | public override void OnRequestReceived(Dictionary data) 19 | { 20 | 21 | _aircorpsID = BaseAirCorpsData.GetID(data); 22 | 23 | base.OnRequestReceived(data); 24 | } 25 | 26 | 27 | public override void OnResponseReceived(dynamic data) 28 | { 29 | 30 | var corps = KCDatabase.Instance.BaseAirCorps; 31 | 32 | if (corps.ContainsKey(_aircorpsID)) 33 | corps[_aircorpsID].LoadFromResponse(APIName, data); 34 | 35 | 36 | int fuel = KCDatabase.Instance.Material.Fuel; 37 | int baux = KCDatabase.Instance.Material.Bauxite; 38 | 39 | KCDatabase.Instance.Material.LoadFromResponse(APIName, data); 40 | 41 | fuel -= KCDatabase.Instance.Material.Fuel; 42 | baux -= KCDatabase.Instance.Material.Bauxite; 43 | 44 | if (corps.ContainsKey(_aircorpsID)) 45 | Utility.Logger.Add(2, "", "对 ", string.Format("#{0}「{1}」", corps[_aircorpsID].MapAreaID, corps[_aircorpsID].Name), 46 | string.Format("进行了补给。消耗 : 燃料 x {0}, 铝土 x {1}", fuel, baux)); 47 | 48 | base.OnResponseReceived((object)data); 49 | } 50 | 51 | public override string APIName => "api_req_air_corps/supply"; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_battle_midnight/battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_battle_midnight 9 | { 10 | 11 | public class battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_battle_midnight/battle"; } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_battle_midnight/sp_midnight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_battle_midnight 9 | { 10 | 11 | public class sp_midnight : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_battle_midnight/sp_midnight"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/airbattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class airbattle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_combined_battle/airbattle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_combined_battle/battle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/battle_water.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class battle_water : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_combined_battle/battle_water"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/battleresult.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class battleresult : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_combined_battle/battleresult"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/each_battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | public class each_battle : APIBase 11 | { 12 | 13 | public override void OnResponseReceived(dynamic data) 14 | { 15 | 16 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 17 | 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_combined_battle/each_battle"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/each_battle_water.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class each_battle_water : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_combined_battle/each_battle_water"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/ec_battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class ec_battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_combined_battle/ec_battle"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/ec_midnight_battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class ec_midnight_battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_combined_battle/ec_midnight_battle"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/ec_night_to_day.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | public class ec_night_to_day : APIBase 11 | { 12 | 13 | public override void OnResponseReceived(dynamic data) 14 | { 15 | 16 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 17 | 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_combined_battle/ec_night_to_day"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/goback_port.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class goback_port : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | KCDatabase.Instance.Fleet.LoadFromResponse(APIName, data); 17 | 18 | base.OnResponseReceived((object)data); 19 | } 20 | 21 | public override string APIName => "api_req_combined_battle/goback_port"; 22 | } 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/ld_airbattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class ld_airbattle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_combined_battle/ld_airbattle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/midnight_battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class midnight_battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_combined_battle/midnight_battle"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_combined_battle/sp_midnight.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_combined_battle 9 | { 10 | 11 | public class sp_midnight : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_combined_battle/sp_midnight"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_hensei/change.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_hensei 9 | { 10 | 11 | public class change : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase.Instance.Fleet.LoadFromRequest(APIName, data); 19 | 20 | base.OnRequestReceived(data); 21 | } 22 | 23 | 24 | public override bool IsRequestSupported => true; 25 | public override bool IsResponseSupported => false; 26 | 27 | 28 | 29 | public override string APIName => "api_req_hensei/change"; 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_hensei/combined.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_hensei 9 | { 10 | 11 | public class combined : APIBase 12 | { 13 | 14 | public override bool IsRequestSupported => true; 15 | public override bool IsResponseSupported => true; 16 | 17 | public override void OnRequestReceived(Dictionary data) 18 | { 19 | 20 | KCDatabase.Instance.Fleet.LoadFromRequest(APIName, data); 21 | 22 | base.OnRequestReceived(data); 23 | } 24 | 25 | public override string APIName => "api_req_hensei/combined"; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_hensei/preset_select.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_hensei 9 | { 10 | 11 | public class preset_select : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Fleet.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_hensei/preset_select"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_hokyu/charge.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_hokyu 9 | { 10 | 11 | public class charge : APIBase 12 | { 13 | 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | 21 | //api_ship 22 | foreach (var elem in data.api_ship) 23 | { 24 | 25 | int shipID = (int)elem.api_id; 26 | ShipData ship = db.Ships[shipID]; 27 | 28 | ship.LoadFromResponse(APIName, elem); 29 | } 30 | 31 | 32 | int[] material = new int[]{ 33 | db.Material.Fuel, 34 | db.Material.Ammo, 35 | db.Material.Steel, 36 | db.Material.Bauxite, 37 | }; 38 | 39 | //api_material 40 | db.Material.LoadFromResponse(APIName, data.api_material); 41 | 42 | material[0] -= db.Material.Fuel; 43 | material[1] -= db.Material.Ammo; 44 | material[2] -= db.Material.Steel; 45 | material[3] -= db.Material.Bauxite; 46 | 47 | { 48 | var sb = new StringBuilder("补给完成。消耗 : "); 49 | 50 | for (int i = 0; i < 4; i++) 51 | { 52 | if (material[i] > 0) 53 | { 54 | sb.Append(Constants.GetMaterialName(i + 1)).Append(" x ").Append(material[i]).Append(", "); 55 | } 56 | } 57 | 58 | 59 | sb.Remove(sb.Length - 2, 2); 60 | Utility.Logger.Add(2, "", sb.ToString()); 61 | } 62 | 63 | 64 | base.OnResponseReceived((object)data); 65 | } 66 | 67 | public override string APIName => "api_req_hokyu/charge"; 68 | } 69 | 70 | 71 | } 72 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kaisou/marriage.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kaisou 9 | { 10 | 11 | public class marriage : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | Utility.Logger.Add(2, "", "同 ", KCDatabase.Instance.Ships[(int)data.api_id].Name, " 进行了婚礼 ( 伪 ) 。", "おめでとうございます!"); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_kaisou/marriage"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kaisou/open_exslot.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kaisou 9 | { 10 | 11 | public class open_exslot : APIBase 12 | { 13 | 14 | public override void OnRequestReceived(Dictionary data) 15 | { 16 | 17 | var ship = KCDatabase.Instance.Ships[Convert.ToInt32(data["api_id"])]; 18 | if (ship != null) 19 | { 20 | ship.LoadFromRequest(APIName, data); 21 | } 22 | 23 | base.OnRequestReceived(data); 24 | } 25 | 26 | 27 | public override bool IsRequestSupported => true; 28 | public override bool IsResponseSupported => false; 29 | 30 | public override string APIName => "api_req_kaisou/open_exslot"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kaisou/remodeling.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kaisou 9 | { 10 | 11 | public class remodeling : APIBase 12 | { 13 | 14 | public override bool IsRequestSupported => true; 15 | public override bool IsResponseSupported => false; 16 | 17 | public override void OnRequestReceived(Dictionary data) 18 | { 19 | 20 | int id = int.Parse(data["api_id"]); 21 | var ship = KCDatabase.Instance.Ships[id]; 22 | Utility.Logger.Add(2, "", "已将 ", string.Format("{0}「{1}」 Lv. {2}", ship.MasterShip.ShipTypeName, ship.MasterShip.NameWithClass, ship.Level), 23 | " 改造为 : ", string.Format("{0}「{1}」", ship.MasterShip.RemodelAfterShip.ShipTypeName, ship.MasterShip.RemodelAfterShip.NameWithClass)); 24 | 25 | KCDatabase.Instance.Fleet.LoadFromRequest(APIName, data); 26 | 27 | base.OnRequestReceived(data); 28 | } 29 | 30 | public override string APIName => "api_req_kaisou/remodeling"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kaisou/slot_deprive.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kaisou 9 | { 10 | 11 | public class slot_deprive : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase db = KCDatabase.Instance; 18 | 19 | int setid = (int)data.api_ship_data.api_set_ship.api_id; 20 | int unsetid = (int)data.api_ship_data.api_unset_ship.api_id; 21 | 22 | // 念のため 23 | if (!db.Ships.ContainsKey(setid)) 24 | { 25 | var a = new ShipData(); 26 | a.LoadFromResponse(APIName, data.api_ship_data.api_set_ship); 27 | db.Ships.Add(a); 28 | 29 | } 30 | else 31 | { 32 | db.Ships[setid].LoadFromResponse(APIName, data.api_ship_data.api_set_ship); 33 | } 34 | 35 | 36 | if (!db.Ships.ContainsKey(unsetid)) 37 | { 38 | var a = new ShipData(); 39 | a.LoadFromResponse(APIName, data.api_ship_data.api_unset_ship); 40 | db.Ships.Add(a); 41 | 42 | } 43 | else 44 | { 45 | db.Ships[unsetid].LoadFromResponse(APIName, data.api_ship_data.api_unset_ship); 46 | } 47 | 48 | base.OnResponseReceived((object)data); 49 | } 50 | 51 | public override string APIName => "api_req_kaisou/slot_deprive"; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kaisou/slot_exchange_index.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kaisou 9 | { 10 | 11 | public class slot_exchange_index : APIBase 12 | { 13 | 14 | private int shipID = -1; 15 | 16 | public override bool IsRequestSupported => true; 17 | public override bool IsResponseSupported => true; 18 | 19 | public override void OnRequestReceived(Dictionary data) 20 | { 21 | 22 | shipID = int.Parse(data["api_id"]); 23 | 24 | base.OnRequestReceived(data); 25 | } 26 | 27 | public override void OnResponseReceived(dynamic data) 28 | { 29 | 30 | var ship = KCDatabase.Instance.Ships[shipID]; 31 | if (ship != null) 32 | ship.LoadFromResponse(APIName, data); 33 | 34 | base.OnResponseReceived((object)data); 35 | } 36 | 37 | public override string APIName => "api_req_kaisou/slot_exchange_index"; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/createship.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 9 | { 10 | 11 | public class createship : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | //undone: このAPIが呼ばれた後 api_get_member/kdock が呼ばれ情報自体は更新されるので、建造ログのために使用? 19 | 20 | KCDatabase.Instance.Material.LoadFromRequest(APIName, data); 21 | 22 | base.OnRequestReceived(data); 23 | } 24 | 25 | public override bool IsRequestSupported => true; 26 | public override bool IsResponseSupported => false; 27 | 28 | 29 | public override string APIName => "api_req_kousyou/createship"; 30 | } 31 | 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/createship_speedchange.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 9 | { 10 | 11 | public class createship_speedchange : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | ArsenalData arsenal = db.Arsenals[int.Parse(data["api_kdock_id"])]; 21 | 22 | arsenal.State = 3; 23 | db.Material.InstantConstruction -= arsenal.Fuel >= 1000 ? 10 : 1; 24 | 25 | 26 | base.OnRequestReceived(data); 27 | } 28 | 29 | 30 | public override bool IsRequestSupported => true; 31 | public override bool IsResponseSupported => false; 32 | 33 | 34 | public override string APIName => "api_req_kousyou/createship_speedchange"; 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/destroyitem2.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 9 | { 10 | 11 | public class destroyitem2 : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | // 削除処理が終わってからだと装備データが取れないため 21 | db.QuestProgress.EquipmentDiscarded(APIName, data); 22 | 23 | Dictionary itemsToDestroy = new Dictionary(); 24 | 25 | foreach (int id in data["api_slotitem_ids"].Split(",".ToCharArray()).Select(str => int.Parse(str))) 26 | { 27 | string name = KCDatabase.Instance.Equipments[id].NameWithLevel; 28 | itemsToDestroy.TryGetValue(name, out int amount); 29 | itemsToDestroy[name] = amount + 1; 30 | 31 | db.Equipments.Remove(id); 32 | } 33 | 34 | var itemsDestroyed = new List(); 35 | 36 | foreach (var item in itemsToDestroy) { 37 | itemsDestroyed.Add(String.Format("{0}{1}", item.Key, item.Value > 1 ? " x " + item.Value : "")); 38 | } 39 | Utility.Logger.Add(2, "", "已废弃装备 : ", String.Join(" , ", itemsDestroyed)); 40 | 41 | base.OnRequestReceived(data); 42 | } 43 | 44 | 45 | public override void OnResponseReceived(dynamic data) 46 | { 47 | 48 | KCDatabase.Instance.Material.LoadFromResponse(APIName, data); 49 | 50 | base.OnResponseReceived((object)data); 51 | } 52 | 53 | 54 | public override bool IsRequestSupported => true; 55 | public override bool IsResponseSupported => true; 56 | 57 | public override string APIName => "api_req_kousyou/destroyitem2"; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/getship.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 9 | { 10 | 11 | public class getship : APIBase 12 | { 13 | 14 | 15 | public override void OnResponseReceived(dynamic data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | //api_kdock 21 | foreach (var ars in data.api_kdock) 22 | { 23 | 24 | int id = (int)ars.api_id; 25 | 26 | if (!db.Arsenals.ContainsKey(id)) 27 | { 28 | var a = new ArsenalData(); 29 | a.LoadFromResponse(APIName, ars); 30 | db.Arsenals.Add(a); 31 | 32 | } 33 | else 34 | { 35 | db.Arsenals[id].LoadFromResponse(APIName, ars); 36 | } 37 | } 38 | 39 | //api_slotitem 40 | if (data.api_slotitem != null) 41 | { //装備なしの艦はnullになる 42 | foreach (var elem in data.api_slotitem) 43 | { 44 | 45 | var eq = new EquipmentData(); 46 | eq.LoadFromResponse(APIName, elem); 47 | db.Equipments.Add(eq); 48 | 49 | } 50 | } 51 | 52 | //api_ship 53 | { 54 | ShipData ship = new ShipData(); 55 | ship.LoadFromResponse(APIName, data.api_ship); 56 | db.Ships.Add(ship); 57 | 58 | Utility.Logger.Add(2, "", "已完成建造 : ", string.Format("{0}「{1}」", ship.MasterShip.ShipTypeName, ship.MasterShip.NameWithClass)); 59 | } 60 | 61 | 62 | base.OnResponseReceived((object)data); 63 | } 64 | 65 | public override string APIName => "api_req_kousyou/getship"; 66 | } 67 | 68 | 69 | } 70 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/remodel_slot.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 9 | { 10 | 11 | public class remodel_slot : APIBase 12 | { 13 | 14 | private int _equipmentID; 15 | 16 | public override bool IsRequestSupported => true; 17 | 18 | public override void OnRequestReceived(Dictionary data) 19 | { 20 | 21 | _equipmentID = int.Parse(data["api_slot_id"]); 22 | 23 | base.OnRequestReceived(data); 24 | } 25 | 26 | public override void OnResponseReceived(dynamic data) 27 | { 28 | 29 | KCDatabase db = KCDatabase.Instance; 30 | 31 | db.Material.LoadFromResponse(APIName, data.api_after_material); 32 | 33 | 34 | if (data.api_after_slot()) 35 | { //改修成功時のみ存在 36 | EquipmentData eq = db.Equipments[(int)data.api_after_slot.api_id]; 37 | if (eq != null) 38 | { 39 | eq.LoadFromResponse(APIName, data.api_after_slot); 40 | 41 | if (Utility.Configuration.Config.Log.ShowSpoiler) 42 | Utility.Logger.Add(2, "", "改修成功 : ", eq.NameWithLevel); 43 | } 44 | 45 | } 46 | else if (Utility.Configuration.Config.Log.ShowSpoiler) 47 | { 48 | Utility.Logger.Add(2, "", "对 ", db.Equipments[_equipmentID].NameWithLevel, " 的改修失败了。"); 49 | } 50 | 51 | 52 | if (data.api_use_slot_id()) 53 | { 54 | foreach (int id in data.api_use_slot_id) 55 | { 56 | db.Equipments.Remove(id); 57 | } 58 | } 59 | 60 | base.OnResponseReceived((object)data); 61 | } 62 | 63 | 64 | public override string APIName => "api_req_kousyou/remodel_slot"; 65 | } 66 | 67 | 68 | } 69 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_kousyou/remodel_slotlist.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer.kcsapi.api_req_kousyou 8 | { 9 | public class remodel_slotlist : APIBase 10 | { 11 | public override string APIName => "api_req_kousyou/remodel_slotlist"; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_map/select_eventmap_rank.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_map 9 | { 10 | 11 | public class select_eventmap_rank : APIBase 12 | { 13 | 14 | public override void OnRequestReceived(Dictionary data) 15 | { 16 | 17 | var mapinfo = KCDatabase.Instance.MapInfo[int.Parse(data["api_maparea_id"]) * 10 + int.Parse(data["api_map_no"])]; 18 | if (mapinfo != null) 19 | mapinfo.LoadFromRequest(APIName, data); 20 | 21 | base.OnRequestReceived(data); 22 | } 23 | 24 | 25 | public override bool IsRequestSupported => true; 26 | public override bool IsResponseSupported => false; 27 | 28 | 29 | public override string APIName => "api_req_map/select_eventmap_rank"; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_map/start.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_map 9 | { 10 | 11 | public class start : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | 21 | 22 | // 表示順の関係上、UIの更新をしてからデータを更新する 23 | if (KCDatabase.Instance.Battle.Compass.EventID == 3) 24 | { 25 | next.EmulateWhirlpool(); 26 | } 27 | 28 | } 29 | 30 | 31 | public override bool IsRequestSupported => true; 32 | 33 | public override void OnRequestReceived(Dictionary data) 34 | { 35 | 36 | KCDatabase.Instance.Fleet.LoadFromRequest(APIName, data); 37 | 38 | int deckID = int.Parse(data["api_deck_id"]); 39 | int maparea = int.Parse(data["api_maparea_id"]); 40 | int mapinfo = int.Parse(data["api_mapinfo_no"]); 41 | 42 | Utility.Logger.Add(2, string.Format("#{0}「{1}」", deckID, KCDatabase.Instance.Fleet[deckID].Name), "已出击海域", 43 | string.Format("「{0}-{1} {2}」。", maparea, mapinfo, KCDatabase.Instance.MapInfo[maparea * 10 + mapinfo].Name)); 44 | 45 | base.OnRequestReceived(data); 46 | } 47 | 48 | 49 | public override string APIName => "api_req_map/start"; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_member/get_practice_enemyinfo.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_member 9 | { 10 | 11 | public class get_practice_enemyinfo : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | public override string APIName => "api_req_member/get_practice_enemyinfo"; 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_member/updatecomment.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_member 9 | { 10 | 11 | public class updatecomment : APIBase 12 | { 13 | 14 | public override bool IsRequestSupported => true; 15 | public override bool IsResponseSupported => false; 16 | 17 | public override void OnRequestReceived(Dictionary data) 18 | { 19 | 20 | // 🎃 21 | if (data["api_cmt"].ToLower() == "jackolantern") 22 | { 23 | new Window.Dialog.DialogHalloween().Show(); 24 | } 25 | 26 | KCDatabase.Instance.Admiral.LoadFromRequest(APIName, data); 27 | 28 | base.OnRequestReceived(data); 29 | } 30 | 31 | public override string APIName => "api_req_member/updatecomment"; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_member/updatedeckname.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_member 9 | { 10 | 11 | public class updatedeckname : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase.Instance.Fleet.Fleets[int.Parse(data["api_deck_id"])].LoadFromRequest(APIName, data); 19 | 20 | base.OnRequestReceived(data); 21 | } 22 | 23 | 24 | public override bool IsRequestSupported => true; 25 | public override bool IsResponseSupported => false; 26 | 27 | public override string APIName => "api_req_member/updatedeckname"; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_mission/start.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_mission 9 | { 10 | 11 | public class start : APIBase 12 | { 13 | 14 | //private int FleetID; 15 | 16 | 17 | public override void OnRequestReceived(Dictionary data) 18 | { 19 | 20 | /* //checkme: どちらにせよあとで deck が呼ばれるので不要? 21 | FleetID = int.Parse( data["api_deck_id"] ); 22 | KCDatabase.Instance.Fleet.Fleets[FleetID].LoadFromRequest( APIName, data ); 23 | */ 24 | 25 | int deckID = int.Parse(data["api_deck_id"]); 26 | int destination = int.Parse(data["api_mission_id"]); 27 | 28 | Utility.Logger.Add(2, string.Format("#{0}「{1}」", deckID, KCDatabase.Instance.Fleet[deckID].Name), "已开始远征", 29 | string.Format("「{0}: {1}」。",destination, KCDatabase.Instance.Mission[destination].Name)); 30 | 31 | base.OnRequestReceived(data); 32 | } 33 | 34 | public override void OnResponseReceived(dynamic data) 35 | { 36 | 37 | /* 38 | KCDatabase.Instance.Fleet.Fleets[FleetID].LoadFromResponse( APIName, data ); 39 | */ 40 | 41 | base.OnResponseReceived((object)data); 42 | 43 | } 44 | 45 | 46 | public override bool IsRequestSupported => true; 47 | public override bool IsResponseSupported => true; 48 | 49 | public override string APIName => "api_req_mission/start"; 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_nyukyo/speedchange.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_nyukyo 9 | { 10 | 11 | public class speedchange : APIBase 12 | { 13 | 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase db = KCDatabase.Instance; 19 | 20 | db.Docks[int.Parse(data["api_ndock_id"])].LoadFromResponse(APIName, data); 21 | db.Material.InstantRepair--; 22 | 23 | 24 | db.Fleet.LoadFromRequest(APIName, data); 25 | 26 | base.OnRequestReceived(data); 27 | } 28 | 29 | 30 | public override bool IsRequestSupported => true; 31 | public override bool IsResponseSupported => false; 32 | 33 | public override string APIName => "api_req_nyukyo/speedchange"; 34 | } 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_practice/battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_practice 9 | { 10 | public class battle : APIBase 11 | { 12 | 13 | public override bool IsRequestSupported => true; 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase.Instance.Fleet.LoadFromRequest(APIName, data); 19 | 20 | base.OnRequestReceived(data); 21 | } 22 | 23 | 24 | public override void OnResponseReceived(dynamic data) 25 | { 26 | 27 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 28 | 29 | 30 | base.OnResponseReceived((object)data); 31 | } 32 | 33 | public override string APIName => "api_req_practice/battle"; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_practice/battle_result.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_practice 9 | { 10 | 11 | public class battle_result : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_practice/battle_result"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_practice/midnight_battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_practice 9 | { 10 | 11 | public class midnight_battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_practice/midnight_battle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_quest/clearitemget.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_quest 9 | { 10 | 11 | public class clearitemget : APIBase 12 | { 13 | 14 | public override void OnRequestReceived(Dictionary data) 15 | { 16 | 17 | KCDatabase.Instance.Quest.LoadFromRequest(APIName, data); 18 | 19 | base.OnRequestReceived(data); 20 | } 21 | 22 | 23 | public override bool IsRequestSupported => true; 24 | public override bool IsResponseSupported => false; 25 | 26 | 27 | public override string APIName => "api_req_quest/clearitemget"; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_quest/stop.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_quest 9 | { 10 | public class stop : APIBase 11 | { 12 | 13 | public override bool IsRequestSupported => true; 14 | 15 | public override void OnRequestReceived(Dictionary data) 16 | { 17 | 18 | KCDatabase.Instance.Quest.LoadFromRequest(APIName, data); 19 | 20 | base.OnRequestReceived(data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_quest/stop"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_ranking/getlist.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Observer.kcsapi.api_req_ranking 8 | { 9 | 10 | public class getlist : APIBase 11 | { 12 | 13 | public override string APIName => "api_req_ranking/getlist"; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/airbattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | 11 | public class airbattle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_sortie/airbattle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/battle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | 11 | public class battle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_sortie/battle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/battleresult.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | 11 | public class battleresult : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | 24 | public override string APIName => "api_req_sortie/battleresult"; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/goback_port.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | public class goback_port : APIBase 11 | { 12 | public override void OnResponseReceived(dynamic data) 13 | { 14 | KCDatabase.Instance.Fleet.LoadFromResponse(APIName, data); 15 | 16 | base.OnResponseReceived((object)data); 17 | } 18 | 19 | public override string APIName => "api_req_sortie/goback_port"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/ld_airbattle.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | 11 | public class ld_airbattle : APIBase 12 | { 13 | 14 | public override void OnResponseReceived(dynamic data) 15 | { 16 | 17 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 18 | 19 | 20 | base.OnResponseReceived((object)data); 21 | } 22 | 23 | public override string APIName => "api_req_sortie/ld_airbattle"; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Observer/kcsapi/api_req_sortie/night_to_day.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Observer.kcsapi.api_req_sortie 9 | { 10 | public class night_to_day : APIBase 11 | { 12 | 13 | public override void OnResponseReceived(dynamic data) 14 | { 15 | 16 | KCDatabase.Instance.Battle.LoadFromResponse(APIName, data); 17 | 18 | 19 | base.OnResponseReceived((object)data); 20 | } 21 | 22 | 23 | public override string APIName => "api_req_sortie/night_to_day"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ElectronicObserver/Program.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Window; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Threading; 8 | 9 | namespace ElectronicObserver 10 | { 11 | static class Program 12 | { 13 | /// 14 | /// アプリケーションのメイン エントリ ポイントです。 15 | /// 16 | [STAThread] 17 | static void Main(string[] args) 18 | { 19 | 20 | bool allowMultiInstance = args.Contains("-m") || args.Contains("--multi-instance"); 21 | 22 | 23 | using (var mutex = new Mutex(false, Application.ExecutablePath.Replace('\\', '/'), out var created)) 24 | { 25 | 26 | /* 27 | bool hasHandle = false; 28 | 29 | try 30 | { 31 | hasHandle = mutex.WaitOne(0, false); 32 | } 33 | catch (AbandonedMutexException) 34 | { 35 | hasHandle = true; 36 | } 37 | */ 38 | 39 | if (!created && !allowMultiInstance) 40 | { 41 | // 多重起動禁止 42 | MessageBox.Show("既に起動しています。多重起動はできません。\r\n誤検出の場合は、コマンドラインから -m オプションを付けて起動してください。", "七四式電子観測儀", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 43 | return; 44 | } 45 | 46 | Application.EnableVisualStyles(); 47 | Application.SetCompatibleTextRenderingDefault(false); 48 | Application.Run(new FormMain()); 49 | 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ElectronicObserver/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 6 | // アセンブリに関連付けられている情報を変更するには、 7 | // これらの属性値を変更してください。 8 | [assembly: AssemblyTitle("ElectronicObserver")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ElectronicObserver")] 13 | [assembly: AssemblyCopyright("Copyright © 2014 Andante")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 18 | // 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 19 | // その型の ComVisible 属性を true に設定してください。 20 | [assembly: ComVisible(false)] 21 | 22 | // 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です 23 | [assembly: Guid("bee10a07-cace-44fe-8a74-53ae44d224c2")] 24 | 25 | // アセンブリのバージョン情報は、以下の 4 つの値で構成されています: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 33 | // 既定値にすることができます: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ElectronicObserver/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ElectronicObserver.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ElectronicObserver/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ElectronicObserver/Utility/Mathematics/Fraction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Utility.Mathematics 8 | { 9 | 10 | public class Fraction 11 | { 12 | public int Current { get; set; } 13 | public int Max { get; set; } 14 | 15 | public double Rate => (double)Current / Math.Max(Max, 1); 16 | 17 | 18 | public Fraction() 19 | { 20 | Current = Max = 0; 21 | } 22 | 23 | public Fraction(int current, int max) 24 | { 25 | Current = current; 26 | Max = max; 27 | } 28 | 29 | public override string ToString() => $"{Current}/{Max}"; 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /ElectronicObserver/Utility/Storage/SerializableKeyValuePair.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ElectronicObserver.Utility.Storage 9 | { 10 | 11 | [DataContract(Name = "SerializableKeyValuePair")] 12 | public struct SerializableKeyValuePair 13 | { 14 | 15 | 16 | public SerializableKeyValuePair(TKey key, TValue value) 17 | { 18 | Key = key; 19 | Value = value; 20 | } 21 | 22 | public SerializableKeyValuePair(KeyValuePair value) 23 | { 24 | Key = value.Key; 25 | Value = value.Value; 26 | } 27 | 28 | 29 | [DataMember] 30 | public TKey Key; 31 | 32 | [DataMember] 33 | public TValue Value; 34 | 35 | 36 | public static implicit operator KeyValuePair(SerializableKeyValuePair value) 37 | { 38 | return new KeyValuePair(value.Key, value.Value); 39 | } 40 | 41 | public static implicit operator SerializableKeyValuePair(KeyValuePair value) 42 | { 43 | return new SerializableKeyValuePair(value.Key, value.Value); 44 | } 45 | 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ElectronicObserver/Utility/SystemEvents.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ElectronicObserver.Utility 8 | { 9 | 10 | /// 11 | /// システムイベントを扱います。 12 | /// 13 | public static class SystemEvents 14 | { 15 | 16 | public static bool UpdateTimerEnabled { get; set; } 17 | 18 | public static event Action UpdateTimerTick = delegate { }; 19 | public static event Action SystemShuttingDown = delegate { }; 20 | 21 | 22 | static SystemEvents() 23 | { 24 | UpdateTimerEnabled = true; 25 | } 26 | 27 | internal static void OnUpdateTimerTick() 28 | { 29 | if (UpdateTimerEnabled) 30 | UpdateTimerTick(); 31 | } 32 | internal static void OnSystemShuttingDown() { SystemShuttingDown(); } 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/ImageLabel.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class ImageLabel 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 使用中のリソースをすべてクリーンアップします。 12 | /// 13 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region コンポーネント デザイナーで生成されたコード 24 | 25 | /// 26 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 | /// コード エディターで変更しないでください。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | this.ResumeLayout(false); 33 | 34 | } 35 | 36 | #endregion 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/ShipStatusEquipment.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class ShipStatusEquipment 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | 11 | 12 | #region コンポーネント デザイナーで生成されたコード 13 | 14 | /// 15 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 16 | /// コード エディターで変更しないでください。 17 | /// 18 | private void InitializeComponent() 19 | { 20 | this.SuspendLayout(); 21 | // 22 | // ShipStatusEquipment 23 | // 24 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 25 | this.BackColor = System.Drawing.Color.Transparent; 26 | this.DoubleBuffered = true; 27 | this.Font = new System.Drawing.Font("Meiryo UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 28 | this.Name = "ShipStatusEquipment"; 29 | this.Size = new System.Drawing.Size(100, 20); 30 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusEquipment_Paint); 31 | this.MouseEnter += new System.EventHandler(this.ShipStatusEquipment_MouseEnter); 32 | this.MouseLeave += new System.EventHandler(this.ShipStatusEquipment_MouseLeave); 33 | this.ResumeLayout(false); 34 | 35 | } 36 | 37 | #endregion 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/ShipStatusHP.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class ShipStatusHP 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 使用中のリソースをすべてクリーンアップします。 12 | /// 13 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region コンポーネント デザイナーで生成されたコード 24 | 25 | /// 26 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 | /// コード エディターで変更しないでください。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // ShipStatusHP 34 | // 35 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 36 | this.DoubleBuffered = true; 37 | this.Name = "ShipStatusHP"; 38 | this.Size = new System.Drawing.Size(80, 20); 39 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusHP_Paint); 40 | this.MouseEnter += new System.EventHandler(this.ShipStatusHP_MouseEnter); 41 | this.MouseLeave += new System.EventHandler(this.ShipStatusHP_MouseLeave); 42 | this.ResumeLayout(false); 43 | 44 | } 45 | 46 | #endregion 47 | 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/ShipStatusLevel.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class ShipStatusLevel 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 使用中のリソースをすべてクリーンアップします。 12 | /// 13 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region コンポーネント デザイナーで生成されたコード 24 | 25 | /// 26 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 | /// コード エディターで変更しないでください。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // ShipStatusLevel 34 | // 35 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 36 | this.DoubleBuffered = true; 37 | this.Name = "ShipStatusLevel"; 38 | this.Size = new System.Drawing.Size(80, 20); 39 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusLevel_Paint); 40 | this.ResumeLayout(false); 41 | 42 | } 43 | 44 | #endregion 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/ShipStatusResource.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class ShipStatusResource 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 使用中のリソースをすべてクリーンアップします。 12 | /// 13 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region コンポーネント デザイナーで生成されたコード 24 | 25 | /// 26 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 | /// コード エディターで変更しないでください。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // ShipStatusResource 34 | // 35 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 36 | this.DoubleBuffered = true; 37 | this.Name = "ShipStatusResource"; 38 | this.Size = new System.Drawing.Size(60, 20); 39 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusResource_Paint); 40 | this.ResumeLayout(false); 41 | 42 | } 43 | 44 | #endregion 45 | 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Control/WindowCaptureButton.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Control 2 | { 3 | partial class WindowCaptureButton 4 | { 5 | /// 6 | /// 必要なデザイナー変数です。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 使用中のリソースをすべてクリーンアップします。 12 | /// 13 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region コンポーネント デザイナーで生成されたコード 24 | 25 | /// 26 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を 27 | /// コード エディターで変更しないでください。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // WindowCaptureButton 34 | // 35 | this.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 36 | this.ResumeLayout(false); 37 | 38 | } 39 | 40 | #endregion 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Dialog/DialogTextSelect.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Window.Support; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace ElectronicObserver.Window.Dialog 13 | { 14 | public partial class DialogTextSelect : Form 15 | { 16 | 17 | public int SelectedIndex => TextSelect.SelectedIndex; 18 | 19 | public object SelectedItem => TextSelect.SelectedItem; 20 | 21 | public DialogTextSelect() 22 | { 23 | InitializeComponent(); 24 | 25 | ControlHelper.SetDoubleBuffered(tableLayoutPanel1); 26 | } 27 | 28 | public DialogTextSelect(string title, string description, object[] items) 29 | : this() 30 | { 31 | 32 | Initialize(title, description, items); 33 | } 34 | 35 | public void Initialize(string title, string description, object[] items) 36 | { 37 | this.Text = title; 38 | 39 | tableLayoutPanel1.SuspendLayout(); 40 | 41 | Description.Text = description; 42 | 43 | TextSelect.BeginUpdate(); 44 | TextSelect.Items.Clear(); 45 | TextSelect.Items.AddRange(items); 46 | if (TextSelect.Items.Count > 0) 47 | TextSelect.SelectedIndex = 0; 48 | TextSelect.EndUpdate(); 49 | 50 | tableLayoutPanel1.ResumeLayout(); 51 | 52 | } 53 | 54 | 55 | private void ButtonOK_Click(object sender, EventArgs e) 56 | { 57 | DialogResult = System.Windows.Forms.DialogResult.OK; 58 | } 59 | 60 | private void ButtonCancel_Click(object sender, EventArgs e) 61 | { 62 | DialogResult = System.Windows.Forms.DialogResult.Cancel; 63 | } 64 | 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Dialog/DialogVersion.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Resource; 2 | using ElectronicObserver.Utility; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.ComponentModel; 6 | using System.Data; 7 | using System.Drawing; 8 | using System.Linq; 9 | using System.Text; 10 | using System.Threading.Tasks; 11 | using System.Windows.Forms; 12 | 13 | namespace ElectronicObserver.Window.Dialog 14 | { 15 | public partial class DialogVersion : Form 16 | { 17 | public DialogVersion() 18 | { 19 | InitializeComponent(); 20 | 21 | TextVersion.Text = string.Format("{0} (ver. {1} - {2} Release)", SoftwareInformation.VersionJapanese, SoftwareInformation.VersionEnglish, SoftwareInformation.UpdateTime.ToString("d")); 22 | } 23 | 24 | private void TextAuthor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 25 | { 26 | 27 | System.Diagnostics.Process.Start("https://twitter.com/andanteyk"); 28 | 29 | } 30 | 31 | private void ButtonClose_Click(object sender, EventArgs e) 32 | { 33 | 34 | this.Close(); 35 | 36 | } 37 | 38 | private void TextInformation_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 39 | { 40 | 41 | System.Diagnostics.Process.Start("http://electronicobserver.blog.fc2.com/"); 42 | 43 | } 44 | 45 | private void DialogVersion_Load(object sender, EventArgs e) 46 | { 47 | 48 | this.Icon = ResourceManager.Instance.AppIcon; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/FormBrowserHost.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window 2 | { 3 | partial class FormBrowserHost 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // FormBrowserHost 34 | // 35 | this.AutoHidePortion = 150D; 36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 37 | this.ClientSize = new System.Drawing.Size(300, 200); 38 | this.DoubleBuffered = true; 39 | this.Font = new System.Drawing.Font("Microsoft YaHei", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); 40 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 41 | this.HideOnClose = true; 42 | this.Name = "FormBrowserHost"; 43 | this.Text = "浏览器"; 44 | this.Load += new System.EventHandler(this.FormBrowser_Load); 45 | this.Resize += new System.EventHandler(this.FormBrowserHost_Resize); 46 | this.ResumeLayout(false); 47 | 48 | } 49 | 50 | #endregion 51 | 52 | 53 | } 54 | } -------------------------------------------------------------------------------- /ElectronicObserver/Window/Integrate/FormCandidate.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Integrate 2 | { 3 | partial class FormCandidate 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // FormCandidate 34 | // 35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 37 | this.BackColor = System.Drawing.Color.Blue; 38 | this.ClientSize = new System.Drawing.Size(284, 261); 39 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 40 | this.Name = "FormCandidate"; 41 | this.ShowInTaskbar = false; 42 | this.Text = "FormCandidate"; 43 | this.TransparencyKey = System.Drawing.Color.Blue; 44 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormCandidate_FormClosed); 45 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.FormCandidate_Paint); 46 | this.Resize += new System.EventHandler(this.FormCandidate_Resize); 47 | this.ResumeLayout(false); 48 | 49 | } 50 | 51 | #endregion 52 | } 53 | } -------------------------------------------------------------------------------- /ElectronicObserver/Window/Integrate/FormCandidate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace ElectronicObserver.Window.Integrate 12 | { 13 | 14 | /// 15 | /// 選択中のウィンドウに表示する枠 16 | /// 17 | public partial class FormCandidate : Form 18 | { 19 | 20 | private Pen blackPen = new Pen(Color.Black, 5); 21 | 22 | public FormCandidate() 23 | { 24 | InitializeComponent(); 25 | } 26 | 27 | private void FormCandidate_Paint(object sender, PaintEventArgs e) 28 | { 29 | Graphics g = e.Graphics; 30 | g.DrawRectangle(blackPen, 2, 2, Width - 4, Height - 4); 31 | } 32 | 33 | private void FormCandidate_FormClosed(object sender, FormClosedEventArgs e) 34 | { 35 | blackPen.Dispose(); 36 | } 37 | 38 | private void FormCandidate_Resize(object sender, EventArgs e) 39 | { 40 | Invalidate(); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Integrate/FormCapturing.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace ElectronicObserver.Window.Integrate 2 | { 3 | partial class FormCapturing 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // FormCapturing 34 | // 35 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; 36 | this.BackColor = System.Drawing.Color.Blue; 37 | this.ClientSize = new System.Drawing.Size(133, 112); 38 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 39 | this.Name = "FormCapturing"; 40 | this.ShowInTaskbar = false; 41 | this.Text = "FormCapturing"; 42 | this.TopMost = true; 43 | this.TransparencyKey = System.Drawing.Color.Blue; 44 | this.ResumeLayout(false); 45 | 46 | } 47 | 48 | #endregion 49 | } 50 | } -------------------------------------------------------------------------------- /ElectronicObserver/Window/Integrate/FormCapturing.cs: -------------------------------------------------------------------------------- 1 | using ElectronicObserver.Resource; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace ElectronicObserver.Window.Integrate 13 | { 14 | 15 | /// 16 | /// マウスドラッグ中のポインタ表示 17 | /// 18 | public partial class FormCapturing : Form 19 | { 20 | public FormCapturing() 21 | { 22 | InitializeComponent(); 23 | } 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /ElectronicObserver/Window/Support/CustomFloatWindowFactory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using WeifenLuo.WinFormsUI.Docking; 8 | 9 | namespace ElectronicObserver.Window.Support 10 | { 11 | 12 | public class CustomFloatWindowFactory : DockPanelExtender.IFloatWindowFactory 13 | { 14 | 15 | public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, System.Drawing.Rectangle bounds) 16 | { 17 | return new CustomFloatWindow(dockPanel, pane, bounds); 18 | } 19 | 20 | public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane) 21 | { 22 | return new CustomFloatWindow(dockPanel, pane); 23 | } 24 | 25 | } 26 | 27 | 28 | public class CustomFloatWindow : FloatWindow 29 | { 30 | 31 | public CustomFloatWindow(DockPanel dockPanel, DockPane pane) 32 | : base(dockPanel, pane) 33 | { 34 | 35 | //FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; 36 | DoubleClickTitleBarToDock = false; 37 | } 38 | 39 | public CustomFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds) 40 | : base(dockPanel, pane, bounds) 41 | { 42 | 43 | //FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; 44 | DoubleClickTitleBarToDock = false; 45 | } 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ElectronicObserver/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Andante 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 | -------------------------------------------------------------------------------- /Libraries/DynamicJson.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RadarNyan/ElectronicObserver-ML/f13a3a5b1af74288fe95da33b9ef4f80d4463e75/Libraries/DynamicJson.dll -------------------------------------------------------------------------------- /Licenses/DockPanelSuite.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2007-2012 Weifen Luo (email: weifenluo@yahoo.com) and other contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Licenses/Nekoxy.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 veigr 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 | -------------------------------------------------------------------------------- /Licenses/SwfExtractor.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Andante 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 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2018/08/28 18:57:00 2 | 3.0.7-m5 3 | 替换内置浏览器为自制 Chromium 核心 4 | 舰队编成-定位舰娘功能对应「艦これ」二期 5 | 6 | 此为汉化版七四式电子观测仪 3.0 的最终版, 7 | 已实现对应「艦これ」二期的大部分功能, 8 | 无影响正常游戏的恶性 BUG 将不再更新。 9 | 10 | 下一版本将以原版 4.0 为基础从头开发, 11 | 浏览器也将换用原版新浏览器(同为 Chromium 核心) 12 | -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | --------------------------------------------------------------------------------