├── ElectronicObserver
├── Data
│ ├── ConstantsRes.en.Designer.cs
│ ├── IIdentifiable.cs
│ ├── Battle
│ │ ├── BattleNight.cs
│ │ ├── BattleDay.cs
│ │ ├── BattleAirRaid.cs
│ │ ├── BattleNormalNight.cs
│ │ ├── BattleNightOnly.cs
│ │ ├── BattleCombinedAirRaid.cs
│ │ ├── BattlePracticeNight.cs
│ │ ├── BattleCombinedNormalNight.cs
│ │ ├── BattleCombinedNightOnly.cs
│ │ ├── BattleAirBattle.cs
│ │ ├── BattleCombinedAirBattle.cs
│ │ ├── BattlePracticeDay.cs
│ │ ├── BattleCombinedWater.cs
│ │ ├── BattleNormalDay.cs
│ │ ├── Phase
│ │ │ ├── PhaseSearching.cs
│ │ │ └── PhaseShelling.cs
│ │ └── BattleCombinedNormalDay.cs
│ ├── Quest
│ │ ├── ProgressDocking.cs
│ │ ├── ProgressSupply.cs
│ │ ├── ProgressDiscard.cs
│ │ ├── ProgressDestruction.cs
│ │ ├── ProgressDevelopment.cs
│ │ ├── ProgressImprovement.cs
│ │ ├── ProgressConstruction.cs
│ │ ├── ProgressModernization.cs
│ │ ├── ProgressPractice.cs
│ │ ├── ProgressSlaughter.cs
│ │ └── ProgressExpedition.cs
│ ├── EquipmentType.cs
│ ├── UseItem.cs
│ ├── ResponseWrapper.cs
│ ├── APIWrapper.cs
│ ├── UseItemMaster.cs
│ ├── QuestData.cs
│ ├── ShipGroupManager.cs
│ ├── MissionData.cs
│ ├── IDDictionary.cs
│ └── ShipType.cs
├── 74eo.ico
├── Assets.zip
├── Assets
│ ├── AppIcon.ico
│ ├── Form
│ │ ├── Log.png
│ │ ├── Battle.png
│ │ ├── Dock.png
│ │ ├── Fleet.png
│ │ ├── Main.png
│ │ ├── Quest.png
│ │ ├── Arsenal.png
│ │ ├── Browser.png
│ │ ├── Compass.png
│ │ ├── AlbumShip.png
│ │ ├── DropRecord.png
│ │ ├── Information.png
│ │ ├── ShipGroup.png
│ │ ├── Configuration.png
│ │ ├── EquipmentList.png
│ │ ├── Headquarters.png
│ │ ├── ResourceChart.png
│ │ ├── WindowCapture.png
│ │ ├── AlbumEquipment.png
│ │ ├── ConstructionRecord.png
│ │ └── DevelopmentRecord.png
│ ├── Nothing.png
│ ├── AppIcon_16.png
│ ├── AppIcon_32.png
│ ├── AppIcon_48.png
│ ├── AppIcon_64.png
│ ├── Fleet
│ │ ├── Ready.png
│ │ ├── Damaged.png
│ │ ├── Docking.png
│ │ ├── NoShip.png
│ │ ├── Sortie.png
│ │ ├── Combined.png
│ │ ├── Expedition.png
│ │ ├── NotReplenished.png
│ │ ├── SortieDamaged.png
│ │ └── AnchorageRepairing.png
│ ├── Rarity
│ │ ├── Gold.png
│ │ ├── Red.png
│ │ ├── Black.png
│ │ ├── BlueA.png
│ │ ├── BlueB.png
│ │ ├── BlueC.png
│ │ ├── Cherry.png
│ │ ├── HoloA.png
│ │ ├── HoloB.png
│ │ └── Silver.png
│ ├── Browser
│ │ ├── Mute.png
│ │ ├── Other.png
│ │ ├── Zoom.png
│ │ ├── Navigate.png
│ │ ├── Refresh.png
│ │ ├── Unmute.png
│ │ ├── ZoomIn.png
│ │ ├── ZoomOut.png
│ │ └── ScreenShot.png
│ ├── Fairy
│ │ ├── Fairy1.png
│ │ ├── Fairy2.png
│ │ ├── Fairy3.png
│ │ └── Fairy4.png
│ ├── Item
│ │ ├── Catapult.png
│ │ ├── Blueprint.png
│ │ ├── PresentBox.png
│ │ ├── FurnitureCoin.png
│ │ ├── InstantRepair.png
│ │ ├── ModdingMaterial.png
│ │ ├── DevelopmentMaterial.png
│ │ └── InstantConstruction.png
│ ├── Parameter
│ │ ├── AA.png
│ │ ├── ASW.png
│ │ ├── HP.png
│ │ ├── LOS.png
│ │ ├── Armor.png
│ │ ├── Bomber.png
│ │ ├── Luck.png
│ │ ├── Range.png
│ │ ├── Speed.png
│ │ ├── Accuracy.png
│ │ ├── Aircraft.png
│ │ ├── Evasion.png
│ │ ├── Torpedo.png
│ │ └── Firepower.png
│ ├── Resource
│ │ ├── Ammo.png
│ │ ├── Fuel.png
│ │ ├── Bauxite.png
│ │ └── Steel.png
│ ├── Condition
│ │ ├── Normal.png
│ │ ├── Tired.png
│ │ ├── Sparkle.png
│ │ ├── LittleTired.png
│ │ └── VeryTired.png
│ ├── Equipment
│ │ ├── AAGun.png
│ │ ├── Bulge.png
│ │ ├── Engine.png
│ │ ├── Flare.png
│ │ ├── Locked.png
│ │ ├── RADAR.png
│ │ ├── Ration.png
│ │ ├── SONAR.png
│ │ ├── AAShell.png
│ │ ├── APShell.png
│ │ ├── ASPatrol.png
│ │ ├── Autogyro.png
│ │ ├── MainGunL.png
│ │ ├── MainGunM.png
│ │ ├── MainGunS.png
│ │ ├── Nothing.png
│ │ ├── Seaplane.png
│ │ ├── Supplies.png
│ │ ├── Torpedo.png
│ │ ├── Unknown.png
│ │ ├── AADirector.png
│ │ ├── DepthCharge.png
│ │ ├── FlyingBoat.png
│ │ ├── PicketCrew.png
│ │ ├── Searchlight.png
│ │ ├── DamageControl.png
│ │ ├── DrumCanister.png
│ │ ├── HighAngleGun.png
│ │ ├── LandingCraft.png
│ │ ├── SecondaryGun.png
│ │ ├── CommandFacility.png
│ │ ├── MaintenanceTeam.png
│ │ ├── RepairFacility.png
│ │ ├── RocketArtillery.png
│ │ ├── AmphibiousVehicle.png
│ │ ├── CarrierBasedBomber.png
│ │ ├── CarrierBasedRecon.png
│ │ ├── CarrierBasedAircraft.png
│ │ ├── CarrierBasedFighter.png
│ │ └── CarrierBasedTorpedo.png
│ ├── Headquarters
│ │ ├── Ship.png
│ │ └── Equipment.png
│ ├── Unused
│ │ ├── ShipState
│ │ │ ├── sunk.png
│ │ │ ├── escape.png
│ │ │ ├── repair.png
│ │ │ ├── damageL.png
│ │ │ ├── damageM.png
│ │ │ ├── damageS.png
│ │ │ └── expedition.png
│ │ └── Resource
│ │ │ ├── ammo_empty.png
│ │ │ ├── ammo_low.png
│ │ │ ├── fuel_empty.png
│ │ │ ├── fuel_low.png
│ │ │ ├── steel_low.png
│ │ │ ├── bauxite_low.png
│ │ │ ├── steel_empty.png
│ │ │ └── bauxite_empty.png
│ ├── Battle
│ │ ├── FormationEnemy01.png
│ │ ├── FormationEnemy02.png
│ │ ├── FormationEnemy03.png
│ │ ├── FormationEnemy04.png
│ │ └── FormationEnemy05.png
│ └── Record
│ │ ├── EnemyFleetRecord.csv
│ │ └── ShipParameterRecord.csv
├── packages.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
├── Observer
│ ├── kcsapi
│ │ ├── api_get_member
│ │ │ ├── payitem.cs
│ │ │ ├── record.cs
│ │ │ ├── picture_book.cs
│ │ │ ├── deck.cs
│ │ │ ├── material.cs
│ │ │ ├── questlist.cs
│ │ │ ├── basic.cs
│ │ │ ├── useitem.cs
│ │ │ ├── mapinfo.cs
│ │ │ ├── slot_item.cs
│ │ │ ├── ship2.cs
│ │ │ ├── kdock.cs
│ │ │ ├── ndock.cs
│ │ │ ├── ship_deck.cs
│ │ │ ├── ship3.cs
│ │ │ └── require_info.cs
│ │ ├── api_req_ranking
│ │ │ └── getlist.cs
│ │ ├── api_req_kousyou
│ │ │ ├── remodel_slotlist.cs
│ │ │ ├── createship.cs
│ │ │ ├── createship_speedchange.cs
│ │ │ ├── destroyitem2.cs
│ │ │ ├── remodel_slot.cs
│ │ │ ├── destroyship.cs
│ │ │ ├── getship.cs
│ │ │ └── createitem.cs
│ │ ├── api_req_member
│ │ │ ├── get_practice_enemyinfo.cs
│ │ │ ├── updatedeckname.cs
│ │ │ └── updatecomment.cs
│ │ ├── api_req_practice
│ │ │ ├── battle.cs
│ │ │ ├── battle_result.cs
│ │ │ └── midnight_battle.cs
│ │ ├── api_req_sortie
│ │ │ ├── battle.cs
│ │ │ ├── airbattle.cs
│ │ │ ├── ld_airbattle.cs
│ │ │ └── battleresult.cs
│ │ ├── api_req_hensei
│ │ │ ├── preset_select.cs
│ │ │ ├── combined.cs
│ │ │ └── change.cs
│ │ ├── api_req_battle_midnight
│ │ │ ├── battle.cs
│ │ │ └── sp_midnight.cs
│ │ ├── api_req_combined_battle
│ │ │ ├── battle.cs
│ │ │ ├── airbattle.cs
│ │ │ ├── battleresult.cs
│ │ │ ├── goback_port.cs
│ │ │ ├── sp_midnight.cs
│ │ │ ├── ld_airbattle.cs
│ │ │ ├── battle_water.cs
│ │ │ └── midnight_battle.cs
│ │ ├── api_req_kaisou
│ │ │ ├── marriage.cs
│ │ │ ├── remodeling.cs
│ │ │ ├── open_exslot.cs
│ │ │ └── slot_exchange_index.cs
│ │ ├── api_req_quest
│ │ │ └── clearitemget.cs
│ │ ├── api_req_hokyu
│ │ │ └── charge.cs
│ │ ├── api_req_map
│ │ │ ├── select_eventmap_rank.cs
│ │ │ ├── start.cs
│ │ │ └── next.cs
│ │ ├── api_req_nyukyo
│ │ │ ├── speedchange.cs
│ │ │ └── start.cs
│ │ ├── api_req_mission
│ │ │ └── start.cs
│ │ └── api_port
│ │ │ └── port.cs
│ ├── APIBase.cs
│ └── APIDictionary.cs
├── Window
│ ├── FormDialogue.cs
│ ├── Integrate
│ │ ├── FormCapturing.cs
│ │ ├── FormCandidate.cs
│ │ ├── FormCapturing.Designer.cs
│ │ └── FormCandidate.Designer.cs
│ ├── Control
│ │ ├── WindowCaptureButton.Designer.cs
│ │ ├── ShipStatusResource.Designer.cs
│ │ ├── ShipStatusHP.Designer.cs
│ │ ├── ShipStatusLevel.Designer.cs
│ │ ├── ShipStatusEquipment.Designer.cs
│ │ └── ImageLabel.Designer.cs
│ ├── Support
│ │ ├── CustomFloatWindowFactory.cs
│ │ └── ControlHelper.cs
│ ├── Dialog
│ │ ├── DialogTextSelect.cs
│ │ ├── DialogVersion.cs
│ │ ├── DialogTextInput.cs
│ │ └── DialogWhitecap.Designer.cs
│ └── FormBrowserHost.Designer.cs
├── Utility
│ ├── Mathematics
│ │ └── Fraction.cs
│ ├── SystemEvents.cs
│ ├── Storage
│ │ ├── SerializableKeyValuePair.cs
│ │ └── SerializableFont.cs
│ └── ErrorReporter.cs
├── App.config
├── Program.cs
└── Notifier
│ ├── NotifierRepair.cs
│ ├── NotifierConstruction.cs
│ ├── NotifierExpedition.cs
│ └── NotifierCondition.cs
├── Libraries
└── DynamicJson.dll
├── Browser
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
└── Program.cs
├── .gitmodules
├── BrowserLib
├── IBrowser.cs
└── Properties
│ └── AssemblyInfo.cs
├── Licenses
├── Nekoxy.txt
└── DockPanelSuite.txt
└── LICENSE
/ElectronicObserver/Data/ConstantsRes.en.Designer.cs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Libraries/DynamicJson.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/Libraries/DynamicJson.dll
--------------------------------------------------------------------------------
/ElectronicObserver/74eo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/74eo.ico
--------------------------------------------------------------------------------
/ElectronicObserver/Assets.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets.zip
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/AppIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/AppIcon.ico
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Log.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Log.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Nothing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Nothing.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/AppIcon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/AppIcon_16.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/AppIcon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/AppIcon_32.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/AppIcon_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/AppIcon_48.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/AppIcon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/AppIcon_64.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Ready.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Ready.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Battle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Battle.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Dock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Dock.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Fleet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Fleet.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Main.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Quest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Quest.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/Gold.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/Gold.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/Red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/Red.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Mute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Mute.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Other.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Other.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Zoom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Zoom.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fairy/Fairy1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fairy/Fairy1.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fairy/Fairy2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fairy/Fairy2.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fairy/Fairy3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fairy/Fairy3.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fairy/Fairy4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fairy/Fairy4.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Damaged.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Damaged.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Docking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Docking.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/NoShip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/NoShip.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Sortie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Sortie.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Arsenal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Arsenal.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Browser.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Compass.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/Catapult.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/Catapult.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/AA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/AA.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/ASW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/ASW.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/HP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/HP.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/LOS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/LOS.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/Black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/Black.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/BlueA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/BlueA.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/BlueB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/BlueB.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/BlueC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/BlueC.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/Cherry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/Cherry.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/HoloA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/HoloA.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/HoloB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/HoloB.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Rarity/Silver.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Rarity/Silver.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Resource/Ammo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Resource/Ammo.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Resource/Fuel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Resource/Fuel.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Navigate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Navigate.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Refresh.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/Unmute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/Unmute.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/ZoomIn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/ZoomIn.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/ZoomOut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/ZoomOut.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Condition/Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Condition/Normal.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Condition/Tired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Condition/Tired.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/AAGun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/AAGun.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Bulge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Bulge.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Engine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Engine.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Flare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Flare.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Locked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Locked.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/RADAR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/RADAR.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Ration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Ration.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/SONAR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/SONAR.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Combined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Combined.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/Expedition.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/Expedition.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/AlbumShip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/AlbumShip.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/DropRecord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/DropRecord.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Information.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/ShipGroup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/ShipGroup.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/Blueprint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/Blueprint.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/PresentBox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/PresentBox.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Armor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Armor.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Bomber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Bomber.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Luck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Luck.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Range.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Range.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Speed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Speed.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Resource/Bauxite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Resource/Bauxite.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Resource/Steel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Resource/Steel.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Browser/ScreenShot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Browser/ScreenShot.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Condition/Sparkle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Condition/Sparkle.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/AAShell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/AAShell.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/APShell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/APShell.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/ASPatrol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/ASPatrol.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Autogyro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Autogyro.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/MainGunL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/MainGunL.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/MainGunM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/MainGunM.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/MainGunS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/MainGunS.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Nothing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Nothing.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Seaplane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Seaplane.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Supplies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Supplies.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Torpedo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Torpedo.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Unknown.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Configuration.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/EquipmentList.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/EquipmentList.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/Headquarters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/Headquarters.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/ResourceChart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/ResourceChart.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/WindowCapture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/WindowCapture.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Headquarters/Ship.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Headquarters/Ship.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/FurnitureCoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/FurnitureCoin.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/InstantRepair.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/InstantRepair.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Accuracy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Accuracy.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Aircraft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Aircraft.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Evasion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Evasion.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Torpedo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Torpedo.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Condition/LittleTired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Condition/LittleTired.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Condition/VeryTired.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Condition/VeryTired.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/AADirector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/AADirector.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/DepthCharge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/DepthCharge.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/FlyingBoat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/FlyingBoat.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/PicketCrew.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/PicketCrew.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/Searchlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/Searchlight.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/NotReplenished.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/NotReplenished.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/SortieDamaged.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/SortieDamaged.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/AlbumEquipment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/AlbumEquipment.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/ModdingMaterial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/ModdingMaterial.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Parameter/Firepower.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Parameter/Firepower.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/sunk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/sunk.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Battle/FormationEnemy01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Battle/FormationEnemy01.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Battle/FormationEnemy02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Battle/FormationEnemy02.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Battle/FormationEnemy03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Battle/FormationEnemy03.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Battle/FormationEnemy04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Battle/FormationEnemy04.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Battle/FormationEnemy05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Battle/FormationEnemy05.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/DamageControl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/DamageControl.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/DrumCanister.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/DrumCanister.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/HighAngleGun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/HighAngleGun.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/LandingCraft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/LandingCraft.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/SecondaryGun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/SecondaryGun.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/ConstructionRecord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/ConstructionRecord.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Form/DevelopmentRecord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Form/DevelopmentRecord.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Headquarters/Equipment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Headquarters/Equipment.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Record/EnemyFleetRecord.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Record/EnemyFleetRecord.csv
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/escape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/escape.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/repair.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/repair.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CommandFacility.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CommandFacility.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/MaintenanceTeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/MaintenanceTeam.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/RepairFacility.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/RepairFacility.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/RocketArtillery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/RocketArtillery.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Fleet/AnchorageRepairing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Fleet/AnchorageRepairing.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/DevelopmentMaterial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/DevelopmentMaterial.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Item/InstantConstruction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Item/InstantConstruction.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Record/ShipParameterRecord.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Record/ShipParameterRecord.csv
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/ammo_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/ammo_empty.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/ammo_low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/ammo_low.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/fuel_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/fuel_empty.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/fuel_low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/fuel_low.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/steel_low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/steel_low.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/damageL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/damageL.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/damageM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/damageM.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/damageS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/damageS.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/AmphibiousVehicle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/AmphibiousVehicle.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CarrierBasedBomber.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CarrierBasedBomber.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CarrierBasedRecon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CarrierBasedRecon.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/bauxite_low.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/bauxite_low.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/steel_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/steel_empty.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/ShipState/expedition.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/ShipState/expedition.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CarrierBasedAircraft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CarrierBasedAircraft.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CarrierBasedFighter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CarrierBasedFighter.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Equipment/CarrierBasedTorpedo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Equipment/CarrierBasedTorpedo.png
--------------------------------------------------------------------------------
/ElectronicObserver/Assets/Unused/Resource/bauxite_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RyuuKitsune/ElectronicObserver/HEAD/ElectronicObserver/Assets/Unused/Resource/bauxite_empty.png
--------------------------------------------------------------------------------
/Browser/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ElectronicObserver/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "DockPanelSuite"]
2 | path = DockPanelSuite
3 | url = https://github.com/ryuukitsune/dockpanelsuite.git
4 | ignore = dirty
5 | [submodule "Titanium-Web-Proxy"]
6 | path = Titanium-Web-Proxy
7 | url = https://github.com/RyuuKitsune/Titanium-Web-Proxy.git
8 |
--------------------------------------------------------------------------------
/Browser/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ElectronicObserver/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/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 | /// 固有のIDを取得できることを示します。
11 | ///
12 | public interface IIdentifiable {
13 |
14 | int ID { get; }
15 |
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/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 | public class payitem : APIBase{
9 | public override string APIName {
10 | get { return "api_get_member/payitem"; }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/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 | public class record : APIBase {
10 | public override string APIName {
11 | get { return "api_get_member/record"; }
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/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 | public class getlist : APIBase {
10 |
11 | public override string APIName {
12 | get { return "api_req_ranking/getlist"; }
13 | }
14 |
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/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 | public class remodel_slotlist : APIBase {
9 | public override string APIName {
10 | get { return "api_req_kousyou/remodel_slotlist"; }
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/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 | public class picture_book : APIBase {
10 |
11 | public override string APIName {
12 | get { return "api_get_member/picture_book"; }
13 | }
14 |
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_req_member/get_practice_enemyinfo.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_member {
8 |
9 | public class get_practice_enemyinfo : APIBase {
10 |
11 |
12 | public override string APIName {
13 | get { return "api_req_member/get_practice_enemyinfo"; }
14 | }
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/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 | public abstract class BattleNight : BattleData {
14 |
15 | public PhaseNightBattle NightBattle { get; protected set; }
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/FormDialogue.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
12 | {
13 | public partial class FormDialogue : WeifenLuo.WinFormsUI.Docking.DockContent
14 | {
15 | public FormDialogue(FormMain parent)
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/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 | public partial class FormCapturing : Form {
18 | public FormCapturing() {
19 | InitializeComponent();
20 | }
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressDocking" )]
14 | public class ProgressDocking : ProgressData {
15 |
16 | public ProgressDocking( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "入渠" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressSupply" )]
14 | public class ProgressSupply : ProgressData {
15 |
16 | public ProgressSupply( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "補給" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class deck : 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 |
20 | public override string APIName {
21 | get { return "api_get_member/deck"; }
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/Quest/ProgressDiscard.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 | [DataContract( Name = "ProgressDiscard" )]
14 | public class ProgressDiscard : ProgressData {
15 |
16 | public ProgressDiscard( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "廃棄" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class battle : APIBase {
10 |
11 | public override void OnResponseReceived( dynamic data ) {
12 |
13 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
14 |
15 |
16 | base.OnResponseReceived( (object)data );
17 | }
18 |
19 | public override string APIName {
20 | get { return "api_req_practice/battle"; }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/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 | public class material : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Material.LoadFromResponse( APIName, data );
15 |
16 | base.OnResponseReceived( (object)data );
17 | }
18 |
19 | public override string APIName {
20 | get { return "api_get_member/material"; }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/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 | public class questlist : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Quest.LoadFromResponse( APIName, data );
15 |
16 | base.OnResponseReceived( (object)data );
17 | }
18 |
19 | public override string APIName {
20 | get { return "api_get_member/questlist"; }
21 | }
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class battle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_sortie/battle"; }
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class basic : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase.Instance.Admiral.LoadFromResponse( APIName, data );
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_get_member/basic"; }
22 | }
23 |
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/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 | public class preset_select : 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 {
20 | get { return "api_req_hensei/preset_select"; }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressDestruction" )]
14 | public class ProgressDestruction : ProgressData {
15 |
16 | public ProgressDestruction( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "解体" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressDevelopment" )]
14 | public class ProgressDevelopment : ProgressData {
15 |
16 | public ProgressDevelopment( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "開発" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressImprovement" )]
14 | public class ProgressImprovement : ProgressData {
15 |
16 | public ProgressImprovement( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "装備改修" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class airbattle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_sortie/airbattle"; }
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class ld_airbattle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_sortie/ld_airbattle"; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressConstruction" )]
14 | public class ProgressConstruction : ProgressData {
15 |
16 | public ProgressConstruction( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 |
21 | public override string GetClearCondition() {
22 | return "建造" + ProgressMax;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressModernization" )]
14 | public class ProgressModernization : ProgressData {
15 |
16 | public ProgressModernization( QuestData quest, int maxCount )
17 | : base( quest, maxCount ) {
18 | }
19 |
20 | public override string GetClearCondition() {
21 | return "近代化改修" + ProgressMax;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class battle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_battle_midnight/battle"; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class battle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_combined_battle/battle"; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class battleresult : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 |
21 | public override string APIName {
22 | get { return "api_req_sortie/battleresult"; }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class battle_result : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 |
21 | public override string APIName {
22 | get { return "api_req_practice/battle_result"; }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class midnight_battle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_practice/midnight_battle"; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class sp_midnight : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_battle_midnight/sp_midnight"; }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public class airbattle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_combined_battle/airbattle"; }
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class battleresult : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_combined_battle/battleresult"; }
22 | }
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 | 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 {
20 | get { return "api_req_combined_battle/goback_port"; }
21 | }
22 |
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class sp_midnight : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 |
21 | public override string APIName {
22 | get { return "api_req_combined_battle/sp_midnight"; }
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 | public class ld_airbattle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 | public override string APIName {
21 | get { return "api_req_combined_battle/ld_airbattle"; }
22 | }
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class marriage : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | Utility.Logger.Add( 2, string.Format( LoggerRes.JustMarried, KCDatabase.Instance.Ships[(int)data.api_id].Name ) );
15 |
16 | base.OnResponseReceived( (object)data );
17 | }
18 |
19 | public override string APIName {
20 | get { return "api_req_kaisou/marriage"; }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/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 | public class battle_water : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 |
21 | public override string APIName {
22 | get { return "api_req_combined_battle/battle_water"; }
23 | }
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 | public class midnight_battle : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 |
17 | base.OnResponseReceived( (object)data );
18 | }
19 |
20 |
21 | public override string APIName {
22 | get { return "api_req_combined_battle/midnight_battle"; }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class Fraction {
10 | public int Current { get; set; }
11 | public int Max { get; set; }
12 |
13 | public double Rate {
14 | get { return (double)Current / Math.Max( Max, 1 ); }
15 | }
16 |
17 |
18 | public Fraction() {
19 | Current = Max = 0;
20 | }
21 |
22 | public Fraction( int current, int max ) {
23 | Current = current;
24 | Max = max;
25 | }
26 |
27 | public override string ToString() {
28 | return string.Format( "{0}/{1}", Current, Max );
29 | }
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/Browser/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace Browser {
8 | static class Program {
9 | ///
10 | /// アプリケーションのメイン エントリ ポイントです。
11 | ///
12 | [STAThread]
13 | static void Main( string[] args ) {
14 | // FormBrowserHostから起動された時は引数に通信用URLが渡される
15 | if ( args.Length == 0 ) {
16 | MessageBox.Show( "これは七四式電子観測儀のサブプログラムであり、単体では起動できません。\r\n本体から起動してください。",
17 | "情報", MessageBoxButtons.OK, MessageBoxIcon.Information );
18 | return;
19 | }
20 | Application.EnableVisualStyles();
21 | Application.SetCompatibleTextRenderingDefault( false );
22 | Application.Run( new FormBrowser( args[0] ) );
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/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 | public class combined : APIBase {
11 |
12 | public override bool IsRequestSupported { get { return true; } }
13 | public override bool IsResponseSupported { get { return true; } }
14 |
15 | public override void OnRequestReceived( Dictionary data ) {
16 |
17 | KCDatabase.Instance.Fleet.LoadFromRequest( APIName, data );
18 |
19 | base.OnRequestReceived( data );
20 | }
21 |
22 | public override string APIName {
23 | get { return "api_req_hensei/combined"; }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/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 | public class remodeling : APIBase {
11 |
12 | public override bool IsRequestSupported { get { return true; } }
13 | public override bool IsResponseSupported { get { return false; } }
14 |
15 | public override void OnRequestReceived( Dictionary data ) {
16 |
17 | KCDatabase.Instance.Fleet.LoadFromRequest( APIName, data );
18 |
19 | base.OnRequestReceived( data );
20 | }
21 |
22 | public override string APIName {
23 | get { return "api_req_kaisou/remodeling"; }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ElectronicObserver/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/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 | public abstract class BattleDay : BattleData {
14 |
15 | public PhaseAirBattle AirBattle { get; protected set; }
16 | public PhaseSupport Support { get; protected set; }
17 | public PhaseTorpedo OpeningTorpedo { get; protected set; }
18 | public PhaseShelling Shelling1 { get; protected set; }
19 | public PhaseShelling Shelling2 { get; protected set; }
20 | public PhaseShelling Shelling3 { get; protected set; }
21 | public PhaseTorpedo Torpedo { get; protected set; }
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/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 | public static class SystemEvents {
13 |
14 | public static bool UpdateTimerEnabled { get; set; }
15 |
16 | public static event Action UpdateTimerTick = delegate { };
17 | public static event Action SystemShuttingDown = delegate { };
18 |
19 |
20 | static SystemEvents() {
21 | UpdateTimerEnabled = true;
22 | }
23 |
24 | internal static void OnUpdateTimerTick() {
25 | if ( UpdateTimerEnabled )
26 | UpdateTimerTick();
27 | }
28 | internal static void OnSystemShuttingDown() { SystemShuttingDown(); }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/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 | public class change : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase.Instance.Fleet.LoadFromRequest( APIName, data );
16 |
17 | base.OnRequestReceived( data );
18 | }
19 |
20 |
21 | public override bool IsRequestSupported { get { return true; } }
22 | public override bool IsResponseSupported { get { return false; } }
23 |
24 |
25 |
26 | public override string APIName {
27 | get { return "api_req_hensei/change"; }
28 | }
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/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 | public class useitem : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 | db.UseItems.Clear();
17 | foreach ( var elem in data ) {
18 |
19 | var item = new UseItem();
20 | item.LoadFromResponse( APIName, elem );
21 | db.UseItems.Add( item );
22 |
23 | }
24 |
25 | base.OnResponseReceived( (object)data );
26 | }
27 |
28 | public override string APIName {
29 | get { return "api_get_member/useitem"; }
30 | }
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/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 | public class clearitemget : APIBase {
11 |
12 | public override void OnRequestReceived( Dictionary data ) {
13 |
14 | KCDatabase.Instance.Quest.LoadFromRequest( APIName, data );
15 |
16 | base.OnRequestReceived( data );
17 | }
18 |
19 |
20 | public override bool IsRequestSupported { get { return true; } }
21 | public override bool IsResponseSupported { get { return false; } }
22 |
23 |
24 | public override string APIName {
25 | get { return "api_req_quest/clearitemget"; }
26 | }
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/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 | public class mapinfo : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 | foreach ( var elem in data ) {
17 |
18 | int id = (int)elem.api_id;
19 |
20 | if ( db.MapInfo[id] != null ) {
21 | db.MapInfo[id].LoadFromResponse( APIName, elem );
22 | }
23 | }
24 |
25 |
26 | base.OnResponseReceived( (object)data );
27 | }
28 |
29 |
30 | public override string APIName {
31 | get { return "api_get_member/mapinfo"; }
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/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 | [DebuggerDisplay( "[{ID}] : {Name}" )]
14 | public class EquipmentType : ResponseWrapper, IIdentifiable {
15 |
16 | ///
17 | /// 装備の種別
18 | ///
19 | public int TypeID {
20 | get { return (int)RawData.api_id; }
21 | }
22 |
23 | ///
24 | /// 名前
25 | ///
26 | public string Name {
27 | get { return RawData.api_name; }
28 | }
29 |
30 | //show_flg
31 |
32 |
33 | public int ID {
34 | get { return TypeID; }
35 | }
36 |
37 |
38 | }
39 |
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/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 | [DebuggerDisplay( "{KCDatabase.Instance.MasterUseItems[ItemID].Name} x {Count}" )]
14 | public class UseItem : ResponseWrapper, IIdentifiable {
15 |
16 | ///
17 | /// アイテムID
18 | ///
19 | public int ItemID {
20 | get { return (int)RawData.api_id; }
21 | }
22 |
23 | ///
24 | /// 個数
25 | ///
26 | public int Count {
27 | get { return (int)RawData.api_count; }
28 | }
29 |
30 |
31 |
32 | public int ID {
33 | get { return ItemID; }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/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 | public class updatedeckname : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase.Instance.Fleet.Fleets[int.Parse( data["api_deck_id"] )].LoadFromRequest( APIName, data );
16 |
17 | base.OnRequestReceived( data );
18 | }
19 |
20 |
21 | public override bool IsRequestSupported { get { return true; } }
22 | public override bool IsResponseSupported { get { return false; } }
23 |
24 | public override string APIName {
25 | get { return "api_req_member/updatedeckname"; }
26 | }
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/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 | ///
13 | public class BattleAirRaid : BattleDay {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | AirBattle = new PhaseAirBattle( this );
19 | // 支援は出ないものとする
20 |
21 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
22 | }
23 |
24 | public override string APIName {
25 | get { return "api_req_sortie/ld_airbattle"; }
26 | }
27 |
28 | public override BattleTypeFlag BattleType {
29 | get { return BattleTypeFlag.Day; }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/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 | public class slot_item : APIBase {
12 |
13 |
14 | public override void OnResponseReceived( dynamic data ) {
15 |
16 | KCDatabase db = KCDatabase.Instance;
17 |
18 |
19 | db.Equipments.Clear();
20 | foreach ( var elem in data ) {
21 |
22 | var eq = new EquipmentData();
23 | eq.LoadFromResponse( APIName, elem );
24 | db.Equipments.Add( eq );
25 |
26 | }
27 |
28 | db.Battle.LoadFromResponse( APIName, data );
29 |
30 | base.OnResponseReceived( (object)data );
31 | }
32 |
33 | public override string APIName {
34 | get { return "api_get_member/slot_item"; }
35 | }
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/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 | public class open_exslot : APIBase {
11 |
12 | public override void OnRequestReceived( Dictionary data ) {
13 |
14 | var ship = KCDatabase.Instance.Ships[Convert.ToInt32( data["api_id"] )];
15 | if ( ship != null ) {
16 | ship.LoadFromRequest( APIName, data );
17 | }
18 |
19 | base.OnRequestReceived( data );
20 | }
21 |
22 |
23 | public override bool IsRequestSupported { get { return true; } }
24 | public override bool IsResponseSupported { get { return false; } }
25 |
26 | public override string APIName {
27 | get { return "api_req_kaisou/open_exslot"; }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/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 | ///
13 | public class BattleNormalNight : BattleNight {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | NightBattle = new PhaseNightBattle( this, false );
19 |
20 | NightBattle.EmulateBattle( _resultHPs, _attackDamages );
21 |
22 | }
23 |
24 |
25 | public override string APIName {
26 | get { return "api_req_battle_midnight/battle"; }
27 | }
28 |
29 | public override BattleTypeFlag BattleType {
30 | get { return BattleTypeFlag.Night; }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/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 |
8 | namespace ElectronicObserver {
9 | static class Program {
10 | ///
11 | /// アプリケーションのメイン エントリ ポイントです。
12 | ///
13 | [STAThread]
14 | static void Main() {
15 |
16 | var mutex = new System.Threading.Mutex( false, Application.ExecutablePath.Replace( '\\', '/' ) );
17 |
18 | if ( !mutex.WaitOne( 0, false ) ) {
19 | // 多重起動禁止
20 | MessageBox.Show( "既に起動しています。\r\n多重起動はできません。", "七四式電子観測儀", MessageBoxButtons.OK, MessageBoxIcon.Error );
21 | return;
22 | }
23 |
24 | Application.EnableVisualStyles();
25 | Application.SetCompatibleTextRenderingDefault( false );
26 | Application.Run( new FormMain() );
27 |
28 | mutex.ReleaseMutex();
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/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 | ///
13 | public class BattleNightOnly : BattleNight {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | NightBattle = new PhaseNightBattle( this, false );
19 |
20 | NightBattle.EmulateBattle( _resultHPs, _attackDamages );
21 |
22 | }
23 |
24 |
25 | public override string APIName {
26 | get { return "api_req_battle_midnight/sp_midnight"; }
27 | }
28 |
29 | public override BattleTypeFlag BattleType {
30 | get { return BattleTypeFlag.Night; }
31 | }
32 |
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/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 | public class createship : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | //undone: このAPIが呼ばれた後 api_get_member/kdock が呼ばれ情報自体は更新されるので、建造ログのために使用?
16 |
17 | KCDatabase.Instance.Material.LoadFromRequest( APIName, data );
18 |
19 | base.OnRequestReceived( data );
20 | }
21 |
22 | public override bool IsRequestSupported { get { return true; } }
23 | public override bool IsResponseSupported { get { return false; } }
24 |
25 |
26 | public override string APIName {
27 | get { return "api_req_kousyou/createship"; }
28 | }
29 | }
30 |
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/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 | ///
13 | public class BattleCombinedAirRaid : BattleDay {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | AirBattle = new PhaseAirBattle( this );
19 | // 支援はないものとする
20 |
21 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
22 |
23 | }
24 |
25 |
26 | public override string APIName {
27 | get { return "api_req_combined_battle/ld_airbattle"; }
28 | }
29 |
30 | public override BattleData.BattleTypeFlag BattleType {
31 | get { return BattleTypeFlag.Day | BattleTypeFlag.Combined; }
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/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 | public class BattlePracticeNight : BattleNight {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | NightBattle = new PhaseNightBattle( this, false );
19 |
20 | NightBattle.EmulateBattle( _resultHPs, _attackDamages );
21 |
22 | }
23 |
24 |
25 | public override string APIName {
26 | get { return "api_req_practice/midnight_battle"; }
27 | }
28 |
29 | public override BattleTypeFlag BattleType {
30 | get { return BattleTypeFlag.Night | BattleTypeFlag.Practice; }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/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 | public class charge : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 |
18 | //api_ship
19 | foreach ( var elem in data.api_ship ) {
20 |
21 | int shipID = (int)elem.api_id;
22 | ShipData ship = db.Ships[shipID];
23 |
24 | ship.LoadFromResponse( APIName, elem );
25 | }
26 |
27 |
28 | //api_material
29 | db.Material.LoadFromResponse( APIName, data.api_material );
30 |
31 |
32 | base.OnResponseReceived( (object)data );
33 | }
34 |
35 | public override string APIName {
36 | get { return "api_req_hokyu/charge"; }
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/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 | public class updatecomment : APIBase {
11 |
12 | public override bool IsRequestSupported { get { return true; } }
13 | public override bool IsResponseSupported { get { return false; } }
14 |
15 | public override void OnRequestReceived( Dictionary data ) {
16 |
17 | // 🎃
18 | if ( data["api_cmt"].ToLower() == "jackolantern" ) {
19 | new Window.Dialog.DialogHalloween().Show();
20 | }
21 |
22 | KCDatabase.Instance.Admiral.LoadFromRequest( APIName, data );
23 |
24 | base.OnRequestReceived( data );
25 | }
26 |
27 | public override string APIName {
28 | get { return "api_req_member/updatecomment"; }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/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 | public class ship2 : APIBase {
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 |
18 | //api_data
19 | db.Ships.Clear();
20 | foreach ( var elem in data.api_data ) {
21 |
22 | var a = new ShipData();
23 | a.LoadFromResponse( APIName, elem );
24 | db.Ships.Add( a );
25 |
26 | }
27 |
28 |
29 | //api_data_deck
30 | db.Fleet.LoadFromResponse( APIName, data.api_data_deck );
31 |
32 | base.OnResponseReceived( (object)data );
33 | }
34 |
35 | public override string APIName {
36 | get { return "api_get_member/ship2"; }
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/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 | public class select_eventmap_rank : APIBase {
11 |
12 | public override void OnRequestReceived( Dictionary data ) {
13 |
14 | var mapinfo = KCDatabase.Instance.MapInfo[int.Parse( data["api_maparea_id"] ) * 10 + int.Parse( data["api_map_no"] )];
15 | if ( mapinfo != null )
16 | mapinfo.LoadFromRequest( APIName, data );
17 |
18 | base.OnRequestReceived( data );
19 | }
20 |
21 |
22 | public override bool IsRequestSupported { get { return true; } }
23 | public override bool IsResponseSupported { get { return false; } }
24 |
25 |
26 | public override string APIName {
27 | get { return "api_req_map/select_eventmap_rank"; }
28 | }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/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 | public class kdock : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | foreach ( var ars in data ) {
18 |
19 | int id = (int)ars.api_id;
20 |
21 | if ( !db.Arsenals.ContainsKey( id ) ) {
22 | var a = new ArsenalData();
23 | a.LoadFromResponse( APIName, ars );
24 | db.Arsenals.Add( a );
25 |
26 | } else {
27 | db.Arsenals[id].LoadFromResponse( APIName, ars );
28 | }
29 | }
30 |
31 |
32 | base.OnResponseReceived( (object)data );
33 | }
34 |
35 |
36 | public override string APIName {
37 | get { return "api_get_member/kdock"; }
38 | }
39 | }
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/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 | /// Responseを受信しデータを処理するクラスの基底です。
12 | ///
13 | public abstract class ResponseWrapper {
14 |
15 | ///
16 | /// 生の受信データ(api_data)
17 | ///
18 | public dynamic RawData { get; private set; }
19 |
20 | ///
21 | /// Responseを読み込みます。
22 | ///
23 | /// 読み込むAPIの名前。
24 | /// 受信したデータ。
25 | public virtual void LoadFromResponse( string apiname, dynamic data ) {
26 | RawData = data;
27 | }
28 |
29 | ///
30 | /// 現在のデータが有効かを取得します。
31 | ///
32 | public bool IsAvailable {
33 | get { return RawData != null; }
34 | }
35 |
36 | public ResponseWrapper() {
37 | RawData = null;
38 | }
39 |
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/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 | public class speedchange : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | db.Docks[int.Parse( data["api_ndock_id"] )].LoadFromResponse( APIName, data );
18 | db.Material.InstantRepair--;
19 |
20 |
21 | db.Fleet.LoadFromRequest( APIName, data );
22 |
23 | base.OnRequestReceived( data );
24 | }
25 |
26 |
27 | public override bool IsRequestSupported { get { return true; } }
28 | public override bool IsResponseSupported { get { return false; } }
29 |
30 | public override string APIName {
31 | get { return "api_req_nyukyo/speedchange"; }
32 | }
33 |
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/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 | ///
14 | public class BattleCombinedNormalNight : BattleNight {
15 |
16 | public override void LoadFromResponse( string apiname, dynamic data ) {
17 | base.LoadFromResponse( apiname, (object)data );
18 |
19 | NightBattle = new PhaseNightBattle( this, true );
20 |
21 | NightBattle.EmulateBattle( _resultHPs, _attackDamages );
22 |
23 | }
24 |
25 |
26 | public override string APIName {
27 | get { return "api_req_combined_battle/midnight_battle"; }
28 | }
29 |
30 | public override BattleData.BattleTypeFlag BattleType {
31 | get { return BattleTypeFlag.Night | BattleTypeFlag.Combined; }
32 | }
33 |
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/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 | ///
14 | public class BattleCombinedNightOnly : BattleNight {
15 |
16 | public override void LoadFromResponse( string apiname, dynamic data ) {
17 | base.LoadFromResponse( apiname, (object)data );
18 |
19 | NightBattle = new PhaseNightBattle( this, true );
20 |
21 | NightBattle.EmulateBattle( _resultHPs, _attackDamages );
22 |
23 | }
24 |
25 |
26 |
27 | public override string APIName {
28 | get { return "api_req_combined_battle/sp_midnight"; }
29 | }
30 |
31 |
32 | public override BattleData.BattleTypeFlag BattleType {
33 | get { return BattleTypeFlag.Night | BattleTypeFlag.Combined; }
34 | }
35 |
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/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 | public partial class FormCandidate : Form {
17 |
18 | private Pen blackPen = new Pen( Color.Black, 5 );
19 |
20 | public FormCandidate() {
21 | InitializeComponent();
22 | }
23 |
24 | private void FormCandidate_Paint( object sender, PaintEventArgs e ) {
25 | Graphics g = e.Graphics;
26 | g.DrawRectangle( blackPen, 2, 2, Width - 4, Height - 4 );
27 | }
28 |
29 | private void FormCandidate_FormClosed( object sender, FormClosedEventArgs e ) {
30 | blackPen.Dispose();
31 | }
32 |
33 | private void FormCandidate_Resize( object sender, EventArgs e ) {
34 | Invalidate();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/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 | public class ndock : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | foreach ( var dock in data ) {
18 |
19 | int id = (int)dock.api_id;
20 |
21 | if ( !db.Docks.ContainsKey( id ) ) {
22 | var d = new DockData();
23 | d.LoadFromResponse( APIName, dock );
24 | db.Docks.Add( d );
25 |
26 | } else {
27 | db.Docks[id].LoadFromResponse( APIName, dock );
28 | }
29 | }
30 |
31 |
32 | db.Fleet.LoadFromResponse( APIName, data );
33 |
34 | base.OnResponseReceived( (object)data );
35 | }
36 |
37 | public override string APIName {
38 | get { return "api_get_member/ndock"; }
39 | }
40 | }
41 |
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/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 | public class createship_speedchange : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | ArsenalData arsenal = db.Arsenals[int.Parse( data["api_kdock_id"])];
18 |
19 | arsenal.State = 3;
20 | db.Material.InstantConstruction -= arsenal.Fuel >= 1000 ? 10 : 1;
21 |
22 |
23 | base.OnRequestReceived( data );
24 | }
25 |
26 |
27 | public override bool IsRequestSupported { get { return true; } }
28 | public override bool IsResponseSupported { get { return false; } }
29 |
30 |
31 | public override string APIName {
32 | get { return "api_req_kousyou/createship_speedchange"; }
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressPractice" )]
14 | public class ProgressPractice : ProgressData {
15 |
16 | ///
17 | /// 勝利のみカウントする
18 | ///
19 | [DataMember]
20 | private bool WinOnly { get; set; }
21 |
22 |
23 | public ProgressPractice( QuestData quest, int maxCount, bool winOnly )
24 | : base( quest, maxCount ) {
25 |
26 | WinOnly = winOnly;
27 | }
28 |
29 |
30 | public void Increment( string rank ) {
31 |
32 | if ( WinOnly && Constants.GetWinRank( rank ) < Constants.GetWinRank( "B" ) )
33 | return;
34 |
35 | Increment();
36 | }
37 |
38 |
39 | public override string GetClearCondition() {
40 | return "演習" + ( WinOnly ? "勝利" : "" ) + ProgressMax;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/WindowCaptureButton.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class WindowCaptureButton {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // WindowCaptureButton
29 | //
30 | this.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
31 | this.ResumeLayout(false);
32 |
33 | }
34 |
35 | #endregion
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/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 | /// Responseに加え、Requestも扱うことのできるクラスの基底です。
12 | ///
13 | public abstract class APIWrapper : ResponseWrapper {
14 |
15 | public Dictionary RequestData { get; private set; }
16 |
17 |
18 | public APIWrapper()
19 | : base() {
20 |
21 | RequestData = new Dictionary();
22 |
23 | }
24 |
25 |
26 | public virtual void LoadFromRequest( string apiname, Dictionary data ) {
27 |
28 | /*
29 | // data is string:
30 | data = HttpUtility.UrlDecode( data );
31 |
32 | RequestData.Clear();
33 | foreach ( string unit in data.Split( "&".ToCharArray() ) ) {
34 | string[] pair = unit.Split( "=".ToCharArray() );
35 | RequestData.Add( pair[0], pair[1] );
36 | }
37 | */
38 |
39 | RequestData = data;
40 | }
41 |
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/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 | public class slot_exchange_index : APIBase {
11 |
12 | private int shipID = -1;
13 |
14 | public override bool IsRequestSupported { get { return true; } }
15 | public override bool IsResponseSupported { get { return true; } }
16 |
17 | public override void OnRequestReceived( Dictionary data ) {
18 |
19 | shipID = int.Parse( data["api_id"] );
20 |
21 | base.OnRequestReceived( data );
22 | }
23 |
24 | public override void OnResponseReceived( dynamic data ) {
25 |
26 | var ship = KCDatabase.Instance.Ships[shipID];
27 | if ( ship != null )
28 | ship.LoadFromResponse( APIName, data );
29 |
30 | base.OnResponseReceived( (object)data );
31 | }
32 |
33 | public override string APIName {
34 | get { return "api_req_kaisou/slot_exchange_index"; }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/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 | /// FormBrowserのインターフェス
11 | /// WCFでプロセス間通信用
12 | ///
13 | [ServiceContract]
14 | public interface IBrowser {
15 | [OperationContract]
16 | void ConfigurationChanged( BrowserConfiguration conf );
17 |
18 | [OperationContract]
19 | void InitialAPIReceived();
20 |
21 | [OperationContract]
22 | void SaveScreenShot( string path, int format );
23 |
24 | [OperationContract]
25 | void RefreshBrowser();
26 |
27 | [OperationContract]
28 | void ApplyZoom();
29 |
30 | [OperationContract]
31 | void Navigate( string url );
32 |
33 | ///
34 | /// プロキシをセット
35 | ///
36 | [OperationContract]
37 | void SetProxy( string proxy );
38 |
39 | [OperationContract]
40 | void ApplyStyleSheet();
41 |
42 | [OperationContract]
43 | void CloseBrowser();
44 |
45 | [OperationContract]
46 | void SetIconResource( byte[] canvas );
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/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 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute( "Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0" )]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ( (Settings)( global::System.Configuration.ApplicationSettingsBase.Synchronized( new Settings() ) ) );
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/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 | public class ship_deck : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 |
17 | //api_ship_data
18 | foreach ( var elem in data.api_ship_data ) {
19 |
20 | int id = (int)elem.api_id;
21 | ShipData ship = db.Ships[id];
22 |
23 | if ( ship != null ) {
24 | ship.LoadFromResponse( APIName, elem );
25 |
26 | } else { //ないとは思うけど
27 | var a = new ShipData();
28 | a.LoadFromResponse( APIName, elem );
29 | db.Ships.Add( a );
30 |
31 | }
32 |
33 | }
34 |
35 |
36 | //api_deck_data
37 | db.Fleet.LoadFromResponse( APIName, data.api_deck_data );
38 |
39 | base.OnResponseReceived( (object)data );
40 | }
41 |
42 | public override string APIName {
43 | get { return "api_get_member/ship_deck"; }
44 | }
45 |
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/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 | ///
13 | public class BattleAirBattle : BattleDay {
14 |
15 | public PhaseAirBattle AirBattle2 { get; protected set; }
16 |
17 | public override void LoadFromResponse( string apiname, dynamic data ) {
18 | base.LoadFromResponse( apiname, (object)data );
19 |
20 | AirBattle = new PhaseAirBattle( this );
21 | Support = new PhaseSupport( this );
22 | AirBattle2 = new PhaseAirBattle( this, "2" );
23 |
24 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
25 | Support.EmulateBattle( _resultHPs, _attackDamages );
26 | AirBattle2.EmulateBattle( _resultHPs, _attackDamages );
27 |
28 | }
29 |
30 | public override string APIName {
31 | get { return "api_req_sortie/airbattle"; }
32 | }
33 |
34 | public override BattleData.BattleTypeFlag BattleType {
35 | get { return BattleTypeFlag.Day; }
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Browser/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.34014
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 Browser.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 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Original work copyright (c) 2014 Andante
4 | Translation work copyright (c) 2015 Ryuu Kitsune
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "SerializableKeyValuePair" )]
11 | public struct SerializableKeyValuePair {
12 |
13 |
14 | public SerializableKeyValuePair( TKey key, TValue value ) {
15 | Key = key;
16 | Value = value;
17 | }
18 |
19 | public SerializableKeyValuePair( KeyValuePair value ) {
20 | Key = value.Key;
21 | Value = value.Value;
22 | }
23 |
24 |
25 | [DataMember]
26 | public TKey Key;
27 |
28 | [DataMember]
29 | public TValue Value;
30 |
31 |
32 | public static implicit operator KeyValuePair( SerializableKeyValuePair value ) {
33 | return new KeyValuePair( value.Key, value.Value );
34 | }
35 |
36 | public static implicit operator SerializableKeyValuePair( KeyValuePair value ) {
37 | return new SerializableKeyValuePair( value.Key, value.Value );
38 | }
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/Browser/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
6 | // アセンブリに関連付けられている情報を変更するには、
7 | // これらの属性値を変更してください。
8 | [assembly: AssemblyTitle( "EOBrowser" )]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct( "ElectronicObserver" )]
13 | [assembly: AssemblyCopyright( "Copyright © 2015 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("e5c1a717-5d59-44a4-81f0-1742d4b963a8")]
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/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 | public class destroyitem2 : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | foreach ( string sid in data["api_slotitem_ids"].Split( ",".ToCharArray() ) ) {
18 |
19 | int id = int.Parse( sid );
20 | Utility.Logger.Add( 2, KCDatabase.Instance.Equipments[id].NameWithLevel + " を廃棄しました。" );
21 | db.Equipments.Remove( id );
22 | }
23 |
24 | base.OnRequestReceived( data );
25 | }
26 |
27 |
28 | public override void OnResponseReceived( dynamic data ) {
29 |
30 | KCDatabase.Instance.Material.LoadFromResponse( APIName, data );
31 |
32 | base.OnResponseReceived( (object)data );
33 | }
34 |
35 |
36 | public override bool IsRequestSupported { get { return true; } }
37 | public override bool IsResponseSupported { get { return true; } }
38 |
39 | public override string APIName {
40 | get { return "api_req_kousyou/destroyitem2"; }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/ShipStatusResource.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class ShipStatusResource {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // ShipStatusResource
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.DoubleBuffered = true;
32 | this.Name = "ShipStatusResource";
33 | this.Size = new System.Drawing.Size(60, 20);
34 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusResource_Paint);
35 | this.ResumeLayout(false);
36 |
37 | }
38 |
39 | #endregion
40 |
41 |
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/ShipStatusHP.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class ShipStatusHP {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // ShipStatusHP
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.DoubleBuffered = true;
32 | this.Name = "ShipStatusHP";
33 | this.Size = new System.Drawing.Size(80, 20);
34 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusHP_Paint);
35 | this.ResumeLayout(false);
36 |
37 | }
38 |
39 | #endregion
40 |
41 |
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/ShipStatusLevel.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class ShipStatusLevel {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // ShipStatusLevel
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.DoubleBuffered = true;
32 | this.Name = "ShipStatusLevel";
33 | this.Size = new System.Drawing.Size(80, 20);
34 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusLevel_Paint);
35 | this.ResumeLayout(false);
36 |
37 | }
38 |
39 | #endregion
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/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 | ///
14 | public class BattleCombinedAirBattle : BattleDay {
15 |
16 | public PhaseAirBattle AirBattle2 { get; protected set; }
17 |
18 | public override void LoadFromResponse( string apiname, dynamic data ) {
19 | base.LoadFromResponse( apiname, (object)data );
20 |
21 | AirBattle = new PhaseAirBattle( this );
22 | Support = new PhaseSupport( this );
23 | AirBattle2 = new PhaseAirBattle( this, "2" );
24 |
25 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
26 | Support.EmulateBattle( _resultHPs, _attackDamages );
27 | AirBattle2.EmulateBattle( _resultHPs, _attackDamages );
28 |
29 | }
30 |
31 |
32 | public override string APIName {
33 | get { return "api_req_combined_battle/airbattle"; }
34 | }
35 |
36 |
37 | public override BattleData.BattleTypeFlag BattleType {
38 | get { return BattleTypeFlag.Day | BattleTypeFlag.Combined; }
39 | }
40 |
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/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 | public class CustomFloatWindowFactory : DockPanelExtender.IFloatWindowFactory {
12 |
13 | public FloatWindow CreateFloatWindow( DockPanel dockPanel, DockPane pane, System.Drawing.Rectangle bounds ) {
14 | return new CustomFloatWindow( dockPanel, pane, bounds );
15 | }
16 |
17 | public FloatWindow CreateFloatWindow( DockPanel dockPanel, DockPane pane ) {
18 | return new CustomFloatWindow( dockPanel, pane );
19 | }
20 |
21 | }
22 |
23 |
24 | public class CustomFloatWindow : FloatWindow {
25 |
26 | public CustomFloatWindow( DockPanel dockPanel, DockPane pane )
27 | : base( dockPanel, pane ) {
28 |
29 | //FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
30 | DoubleClickTitleBarToDock = false;
31 | }
32 |
33 | public CustomFloatWindow( DockPanel dockPanel, DockPane pane, Rectangle bounds )
34 | : base( dockPanel, pane, bounds ) {
35 |
36 | //FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
37 | DoubleClickTitleBarToDock = false;
38 | }
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/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 | public class ship3 : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 | //api_ship_data
17 | foreach ( var elem in data.api_ship_data ) {
18 |
19 | int id = (int)elem.api_id;
20 |
21 | ShipData ship = db.Ships[id];
22 | ship.LoadFromResponse( APIName, elem );
23 |
24 | for ( int i = 0; i < ship.Slot.Count; i++ ) {
25 | if ( ship.Slot[i] == -1 ) continue;
26 | if ( !db.Equipments.ContainsKey( ship.Slot[i] ) ) { //改装時に新装備を入手するが、追加される前にIDを与えられてしまうため
27 | EquipmentData eq = new EquipmentData();
28 | eq.LoadFromResponse( APIName, ship.Slot[i] );
29 | db.Equipments.Add( eq );
30 | }
31 | }
32 |
33 | }
34 |
35 | //api_deck_data
36 | db.Fleet.LoadFromResponse( APIName, data.api_deck_data );
37 |
38 |
39 |
40 | base.OnResponseReceived( (object)data );
41 | }
42 |
43 |
44 | public override string APIName {
45 | get { return "api_get_member/ship3"; }
46 | }
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/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/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 | [DataContract( Name = "ProgressSlaughter" )]
14 | public class ProgressSlaughter : ProgressData {
15 |
16 | ///
17 | /// 対象となる艦種リスト
18 | ///
19 | [DataMember]
20 | private HashSet TargetShipType { get; set; }
21 |
22 | public ProgressSlaughter( QuestData quest, int maxCount, int[] targetShipType )
23 | : base( quest, maxCount ) {
24 |
25 | TargetShipType = targetShipType == null ? null : new HashSet( targetShipType );
26 |
27 | }
28 |
29 |
30 | public void Increment( int shipTypeID ) {
31 | if ( TargetShipType.Contains( shipTypeID ) )
32 | Increment();
33 | }
34 |
35 |
36 | public override string GetClearCondition() {
37 | StringBuilder sb = new StringBuilder();
38 | if ( TargetShipType != null ) {
39 | sb.Append( string.Join( "・", TargetShipType.OrderBy( s => s ).Select( s => KCDatabase.Instance.ShipTypes[s].Name ) ) );
40 | }
41 |
42 | sb.Append( "撃沈" );
43 | sb.Append( ProgressMax );
44 |
45 | return sb.ToString();
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/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 | [DataContract( Name = "ProgressExpedition" )]
14 | public class ProgressExpedition : ProgressData {
15 |
16 | ///
17 | /// 対象となる海域
18 | ///
19 | [DataMember]
20 | private HashSet TargetArea { get; set; }
21 |
22 |
23 | public ProgressExpedition( QuestData quest, int maxCount, int[] targetArea )
24 | : base( quest, maxCount ) {
25 |
26 | TargetArea = targetArea == null ? null : new HashSet( targetArea );
27 | }
28 |
29 |
30 | public void Increment( int areaID ) {
31 |
32 | if ( TargetArea != null && !TargetArea.Contains( areaID ) )
33 | return;
34 |
35 | Increment();
36 | }
37 |
38 |
39 | public override string GetClearCondition() {
40 | StringBuilder sb = new StringBuilder();
41 | if ( TargetArea != null ) {
42 | sb.Append( string.Join( "・", TargetArea.OrderBy( s => s ).Select( s => KCDatabase.Instance.Mission[s].Name ) ) );
43 | } else {
44 | sb.Append( "遠征" );
45 | }
46 | sb.Append( ProgressMax );
47 |
48 | return sb.ToString();
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/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 | [DebuggerDisplay( "[{ID}] : {Name}" )]
14 | public class UseItemMaster : ResponseWrapper, IIdentifiable {
15 |
16 | ///
17 | /// アイテムID
18 | ///
19 | public int ItemID {
20 | get { return (int)RawData.api_id; }
21 | }
22 |
23 | ///
24 | /// 使用形態
25 | /// 1=高速修復材, 2=高速建造材, 3=開発資材, 4=資源還元, その他
26 | ///
27 | public int UseType {
28 | get { return (int)RawData.api_usetype; }
29 | }
30 |
31 | ///
32 | /// カテゴリ
33 | ///
34 | public int Category {
35 | get { return (int)RawData.api_category; }
36 | }
37 |
38 | ///
39 | /// アイテム名
40 | ///
41 | public string Name {
42 | get { return RawData.api_name; }
43 | }
44 |
45 | ///
46 | /// 説明
47 | ///
48 | public string Description {
49 | get { return RawData.api_description[0]; }
50 | }
51 |
52 | //description[1]=家具コインの内容量 省略します
53 |
54 |
55 | public int ID {
56 | get { return ItemID; }
57 | }
58 |
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/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 | public class start : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 | base.OnResponseReceived( (object)data );
17 |
18 |
19 | // 表示順の関係上、UIの更新をしてからデータを更新する
20 | if ( KCDatabase.Instance.Battle.Compass.EventID == 3 ) {
21 | next.EmulateWhirlpool();
22 | }
23 |
24 | }
25 |
26 |
27 | public override bool IsRequestSupported { get { return true; } }
28 |
29 | public override void OnRequestReceived( Dictionary data ) {
30 |
31 | KCDatabase.Instance.Fleet.LoadFromRequest( APIName, data );
32 |
33 | int deckID = int.Parse( data["api_deck_id"] );
34 | int maparea = int.Parse( data["api_maparea_id"] );
35 | int mapinfo = int.Parse( data["api_mapinfo_no"] );
36 |
37 | Utility.Logger.Add( 2, string.Format( LoggerRes.SortiedTo, deckID, KCDatabase.Instance.Fleet[deckID].Name, maparea, mapinfo, KCDatabase.Instance.MapInfo[maparea * 10 + mapinfo].Name ) );
38 |
39 | base.OnRequestReceived( data );
40 | }
41 |
42 |
43 | public override string APIName {
44 | get { return "api_req_map/start"; }
45 | }
46 |
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/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 | public class remodel_slot : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 | db.Material.LoadFromResponse( APIName, data.api_after_material );
17 |
18 |
19 | if ( data.api_after_slot() ) { //改修成功時のみ存在
20 | EquipmentData eq = db.Equipments[(int)data.api_after_slot.api_id];
21 | if ( eq != null ) {
22 | eq.LoadFromResponse( APIName, data.api_after_slot );
23 |
24 | if ( Utility.Configuration.Config.Log.ShowSpoiler )
25 | Utility.Logger.Add( 2, string.Format( LoggerRes.ImprovedSuccess, eq.NameWithLevel ) );
26 | }
27 |
28 | } else if ( Utility.Configuration.Config.Log.ShowSpoiler ) {
29 | Utility.Logger.Add( 2, string.Format( LoggerRes.ImprovedFailure, db.MasterEquipments[(int)data.api_remodel_id[0]].Name ) );
30 | }
31 |
32 |
33 | if ( data.api_use_slot_id() ) {
34 | foreach ( int id in data.api_use_slot_id ) {
35 | db.Equipments.Remove( id );
36 | }
37 | }
38 |
39 | base.OnResponseReceived( (object)data );
40 | }
41 |
42 |
43 | public override string APIName {
44 | get { return "api_req_kousyou/remodel_slot"; }
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/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 | public class require_info : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase db = KCDatabase.Instance;
15 |
16 |
17 | // Equipments
18 | db.Equipments.Clear();
19 | foreach ( var elem in data.api_slot_item ) {
20 |
21 | var eq = new EquipmentData();
22 | eq.LoadFromResponse( APIName, elem );
23 | db.Equipments.Add( eq );
24 |
25 | }
26 |
27 |
28 | // Arsenal
29 | foreach ( var ars in data.api_kdock ) {
30 |
31 | int id = (int)ars.api_id;
32 |
33 | if ( !db.Arsenals.ContainsKey( id ) ) {
34 | var a = new ArsenalData();
35 | a.LoadFromResponse( APIName, ars );
36 | db.Arsenals.Add( a );
37 |
38 | } else {
39 | db.Arsenals[id].LoadFromResponse( APIName, ars );
40 | }
41 | }
42 |
43 |
44 | // UseItem
45 | db.UseItems.Clear();
46 | foreach ( var elem in data.api_useitem ) {
47 |
48 | var item = new UseItem();
49 | item.LoadFromResponse( APIName, elem );
50 | db.UseItems.Add( item );
51 |
52 | }
53 |
54 |
55 | base.OnResponseReceived( (object)data );
56 | }
57 |
58 | public override string APIName {
59 | get { return "api_get_member/require_info"; }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/ShipStatusEquipment.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class ShipStatusEquipment {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // ShipStatusEquipment
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.BackColor = System.Drawing.Color.Transparent;
32 | this.DoubleBuffered = true;
33 | this.Font = new System.Drawing.Font("Meiryo UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
34 | this.Name = "ShipStatusEquipment";
35 | this.Size = new System.Drawing.Size(100, 20);
36 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ShipStatusEquipment_Paint);
37 | this.ResumeLayout(false);
38 |
39 | }
40 |
41 | #endregion
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Integrate/FormCapturing.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Integrate {
2 | partial class FormCapturing {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // FormCapturing
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.BackColor = System.Drawing.Color.Blue;
32 | this.ClientSize = new System.Drawing.Size(133, 112);
33 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
34 | this.Name = "FormCapturing";
35 | this.ShowInTaskbar = false;
36 | this.Text = "FormCapturing";
37 | this.TopMost = true;
38 | this.TransparencyKey = System.Drawing.Color.Blue;
39 | this.ResumeLayout(false);
40 |
41 | }
42 |
43 | #endregion
44 | }
45 | }
--------------------------------------------------------------------------------
/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 | public class start : APIBase {
11 |
12 | //private int FleetID;
13 |
14 |
15 | public override void OnRequestReceived( Dictionary data ) {
16 |
17 | /* //checkme: どちらにせよあとで deck が呼ばれるので不要?
18 | FleetID = int.Parse( data["api_deck_id"] );
19 | KCDatabase.Instance.Fleet.Fleets[FleetID].LoadFromRequest( APIName, data );
20 | */
21 |
22 | int deckID = int.Parse( data["api_deck_id"] );
23 | int destination = int.Parse( data["api_mission_id"] );
24 |
25 | Utility.Logger.Add( 2, string.Format( LoggerRes.ExpedStarted, deckID, KCDatabase.Instance.Fleet[deckID].Name, destination, KCDatabase.Instance.Mission[destination].Name ) );
26 |
27 | base.OnRequestReceived( data );
28 | }
29 |
30 | public override void OnResponseReceived( dynamic data ) {
31 |
32 | /*
33 | KCDatabase.Instance.Fleet.Fleets[FleetID].LoadFromResponse( APIName, data );
34 | */
35 |
36 | base.OnResponseReceived( (object)data );
37 |
38 | }
39 |
40 |
41 | public override bool IsRequestSupported { get { return true; } }
42 | public override bool IsResponseSupported { get { return true; } }
43 |
44 | public override string APIName {
45 | get { return "api_req_mission/start"; }
46 | }
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Control/ImageLabel.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Control {
2 | partial class ImageLabel {
3 | ///
4 | /// 必要なデザイナー変数です。
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// 使用中のリソースをすべてクリーンアップします。
10 | ///
11 | /// マネージ リソースが破棄される場合 true、破棄されない場合は false です。
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region コンポーネント デザイナーで生成されたコード
20 |
21 | ///
22 | /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
23 | /// コード エディターで変更しないでください。
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // ImageLabel
29 | //
30 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
31 | this.AutoSize = true;
32 | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
33 | this.BackColor = System.Drawing.Color.Transparent;
34 | this.DoubleBuffered = true;
35 | this.Name = "ImageLabel";
36 | this.Size = new System.Drawing.Size(0, 0);
37 | this.SizeChanged += new System.EventHandler(this.ImageLabel_SizeChanged);
38 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.ImageLabel_Paint);
39 | this.ResumeLayout(false);
40 |
41 | }
42 |
43 | #endregion
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/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 | public class BattlePracticeDay : BattleDay {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | AirBattle = new PhaseAirBattle( this );
19 | OpeningTorpedo = new PhaseTorpedo( this, 0 );
20 | Shelling1 = new PhaseShelling( this, 1, "1", false );
21 | Shelling2 = new PhaseShelling( this, 2, "2", false );
22 | Shelling3 = new PhaseShelling( this, 3, "3", false );
23 | Torpedo = new PhaseTorpedo( this, 4 );
24 |
25 |
26 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
27 | OpeningTorpedo.EmulateBattle( _resultHPs, _attackDamages );
28 | Shelling1.EmulateBattle( _resultHPs, _attackDamages );
29 | Shelling2.EmulateBattle( _resultHPs, _attackDamages );
30 | Shelling3.EmulateBattle( _resultHPs, _attackDamages );
31 | Torpedo.EmulateBattle( _resultHPs, _attackDamages );
32 |
33 | }
34 |
35 |
36 | public override string APIName {
37 | get { return "api_req_practice/battle"; }
38 | }
39 |
40 | public override BattleTypeFlag BattleType {
41 | get { return BattleTypeFlag.Day | BattleTypeFlag.Practice; }
42 | }
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_req_kousyou/destroyship.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 | public class destroyship : APIBase {
11 |
12 |
13 | public override void OnRequestReceived( Dictionary data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 |
18 | //todo: ここに処理を書くのはみょんな感があるので、可能なら移動する
19 |
20 | int shipID = int.Parse( data["api_ship_id"] );
21 |
22 | db.Fleet.LoadFromRequest( APIName, data );
23 |
24 | ShipData ship = db.Ships[shipID];
25 |
26 | Utility.Logger.Add( 2, ship.NameWithLevel + LoggerRes.ShipScrapped );
27 |
28 | for ( int i = 0; i < ship.Slot.Count; i++ ) {
29 | if ( ship.Slot[i] != -1 )
30 | db.Equipments.Remove( ship.Slot[i] );
31 | }
32 |
33 | db.Ships.Remove( shipID );
34 |
35 |
36 | base.OnRequestReceived( data );
37 | }
38 |
39 | public override void OnResponseReceived( dynamic data ) {
40 |
41 | KCDatabase.Instance.Material.LoadFromResponse( APIName, data.api_material );
42 |
43 | base.OnResponseReceived( (object)data );
44 | }
45 |
46 |
47 | public override bool IsRequestSupported { get { return true; } }
48 | public override bool IsResponseSupported { get { return true; } }
49 |
50 | public override string APIName {
51 | get { return "api_req_kousyou/destroyship"; }
52 | }
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/Battle/BattleCombinedWater.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 class BattleCombinedWater : BattleDay {
14 |
15 | public override void LoadFromResponse( string apiname, dynamic data ) {
16 | base.LoadFromResponse( apiname, (object)data );
17 |
18 | AirBattle = new PhaseAirBattle( this );
19 | Support = new PhaseSupport( this );
20 | OpeningTorpedo = new PhaseTorpedo( this, 0 );
21 | Shelling1 = new PhaseShelling( this, 1, "1", false );
22 | Shelling2 = new PhaseShelling( this, 2, "2", false );
23 | Shelling3 = new PhaseShelling( this, 3, "3", true );
24 | Torpedo = new PhaseTorpedo( this, 4 );
25 |
26 |
27 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
28 | Support.EmulateBattle( _resultHPs, _attackDamages );
29 | OpeningTorpedo.EmulateBattle( _resultHPs, _attackDamages );
30 | Shelling1.EmulateBattle( _resultHPs, _attackDamages );
31 | Shelling2.EmulateBattle( _resultHPs, _attackDamages );
32 | Shelling3.EmulateBattle( _resultHPs, _attackDamages );
33 | Torpedo.EmulateBattle( _resultHPs, _attackDamages );
34 |
35 | }
36 |
37 |
38 | public override string APIName {
39 | get { return "api_req_combined_battle/battle_water"; }
40 | }
41 |
42 | public override BattleData.BattleTypeFlag BattleType {
43 | get { return BattleTypeFlag.Day | BattleTypeFlag.Combined; }
44 | }
45 |
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/Battle/BattleNormalDay.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 class BattleNormalDay : BattleDay {
14 |
15 |
16 | public override void LoadFromResponse( string apiname, dynamic data ) {
17 | base.LoadFromResponse( apiname, (object)data );
18 |
19 | AirBattle = new PhaseAirBattle( this );
20 | Support = new PhaseSupport( this );
21 | OpeningTorpedo = new PhaseTorpedo( this, 0 );
22 | Shelling1 = new PhaseShelling( this, 1, "1", false );
23 | Shelling2 = new PhaseShelling( this, 2, "2", false );
24 | Shelling3 = new PhaseShelling( this, 3, "3", false );
25 | Torpedo = new PhaseTorpedo( this, 4 );
26 |
27 |
28 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
29 | Support.EmulateBattle( _resultHPs, _attackDamages );
30 | OpeningTorpedo.EmulateBattle( _resultHPs, _attackDamages );
31 | Shelling1.EmulateBattle( _resultHPs, _attackDamages );
32 | Shelling2.EmulateBattle( _resultHPs, _attackDamages );
33 | Shelling3.EmulateBattle( _resultHPs, _attackDamages );
34 | Torpedo.EmulateBattle( _resultHPs, _attackDamages );
35 |
36 | }
37 |
38 |
39 | public override string APIName {
40 | get { return "api_req_sortie/battle"; }
41 | }
42 |
43 |
44 | public override BattleData.BattleTypeFlag BattleType {
45 | get { return BattleTypeFlag.Day; }
46 | }
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_req_nyukyo/start.cs:
--------------------------------------------------------------------------------
1 | using Codeplex.Data;
2 | using ElectronicObserver.Data;
3 | using ElectronicObserver.Utility.Mathematics;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ElectronicObserver.Observer.kcsapi.api_req_nyukyo {
11 |
12 | public class start : APIBase {
13 |
14 |
15 | public override void OnRequestReceived( Dictionary data ) {
16 |
17 | KCDatabase db = KCDatabase.Instance;
18 |
19 | DockData dock = db.Docks[int.Parse( data["api_ndock_id"] )];
20 |
21 | int shipID = int.Parse( data["api_ship_id"] );
22 | ShipData ship = db.Ships[shipID];
23 |
24 |
25 | db.Material.Fuel -= ship.RepairFuel;
26 | db.Material.Steel -= ship.RepairSteel;
27 |
28 |
29 | if ( data["api_highspeed"] == "1" ) {
30 |
31 | ship.Repair();
32 | db.Material.InstantRepair--;
33 |
34 | } else if ( ship.RepairTime <= 60000 ) {
35 |
36 | ship.Repair();
37 |
38 | } else {
39 |
40 | //この場合は直後に ndock が呼ばれるので自力で更新しなくてもよい
41 | /*
42 | dock.State = 1;
43 | dock.ShipID = shipID;
44 | dock.CompletionTime = DateTime.Now.AddMilliseconds( ship.RepairTime );
45 | */
46 |
47 | }
48 |
49 |
50 | db.Fleet.LoadFromRequest( APIName, data );
51 |
52 | base.OnRequestReceived( data );
53 | }
54 |
55 |
56 | public override bool IsRequestSupported { get { return true; } }
57 | public override bool IsResponseSupported { get { return false; } }
58 |
59 |
60 | public override string APIName {
61 | get { return "api_req_nyukyo/start"; }
62 | }
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/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 | public class getship : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 | //api_kdock
18 | foreach ( var ars in data.api_kdock ) {
19 |
20 | int id = (int)ars.api_id;
21 |
22 | if ( !db.Arsenals.ContainsKey( id ) ) {
23 | var a = new ArsenalData();
24 | a.LoadFromResponse( APIName, ars );
25 | db.Arsenals.Add( a );
26 |
27 | } else {
28 | db.Arsenals[id].LoadFromResponse( APIName, ars );
29 | }
30 | }
31 |
32 | //api_slotitem
33 | if ( data.api_slotitem != null ) { //装備なしの艦はnullになる
34 | foreach ( var elem in data.api_slotitem ) {
35 |
36 | var eq = new EquipmentData();
37 | eq.LoadFromResponse( APIName, elem );
38 | db.Equipments.Add( eq );
39 |
40 | }
41 | }
42 |
43 | //api_ship
44 | {
45 | ShipData ship = new ShipData();
46 | ship.LoadFromResponse( APIName, data.api_ship );
47 | db.Ships.Add( ship );
48 |
49 | Utility.Logger.Add( 2, string.Format( LoggerRes.ShipConstructed, ship.MasterShip.ShipTypeName, ship.MasterShip.NameWithClass ) );
50 | }
51 |
52 |
53 | base.OnResponseReceived( (object)data );
54 | }
55 |
56 | public override string APIName {
57 | get { return "api_req_kousyou/getship"; }
58 | }
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_port/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_port {
9 |
10 | public class port : APIBase {
11 |
12 |
13 | public override void OnResponseReceived( dynamic data ) {
14 |
15 | KCDatabase db = KCDatabase.Instance;
16 |
17 |
18 | //api_material
19 | db.Material.LoadFromResponse( APIName, data.api_material );
20 |
21 | //api_basic
22 | db.Admiral.LoadFromResponse( APIName, data.api_basic );
23 |
24 | //api_ship
25 | db.Ships.Clear();
26 | foreach ( var elem in data.api_ship ) {
27 |
28 | var a = new ShipData();
29 | a.LoadFromResponse( APIName, elem );
30 | db.Ships.Add( a );
31 |
32 | }
33 |
34 |
35 | //api_ndock
36 | foreach ( var elem in data.api_ndock ) {
37 |
38 | int id = (int)elem.api_id;
39 |
40 | if ( !db.Docks.ContainsKey( id ) ) {
41 | var a = new DockData();
42 | a.LoadFromResponse( APIName, elem );
43 | db.Docks.Add( a );
44 |
45 | } else {
46 | db.Docks[id].LoadFromResponse( APIName, elem );
47 | }
48 | }
49 |
50 | //api_deck_port
51 | db.Fleet.LoadFromResponse( APIName, data.api_deck_port );
52 | db.Fleet.CombinedFlag = data.api_combined_flag() ? (int)data.api_combined_flag : 0;
53 |
54 |
55 | db.Battle.LoadFromResponse( APIName, data );
56 |
57 | base.OnResponseReceived( (object)data );
58 | }
59 |
60 | public override string APIName {
61 | get { return "api_port/port"; }
62 | }
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/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 | public class NotifierRepair : NotifierBase {
14 |
15 | private Dictionary processedFlags;
16 |
17 |
18 | public NotifierRepair()
19 | : base() {
20 | Initialize();
21 | }
22 |
23 | public NotifierRepair( Utility.Configuration.ConfigurationData.ConfigNotifierBase config )
24 | : base( config ) {
25 | Initialize();
26 | }
27 |
28 |
29 | private void Initialize() {
30 | DialogData.Title = NotifierRes.RepairTitle;
31 | processedFlags = new Dictionary();
32 | }
33 |
34 |
35 | protected override void UpdateTimerTick() {
36 |
37 | foreach ( var dock in KCDatabase.Instance.Docks.Values ) {
38 |
39 | if ( !processedFlags.ContainsKey( dock.DockID ) )
40 | processedFlags.Add( dock.DockID, false );
41 |
42 | if ( dock.State > 0 ) {
43 | if ( !processedFlags[dock.DockID] && (int)( dock.CompletionTime - DateTime.Now ).TotalMilliseconds <= AccelInterval ) {
44 |
45 | processedFlags[dock.DockID] = true;
46 | Notify( dock.DockID, dock.ShipID );
47 |
48 | }
49 |
50 | } else {
51 | processedFlags[dock.DockID] = false;
52 | }
53 |
54 | }
55 |
56 | }
57 |
58 | public void Notify( int dockID, int shipID ) {
59 |
60 | DialogData.Message = string.Format( NotifierRes.RepairText,
61 | dockID, KCDatabase.Instance.Ships[shipID].NameWithLevel );
62 |
63 | base.Notify();
64 | }
65 |
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/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 | public class PhaseSearching : PhaseBase {
13 |
14 |
15 | public PhaseSearching( BattleData data )
16 | : base( data ) { }
17 |
18 |
19 | public override bool IsAvailable {
20 | get { return RawData.api_search() && RawData.api_formation(); }
21 | }
22 |
23 | public override void EmulateBattle( int[] hps, int[] damages ) {
24 | throw new NotSupportedException();
25 | }
26 |
27 |
28 | ///
29 | /// 自軍索敵結果
30 | ///
31 | public int SearchingFriend {
32 | get {
33 | if ( RawData.api_search() )
34 | return (int)RawData.api_search[0];
35 | else return -1;
36 | }
37 | }
38 |
39 | ///
40 | /// 敵軍索敵結果
41 | ///
42 | public int SearchingEnemy {
43 | get {
44 | if ( RawData.api_search() )
45 | return (int)RawData.api_search[1];
46 | else return -1;
47 | }
48 | }
49 |
50 | ///
51 | /// 自軍陣形
52 | ///
53 | public int FormationFriend {
54 | get {
55 | dynamic form = RawData.api_formation[0];
56 | return form is string ? int.Parse( (string)form ) : (int)form;
57 | }
58 | }
59 |
60 | ///
61 | /// 敵軍陣形
62 | ///
63 | public int FormationEnemy { get { return (int)RawData.api_formation[1]; } }
64 |
65 | ///
66 | /// 交戦形態
67 | ///
68 | public int EngagementForm { get { return (int)RawData.api_formation[2]; } }
69 |
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/Battle/BattleCombinedNormalDay.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 | ///
14 | public class BattleCombinedNormalDay : BattleDay {
15 |
16 | public override void LoadFromResponse( string apiname, dynamic data ) {
17 | base.LoadFromResponse( apiname, (object)data );
18 |
19 | AirBattle = new PhaseAirBattle( this );
20 | Support = new PhaseSupport( this );
21 | OpeningTorpedo = new PhaseTorpedo( this, 0 );
22 | Shelling1 = new PhaseShelling( this, 1, "1", true );
23 | Torpedo = new PhaseTorpedo( this, 2 );
24 | Shelling2 = new PhaseShelling( this, 3, "2", false );
25 | Shelling3 = new PhaseShelling( this, 4, "3", false );
26 |
27 |
28 | AirBattle.EmulateBattle( _resultHPs, _attackDamages );
29 | Support.EmulateBattle( _resultHPs, _attackDamages );
30 | OpeningTorpedo.EmulateBattle( _resultHPs, _attackDamages );
31 | Shelling1.EmulateBattle( _resultHPs, _attackDamages );
32 | Torpedo.EmulateBattle( _resultHPs, _attackDamages );
33 | Shelling2.EmulateBattle( _resultHPs, _attackDamages );
34 | Shelling3.EmulateBattle( _resultHPs, _attackDamages );
35 |
36 | }
37 |
38 |
39 | public override string APIName {
40 | get { return "api_req_combined_battle/battle"; }
41 | }
42 |
43 |
44 | public override BattleData.BattleTypeFlag BattleType {
45 | get { return BattleTypeFlag.Day | BattleTypeFlag.Combined; }
46 | }
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/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 | public partial class DialogTextSelect : Form {
14 |
15 | public int SelectedIndex {
16 | get { return TextSelect.SelectedIndex; }
17 | }
18 |
19 | public object SelectedItem {
20 | get { return TextSelect.SelectedItem; }
21 | }
22 |
23 | public DialogTextSelect() {
24 | InitializeComponent();
25 |
26 | ControlHelper.SetDoubleBuffered( tableLayoutPanel1 );
27 | }
28 |
29 | public DialogTextSelect( string title, string description, object[] items )
30 | : this() {
31 |
32 | Initialize( title, description, items );
33 | }
34 |
35 | public void Initialize( string title, string description, object[] items ) {
36 | this.Text = title;
37 |
38 | tableLayoutPanel1.SuspendLayout();
39 |
40 | Description.Text = description;
41 |
42 | TextSelect.BeginUpdate();
43 | TextSelect.Items.Clear();
44 | TextSelect.Items.AddRange( items );
45 | if ( TextSelect.Items.Count > 0 )
46 | TextSelect.SelectedIndex = 0;
47 | TextSelect.EndUpdate();
48 |
49 | tableLayoutPanel1.ResumeLayout();
50 |
51 | }
52 |
53 |
54 | private void ButtonOK_Click( object sender, EventArgs e ) {
55 | DialogResult = System.Windows.Forms.DialogResult.OK;
56 | }
57 |
58 | private void ButtonCancel_Click( object sender, EventArgs e ) {
59 | DialogResult = System.Windows.Forms.DialogResult.Cancel;
60 | }
61 |
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/FormBrowserHost.Designer.cs:
--------------------------------------------------------------------------------
1 | using ElectronicObserver.Properties;
2 | namespace ElectronicObserver.Window {
3 | partial class FormBrowserHost {
4 | ///
5 | /// Required designer variable.
6 | ///
7 | private System.ComponentModel.IContainer components = null;
8 |
9 | ///
10 | /// Clean up any resources being used.
11 | ///
12 | /// true if managed resources should be disposed; otherwise, false.
13 | protected override void Dispose( bool disposing ) {
14 | if ( disposing && ( components != null ) ) {
15 | components.Dispose();
16 | }
17 | base.Dispose( disposing );
18 | }
19 |
20 | #region Windows Form Designer generated code
21 |
22 | ///
23 | /// Required method for Designer support - do not modify
24 | /// the contents of this method with the code editor.
25 | ///
26 | private void InitializeComponent() {
27 | this.SuspendLayout();
28 | //
29 | // FormBrowserHost
30 | //
31 | this.AutoHidePortion = 150D;
32 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
33 | this.ClientSize = new System.Drawing.Size(300, 200);
34 | this.DoubleBuffered = true;
35 | this.Font = new System.Drawing.Font("Meiryo UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
36 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
37 | this.HideOnClose = true;
38 | this.Name = "FormBrowserHost";
39 | this.Text = Menus.Browser;
40 | this.Load += new System.EventHandler(this.FormBrowser_Load);
41 | this.Resize += new System.EventHandler(this.FormBrowserHost_Resize);
42 | this.ResumeLayout(false);
43 |
44 | }
45 |
46 | #endregion
47 |
48 |
49 | }
50 | }
--------------------------------------------------------------------------------
/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 | public partial class DialogVersion : Form {
15 | public DialogVersion() {
16 | InitializeComponent();
17 |
18 | TextVersion.Text = string.Format( "{0} ({2} Release)", SoftwareInformation.VersionJapanese, SoftwareInformation.VersionEnglish, SoftwareInformation.UpdateTime.ToString( "d" ) );
19 | }
20 |
21 | private void TextAuthor_LinkClicked( object sender, LinkLabelLinkClickedEventArgs e ) {
22 |
23 | System.Diagnostics.Process.Start( "https://twitter.com/andanteyk" );
24 |
25 | }
26 |
27 | private void ButtonClose_Click( object sender, EventArgs e ) {
28 |
29 | this.Close();
30 |
31 | }
32 |
33 | private void TextInformation_LinkClicked( object sender, LinkLabelLinkClickedEventArgs e ) {
34 |
35 | System.Diagnostics.Process.Start( "http://electronicobserver.blog.fc2.com/" );
36 |
37 | }
38 |
39 | private void DialogVersion_Load( object sender, EventArgs e ) {
40 |
41 | this.Icon = ResourceManager.Instance.AppIcon;
42 | }
43 |
44 | private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
45 | {
46 | System.Diagnostics.Process.Start("http://tumblr.rkitsune.com/elecobs");
47 | }
48 |
49 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
50 | {
51 | System.Diagnostics.Process.Start("http://tumblr.rkitsune.com/");
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Integrate/FormCandidate.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Integrate {
2 | partial class FormCandidate {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.SuspendLayout();
27 | //
28 | // FormCandidate
29 | //
30 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
31 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
32 | this.BackColor = System.Drawing.Color.Blue;
33 | this.ClientSize = new System.Drawing.Size(284, 261);
34 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
35 | this.Name = "FormCandidate";
36 | this.ShowInTaskbar = false;
37 | this.Text = "FormCandidate";
38 | this.TransparencyKey = System.Drawing.Color.Blue;
39 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormCandidate_FormClosed);
40 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.FormCandidate_Paint);
41 | this.Resize += new System.EventHandler(this.FormCandidate_Resize);
42 | this.ResumeLayout(false);
43 |
44 | }
45 |
46 | #endregion
47 | }
48 | }
--------------------------------------------------------------------------------
/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 | public delegate void APIReceivedEventHandler( string apiname, dynamic data );
10 |
11 | ///
12 | /// API処理部の基底となるクラスです。
13 | ///
14 | public abstract class APIBase {
15 |
16 | ///
17 | /// Requestの処理が完了した時に発生します。
18 | ///
19 | public event APIReceivedEventHandler RequestReceived = delegate { };
20 |
21 | ///
22 | /// Responseの処理が完了した時に発生します。
23 | ///
24 | public event APIReceivedEventHandler ResponseReceived = delegate { };
25 |
26 |
27 | ///
28 | /// Requestを処理し、RequestReceivedを起動します。
29 | /// 継承時は最後に呼ぶようにして下さい。
30 | ///
31 | /// 処理するデータ。
32 | public virtual void OnRequestReceived( Dictionary data ) {
33 | RequestReceived( APIName, data );
34 | }
35 |
36 | ///
37 | /// Responseを処理し、ResponseReceivedを起動します。
38 | /// 継承時は最後に呼ぶようにして下さい。
39 | ///
40 | /// 処理するデータ。
41 | public virtual void OnResponseReceived( dynamic data ) {
42 | ResponseReceived( APIName, data );
43 | }
44 |
45 |
46 | ///
47 | /// Requestの処理をサポートしているかを取得します。
48 | ///
49 | public virtual bool IsRequestSupported { get { return false; } }
50 |
51 | ///
52 | /// Responseの処理をサポートしているかを取得します。
53 | ///
54 | public virtual bool IsResponseSupported { get { return true; } }
55 |
56 |
57 |
58 | ///
59 | /// API名を取得します。
60 | ///
61 | public abstract string APIName { get; }
62 |
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/ElectronicObserver/Notifier/NotifierConstruction.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 | public class NotifierConstruction : NotifierBase {
14 |
15 | private Dictionary processedFlags;
16 |
17 |
18 | public NotifierConstruction()
19 | : base() {
20 | Initialize();
21 | }
22 |
23 | public NotifierConstruction( Utility.Configuration.ConfigurationData.ConfigNotifierBase config )
24 | : base( config ) {
25 | Initialize();
26 | }
27 |
28 |
29 | private void Initialize() {
30 | DialogData.Title = NotifierRes.ConstructionTitle;
31 | processedFlags = new Dictionary();
32 | }
33 |
34 |
35 | protected override void UpdateTimerTick() {
36 |
37 | foreach ( var arsenal in KCDatabase.Instance.Arsenals.Values ) {
38 |
39 | if ( !processedFlags.ContainsKey( arsenal.ArsenalID ) )
40 | processedFlags.Add( arsenal.ArsenalID, false );
41 |
42 | if ( arsenal.State > 0 ) {
43 | if ( !processedFlags[arsenal.ArsenalID] && (
44 | (int)( arsenal.CompletionTime - DateTime.Now ).TotalMilliseconds <= AccelInterval ||
45 | arsenal.State == 3 ) ) {
46 |
47 | processedFlags[arsenal.ArsenalID] = true;
48 | Notify( arsenal.ArsenalID, arsenal.ShipID );
49 | }
50 |
51 | } else {
52 | processedFlags[arsenal.ArsenalID] = false;
53 | }
54 |
55 | }
56 |
57 | }
58 |
59 | public void Notify( int arsenalID, int shipID ) {
60 |
61 | DialogData.Message = string.Format( NotifierRes.ConstructionText,
62 | arsenalID, Utility.Configuration.Config.FormArsenal.ShowShipName ? KCDatabase.Instance.MasterShips[shipID].NameWithClass : "艦娘" );
63 |
64 | base.Notify();
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/ElectronicObserver/Notifier/NotifierExpedition.cs:
--------------------------------------------------------------------------------
1 | using ElectronicObserver.Data;
2 | using ElectronicObserver.Observer;
3 | using ElectronicObserver.Window;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace ElectronicObserver.Notifier {
11 |
12 | ///
13 | /// 遠征帰投通知を扱います。
14 | ///
15 | public class NotifierExpedition : NotifierBase {
16 |
17 | private Dictionary processedFlags;
18 |
19 |
20 | public NotifierExpedition()
21 | : base() {
22 | Initialize();
23 | }
24 |
25 | public NotifierExpedition( Utility.Configuration.ConfigurationData.ConfigNotifierBase config )
26 | : base( config ) {
27 | Initialize();
28 | }
29 |
30 |
31 | private void Initialize() {
32 | DialogData.Title = NotifierRes.ExpeditionTitle;
33 | processedFlags = new Dictionary();
34 | }
35 |
36 |
37 | protected override void UpdateTimerTick() {
38 |
39 | foreach ( var fleet in KCDatabase.Instance.Fleet.Fleets.Values ) {
40 |
41 | if ( !processedFlags.ContainsKey( fleet.FleetID ) )
42 | processedFlags.Add( fleet.FleetID, false );
43 |
44 | if ( fleet.ExpeditionState != 0 ) {
45 | if ( !processedFlags[fleet.FleetID] && (int)( fleet.ExpeditionTime - DateTime.Now ).TotalMilliseconds <= AccelInterval ) {
46 |
47 | processedFlags[fleet.FleetID] = true;
48 | Notify( fleet.FleetID, fleet.ExpeditionDestination );
49 |
50 | }
51 |
52 | } else {
53 | processedFlags[fleet.FleetID] = false;
54 | }
55 |
56 | }
57 |
58 | }
59 |
60 | public void Notify( int fleetID, int destination ) {
61 |
62 | DialogData.Message = string.Format( NotifierRes.ExpeditionText,
63 | fleetID, KCDatabase.Instance.Fleet[fleetID].Name, destination, KCDatabase.Instance.Mission[destination].Name );
64 |
65 | base.Notify();
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/QuestData.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 | using ElectronicObserver.Window;
8 |
9 | namespace ElectronicObserver.Data {
10 |
11 | ///
12 | /// 任務のデータを保持します。
13 | ///
14 | [DebuggerDisplay( "[{ID}] : {Name}" )]
15 | public class QuestData : ResponseWrapper, IIdentifiable {
16 |
17 | ///
18 | /// 任務ID
19 | ///
20 | public int QuestID {
21 | get { return (int)RawData.api_no; }
22 | }
23 |
24 | ///
25 | /// 任務カテゴリ
26 | ///
27 | public int Category {
28 | get { return (int)RawData.api_category; }
29 | }
30 |
31 | ///
32 | /// 任務出現タイプ
33 | /// 1=一回限り, 2=デイリー, 3=ウィークリー, 6=マンスリー
34 | ///
35 | public int Type {
36 | get { return (int)RawData.api_type; }
37 | }
38 |
39 | ///
40 | /// 遂行状態
41 | /// 1=未受領, 2=遂行中, 3=達成
42 | ///
43 | public int State {
44 | get { return (int)RawData.api_state; }
45 | }
46 |
47 | ///
48 | /// 任務名
49 | ///
50 | public string Name {
51 | get { return FormMain.Instance.Translator.GetTranslation((string)RawData.api_title, Utility.TranslationType.QuestTitle); }
52 | }
53 |
54 | ///
55 | /// 説明
56 | ///
57 | public string Description {
58 | get { return FormMain.Instance.Translator.GetTranslation((string)RawData.api_detail,Utility.TranslationType.QuestDetail); }
59 | }
60 |
61 | //undone:api_bonus_flag
62 |
63 | ///
64 | /// 進捗
65 | ///
66 | public int Progress {
67 | get { return (int)RawData.api_progress_flag; }
68 | }
69 |
70 |
71 |
72 | public int ID {
73 | get { return QuestID; }
74 | }
75 |
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/Battle/Phase/PhaseShelling.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 | public class PhaseShelling : PhaseBase {
13 |
14 | private readonly int phaseID;
15 | private readonly string suffix;
16 | private readonly bool isEscort;
17 |
18 | public PhaseShelling( BattleData data, int phaseID, string suffix, bool isEscort )
19 | : base( data ) {
20 |
21 | this.phaseID = phaseID;
22 | this.suffix = suffix;
23 | this.isEscort = isEscort;
24 | }
25 |
26 |
27 | public override bool IsAvailable {
28 | get { return (int)RawData.api_hourai_flag[phaseID - 1] != 0; }
29 | }
30 |
31 |
32 | public dynamic ShellingData {
33 | get { return RawData["api_hougeki" + suffix]; }
34 | }
35 |
36 |
37 | public override void EmulateBattle( int[] hps, int[] damages ) {
38 |
39 | if ( !IsAvailable ) return;
40 |
41 | int[] attackers = (int[])ShellingData.api_at_list;
42 |
43 | for ( int i = 1; i < attackers.Length; i++ ) { //skip header(-1)
44 |
45 | int[] tempDamages = Enumerable.Repeat( 0, hps.Length ).ToArray();
46 |
47 | int[] defenders = (int[])( ShellingData.api_df_list[i] );
48 | int[] unitDamages = (int[])( ShellingData.api_damage[i] );
49 |
50 | for ( int j = 0; j < defenders.Length; j++ ) {
51 | if ( defenders[j] != -1 )
52 | tempDamages[GetIndex( defenders[j] )] += Math.Max( unitDamages[j], 0 );
53 | }
54 |
55 | for ( int j = 0; j < tempDamages.Length; j++ )
56 | AddDamage( hps, j, tempDamages[j] );
57 |
58 | damages[GetIndex( attackers[i] )] += tempDamages.Sum();
59 | }
60 |
61 | }
62 |
63 | private int GetIndex( int index ) {
64 | if ( isEscort && index <= 6 )
65 | return 12 + index - 1;
66 | return index - 1;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_req_map/next.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 | public class next : APIBase {
11 |
12 | public override void OnResponseReceived( dynamic data ) {
13 |
14 | KCDatabase.Instance.Battle.LoadFromResponse( APIName, data );
15 |
16 | base.OnResponseReceived( (object)data );
17 |
18 |
19 | // 表示順の関係上、UIの更新をしてからデータを更新する
20 | if ( KCDatabase.Instance.Battle.Compass.EventID == 3 ) {
21 | EmulateWhirlpool();
22 | }
23 |
24 | }
25 |
26 |
27 | ///
28 | /// 渦潮による燃料・弾薬の減少をエミュレートします。
29 | ///
30 | public static void EmulateWhirlpool() {
31 |
32 | int itemID = KCDatabase.Instance.Battle.Compass.WhirlpoolItemID;
33 | int materialmax = KCDatabase.Instance.Fleet.Fleets.Values
34 | .Where( f => f != null && f.IsInSortie )
35 | .SelectMany( f => f.MembersWithoutEscaped )
36 | .Max( s => {
37 | if ( s == null ) return 0;
38 | switch ( itemID ) {
39 | case 1:
40 | return s.Fuel;
41 | case 2:
42 | return s.Ammo;
43 | default:
44 | return 0;
45 | }
46 | } );
47 |
48 | double rate = (double)KCDatabase.Instance.Battle.Compass.WhirlpoolItemAmount / materialmax;
49 |
50 | foreach ( var ship in KCDatabase.Instance.Fleet.Fleets.Values
51 | .Where( f => f != null && f.IsInSortie )
52 | .SelectMany( f => f.MembersWithoutEscaped ) ) {
53 |
54 | if ( ship == null ) continue;
55 |
56 | switch ( itemID ) {
57 | case 1:
58 | ship.Fuel -= (int)( ship.Fuel * rate );
59 | break;
60 | case 2:
61 | ship.Ammo -= (int)( ship.Ammo * rate );
62 | break;
63 | }
64 | }
65 |
66 | }
67 |
68 |
69 | public override string APIName {
70 | get { return "api_req_map/next"; }
71 | }
72 |
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Support/ControlHelper.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.Windows.Forms;
7 |
8 | namespace ElectronicObserver.Window.Support {
9 |
10 | ///
11 | /// コントロールの操作を補助する機能を提供します。
12 | ///
13 | public static class ControlHelper {
14 |
15 | ///
16 | /// コントロールの DoubleBuffered を設定します。
17 | ///
18 | /// 対象となるコントロール。
19 | /// 設定するフラグ。既定では true です。
20 | public static void SetDoubleBuffered( System.Windows.Forms.Control control, bool flag = true ) {
21 |
22 | System.Reflection.PropertyInfo prop = control.GetType().GetProperty( "DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic );
23 | prop.SetValue( control, flag, null );
24 |
25 | }
26 |
27 |
28 | ///
29 | /// DataGridView の指定行を 1 つ上に移動します。
30 | ///
31 | /// 対象となる DataGridView 。
32 | /// 行のインデックス。
33 | /// 成功すれば true 。
34 | public static bool RowMoveUp( DataGridView dgv, int rowIndex ) {
35 |
36 | if ( rowIndex <= 0 ) return false;
37 |
38 | var row = dgv.Rows[rowIndex - 1];
39 | dgv.Rows.Remove( row );
40 | dgv.Rows.Insert( rowIndex, row );
41 |
42 | return true;
43 | }
44 |
45 | ///
46 | /// DataGridView の指定行を 1 つ下に移動します。
47 | ///
48 | /// 対象となる DataGridView 。
49 | /// 行のインデックス。
50 | /// 成功すれば true 。
51 | public static bool RowMoveDown( DataGridView dgv, int rowIndex ) {
52 |
53 | if ( rowIndex >= dgv.Rows.Count - 1 ) return false;
54 |
55 | var row = dgv.Rows[rowIndex + 1];
56 | dgv.Rows.Remove( row );
57 | dgv.Rows.Insert( rowIndex, row );
58 |
59 | return true;
60 | }
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/ShipGroupManager.cs:
--------------------------------------------------------------------------------
1 | using ElectronicObserver.Resource;
2 | using ElectronicObserver.Utility.Storage;
3 | using Microsoft.VisualBasic.FileIO;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.IO;
7 | using System.Linq;
8 | using System.Runtime.Serialization;
9 | using System.Text;
10 | using System.Threading.Tasks;
11 |
12 | namespace ElectronicObserver.Data {
13 |
14 | ///
15 | /// 艦船グループのデータを管理します。
16 | ///
17 | [DataContract( Name = "ShipGroupManager" )]
18 | public class ShipGroupManager : DataStorage {
19 |
20 | public const string DefaultFilePath = @"Settings\ShipGroups.xml";
21 |
22 |
23 | ///
24 | /// 艦船グループリスト
25 | ///
26 | [IgnoreDataMember]
27 | public IDDictionary ShipGroups { get; private set; }
28 |
29 |
30 | [DataMember]
31 | private IEnumerable ShipGroupsSerializer {
32 | get { return ShipGroups.Values.OrderBy( g => g.ID ); }
33 | set { ShipGroups = new IDDictionary( value ); }
34 | }
35 |
36 | public ShipGroupManager() {
37 | Initialize();
38 | }
39 |
40 |
41 | public override void Initialize() {
42 | ShipGroups = new IDDictionary();
43 | }
44 |
45 |
46 |
47 | public ShipGroupData this[int index] {
48 | get {
49 | return ShipGroups[index];
50 | }
51 | }
52 |
53 |
54 | public ShipGroupData Add() {
55 |
56 | int key = GetUniqueID();
57 | var group = new ShipGroupData( key );
58 | ShipGroups.Add( group );
59 | return group;
60 |
61 | }
62 |
63 | public int GetUniqueID() {
64 | return ShipGroups.Count > 0 ? ShipGroups.Keys.Max() + 1 : 1;
65 | }
66 |
67 |
68 | public ShipGroupManager Load() {
69 |
70 | ResourceManager.CopyFromArchive( DefaultFilePath.Replace( "\\", "/" ), DefaultFilePath );
71 |
72 | return (ShipGroupManager)Load( DefaultFilePath );
73 | }
74 |
75 | public void Save() {
76 | Save( DefaultFilePath );
77 | }
78 |
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/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 | using ElectronicObserver.Window;
7 |
8 | namespace ElectronicObserver.Data {
9 |
10 | ///
11 | /// 遠征データを保持します。
12 | ///
13 | public class MissionData : APIWrapper, IIdentifiable {
14 |
15 | ///
16 | /// 任務ID
17 | ///
18 | public int MissionID {
19 | get { return (int)RawData.api_id; }
20 | }
21 |
22 | ///
23 | /// 海域カテゴリID
24 | ///
25 | public int MapAreaID {
26 | get { return (int)RawData.api_maparea_id; }
27 | }
28 |
29 | ///
30 | /// 遠征名
31 | ///
32 | public string Name {
33 | get { return FormMain.Instance.Translator.GetTranslation(RawData.api_name, Utility.TranslationType.ExpeditionTitle); }
34 | }
35 |
36 | ///
37 | /// 説明文
38 | ///
39 | public string Detail {
40 | get { return FormMain.Instance.Translator.GetTranslation(RawData.api_details, Utility.TranslationType.ExpeditionDetail); }
41 | }
42 |
43 | ///
44 | /// 遠征時間(分単位)
45 | ///
46 | public int Time {
47 | get { return (int)RawData.api_time; }
48 | }
49 |
50 | ///
51 | /// 難易度
52 | ///
53 | public int Difficulty {
54 | get { return (int)RawData.api_difficulty; }
55 | }
56 |
57 | ///
58 | /// 消費燃料割合
59 | ///
60 | public double Fuel {
61 | get { return RawData.api_use_fuel; }
62 | }
63 |
64 | ///
65 | /// 消費弾薬割合
66 | ///
67 | public double Ammo {
68 | get { return RawData.api_use_bull; }
69 | }
70 |
71 | //win_item
72 |
73 | ///
74 | /// 遠征中断・強制帰投可能かどうか
75 | ///
76 | public bool Cancelable {
77 | get { return (int)RawData.api_return_flag != 0; }
78 | }
79 |
80 |
81 |
82 | public int ID {
83 | get { return MissionID; }
84 | }
85 |
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Dialog/DialogTextInput.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 DialogTextInput : Form {
15 |
16 | ///
17 | /// 入力されたテキスト
18 | ///
19 | public string InputtedText {
20 | get { return TextInput.Text; }
21 | set { TextInput.Text = value; }
22 | }
23 |
24 |
25 | public DialogTextInput() {
26 | InitializeComponent();
27 |
28 | ControlHelper.SetDoubleBuffered( tableLayoutPanel1 );
29 | }
30 |
31 | public DialogTextInput( string title, string description )
32 | : this() {
33 |
34 | Initialize( title, description );
35 | }
36 |
37 |
38 | ///
39 | /// 指定されたタイトルと説明文でダイアログ ボックスを初期化します。
40 | ///
41 | /// タイトル。
42 | /// 説明文。
43 | public void Initialize( string title, string description ) {
44 | this.Text = title;
45 |
46 | tableLayoutPanel1.SuspendLayout();
47 |
48 | Description.Text = description;
49 |
50 | tableLayoutPanel1.ResumeLayout();
51 |
52 | }
53 |
54 | ///
55 | /// テキストボックスを複数行にするかを指定します。
56 | ///
57 | /// 複数行にするか。既定値は true です。
58 | public void SetMultiline( bool flag = true ) {
59 |
60 | if ( flag ) {
61 | TextInput.Multiline = true;
62 | TextInput.Dock = DockStyle.Fill;
63 | } else {
64 | TextInput.Multiline = false;
65 | TextInput.Dock = DockStyle.None;
66 | }
67 |
68 | }
69 |
70 |
71 |
72 | private void ButtonOK_Click( object sender, EventArgs e ) {
73 | DialogResult = System.Windows.Forms.DialogResult.OK;
74 | }
75 |
76 | private void ButtonCancel_Click( object sender, EventArgs e ) {
77 | DialogResult = System.Windows.Forms.DialogResult.Cancel;
78 | }
79 |
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/ElectronicObserver/Utility/ErrorReporter.cs:
--------------------------------------------------------------------------------
1 | using ElectronicObserver.Utility.Mathematics;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace ElectronicObserver.Utility {
10 |
11 | public class ErrorReporter {
12 |
13 | private const string _basePath = "ErrorReport";
14 |
15 |
16 | ///
17 | /// エラーレポートを作成します。
18 | ///
19 | /// 発生した例外。
20 | /// 追加メッセージ。
21 | /// エラーが発生したAPI名。省略可能です。
22 | /// エラーが発生したAPIの内容。省略可能です。
23 | public static void SendErrorReport( Exception ex, string message, string connectionName = null, string connectionData = null ) {
24 |
25 | Utility.Logger.Add( 3, string.Format( "{0} : {1}", message, ex.Message ) );
26 |
27 | string path = _basePath;
28 |
29 | if ( !Directory.Exists( path ) )
30 | Directory.CreateDirectory( path );
31 |
32 |
33 | path = string.Format( "{0}\\{1}.txt", path, DateTimeHelper.GetTimeStamp() );
34 |
35 | try {
36 | using ( StreamWriter sw = new StreamWriter( path, false, new System.Text.UTF8Encoding( false ) ) ) {
37 |
38 | sw.WriteLine( LoggerRes.ErrorReport, DateTime.Now );
39 | sw.WriteLine( LoggerRes.ErrorField, ex.GetType().Name );
40 | sw.WriteLine( ex.Message );
41 | sw.WriteLine( LoggerRes.AdditionalInfo, message );
42 | sw.WriteLine( LoggerRes.StackTrace );
43 | sw.WriteLine( ex.StackTrace );
44 |
45 | if ( connectionName != null && connectionData != null ) {
46 | sw.WriteLine();
47 | sw.WriteLine( LoggerRes.APIData, connectionName );
48 | sw.WriteLine( connectionData );
49 | }
50 | }
51 |
52 | } catch ( Exception ) {
53 |
54 | Utility.Logger.Add( 3, string.Format( LoggerRes.FailedSavingErrorReport, ex.Message, ex.StackTrace ) );
55 | }
56 |
57 |
58 | if ( Utility.Configuration.Config.Debug.AlertOnError )
59 | System.Media.SystemSounds.Hand.Play();
60 | }
61 |
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/ElectronicObserver/Utility/Storage/SerializableFont.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Drawing;
5 | using System.Linq;
6 | using System.Runtime.Serialization;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Xml.Serialization;
10 |
11 | namespace ElectronicObserver.Utility.Storage {
12 |
13 | ///
14 | /// シリアル化可能な Font を扱います。
15 | ///
16 | public class SerializableFont {
17 |
18 |
19 | [IgnoreDataMember]
20 | public Font FontData { get; set; }
21 |
22 |
23 | public SerializableFont() {
24 | FontData = null;
25 | }
26 |
27 | public SerializableFont( Font font ) {
28 | FontData = font;
29 | }
30 |
31 | public SerializableFont( string attribute ) {
32 | SerializeFontAttribute = attribute;
33 | }
34 |
35 |
36 | [DataMember]
37 | public string SerializeFontAttribute {
38 | get { return FontToString( FontData ); }
39 | set { FontData = StringToFont( value ); }
40 | }
41 |
42 |
43 | public static implicit operator Font( SerializableFont value ) {
44 | if ( value == null ) return null;
45 | return value.FontData;
46 | }
47 |
48 | public static implicit operator SerializableFont( Font value ) {
49 | return new SerializableFont( value );
50 | }
51 |
52 |
53 | public static Font StringToFont( string value, bool suppressError = false ) {
54 | try {
55 | return (Font)TypeDescriptor.GetConverter( typeof( Font ) ).ConvertFromString( value );
56 |
57 | } catch ( Exception ex ) {
58 | if ( !suppressError )
59 | Utility.ErrorReporter.SendErrorReport( ex, "SerializableFont.StringToFont failed" );
60 | return null;
61 | }
62 | }
63 |
64 | public static string FontToString( Font value, bool suppressError = false ) {
65 | try {
66 | if ( value != null ) {
67 | return TypeDescriptor.GetConverter( typeof( Font ) ).ConvertToString( value );
68 | }
69 | } catch ( Exception ex ) {
70 | if ( !suppressError )
71 | Utility.ErrorReporter.SendErrorReport( ex, "SerializableFont.FontToString failed" );
72 | }
73 |
74 | return null;
75 | }
76 |
77 |
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/ElectronicObserver/Notifier/NotifierCondition.cs:
--------------------------------------------------------------------------------
1 | using ElectronicObserver.Data;
2 | using ElectronicObserver.Observer;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace ElectronicObserver.Notifier {
10 |
11 | ///
12 | /// 疲労回復通知を扱います。
13 | ///
14 | public class NotifierCondition : NotifierBase {
15 |
16 | private Dictionary _processedFlags;
17 |
18 |
19 | public NotifierCondition()
20 | : base() {
21 | Initialize();
22 | }
23 |
24 | public NotifierCondition( Utility.Configuration.ConfigurationData.ConfigNotifierBase config )
25 | : base( config ) {
26 | Initialize();
27 | }
28 |
29 |
30 | private void Initialize() {
31 | DialogData.Title = NotifierRes.ConditionTitle;
32 | _processedFlags = new Dictionary();
33 |
34 | for ( int i = 1; i <= 4; i++ )
35 | _processedFlags.Add( i, false );
36 |
37 |
38 | APIObserver o = APIObserver.Instance;
39 |
40 | o["api_port/port"].ResponseReceived += ClearFlags;
41 |
42 | }
43 |
44 |
45 | private void ClearFlags( string apiname, dynamic data ) {
46 |
47 | foreach ( int key in _processedFlags.Keys.ToArray() ) { //列挙中の変更によるエラーを防ぐため
48 | _processedFlags[key] = false;
49 | }
50 | }
51 |
52 |
53 | protected override void UpdateTimerTick() {
54 |
55 | foreach ( var fleet in KCDatabase.Instance.Fleet.Fleets.Values ) {
56 |
57 | if ( fleet.ExpeditionState > 0 || fleet.IsInSortie ) continue;
58 |
59 | if ( _processedFlags[fleet.FleetID] )
60 | continue;
61 |
62 |
63 | if ( fleet.ConditionTime != null && !fleet.IsConditionTimeLocked ) {
64 |
65 | if ( ( (DateTime)fleet.ConditionTime - DateTime.Now ).TotalMilliseconds <= AccelInterval ) {
66 |
67 | Notify( fleet.FleetID );
68 | _processedFlags[fleet.FleetID] = true;
69 | }
70 | }
71 | }
72 |
73 | }
74 |
75 | public void Notify( int fleetID ) {
76 |
77 | DialogData.Message = string.Format( NotifierRes.ConditionText,
78 | fleetID, KCDatabase.Instance.Fleet[fleetID].Name );
79 |
80 | base.Notify();
81 | }
82 |
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/IDDictionary.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 | /// IDを持つデータのリストを保持します。
11 | ///
12 | ///
13 | public class IDDictionary : IReadOnlyDictionary where TData : class, IIdentifiable {
14 |
15 | private readonly IDictionary dict;
16 |
17 | public IDDictionary()
18 | : this( new List() ){
19 | }
20 |
21 | public IDDictionary( IEnumerable source ) {
22 | dict = source.ToDictionary( x => x.ID );
23 | }
24 |
25 |
26 | internal void Add( TData data ) {
27 | dict.Add( data.ID, data );
28 | }
29 |
30 | internal void Remove( TData data ) {
31 | dict.Remove( data.ID );
32 | }
33 |
34 | internal void Remove( int id ) {
35 | dict.Remove( id );
36 | }
37 |
38 | internal int RemoveAll( Predicate predicate ) {
39 | var removekeys = dict.Values.Where( elem => predicate( elem ) ).Select( elem => elem.ID ).ToArray();
40 |
41 | foreach ( var key in removekeys ) {
42 | dict.Remove( key );
43 | }
44 |
45 | return removekeys.Count();
46 | }
47 |
48 | internal void Clear() {
49 | dict.Clear();
50 | }
51 |
52 |
53 | public bool ContainsKey( int key ) {
54 | return dict.ContainsKey( key );
55 | }
56 |
57 | public IEnumerable Keys {
58 | get { return dict.Keys; }
59 | }
60 |
61 | public bool TryGetValue( int key, out TData value ) {
62 | return dict.TryGetValue( key, out value );
63 | }
64 |
65 | public IEnumerable Values {
66 | get { return dict.Values; }
67 | }
68 |
69 | public TData this[int key] {
70 | get { return dict.ContainsKey( key ) ? dict[key] : null; }
71 | }
72 |
73 | public int Count {
74 | get { return dict.Count; }
75 | }
76 |
77 | public IEnumerator> GetEnumerator() {
78 | return dict.GetEnumerator();
79 | }
80 |
81 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
82 | return dict.GetEnumerator();
83 | }
84 | }
85 |
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/APIDictionary.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 class APIDictionary : IReadOnlyDictionary {
11 |
12 | private readonly IDictionary dict;
13 |
14 | public APIDictionary()
15 | : this( new List() ) {
16 | }
17 |
18 | public APIDictionary( IEnumerable source ) {
19 | dict = source.ToDictionary( x => x.APIName );
20 | }
21 |
22 |
23 | internal void Add( APIBase data ) {
24 | dict.Add( data.APIName, data );
25 | }
26 |
27 | internal void Remove( APIBase data ) {
28 | dict.Remove( data.APIName );
29 | }
30 |
31 | internal void Remove( string apiname ) {
32 | dict.Remove( apiname );
33 | }
34 |
35 | internal void Clear() {
36 | dict.Clear();
37 | }
38 |
39 |
40 | public void OnRequestReceived( string apiname, Dictionary data ) {
41 | if ( dict.ContainsKey( apiname ) && dict[apiname].IsRequestSupported ) {
42 | dict[apiname].OnRequestReceived( data );
43 | }
44 | }
45 |
46 | public void OnResponseReceived( string apiname, dynamic data ) {
47 | if ( dict.ContainsKey( apiname ) && dict[apiname].IsResponseSupported ) {
48 | dict[apiname].OnResponseReceived( data );
49 | }
50 | }
51 |
52 |
53 | public bool ContainsKey( string key ) {
54 | return dict.ContainsKey( key );
55 | }
56 |
57 | public IEnumerable Keys {
58 | get { return dict.Keys; }
59 | }
60 |
61 | public bool TryGetValue( string key, out APIBase value ) {
62 | return dict.TryGetValue( key, out value );
63 | }
64 |
65 | public IEnumerable Values {
66 | get { return dict.Values; }
67 | }
68 |
69 | public APIBase this[string key] {
70 | get { return dict.ContainsKey( key ) ? dict[key] : null; }
71 | }
72 |
73 | public int Count {
74 | get { return dict.Count; }
75 | }
76 |
77 | public IEnumerator> GetEnumerator() {
78 | return dict.GetEnumerator();
79 | }
80 |
81 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
82 | return dict.GetEnumerator();
83 | }
84 | }
85 |
86 | }
87 |
--------------------------------------------------------------------------------
/ElectronicObserver/Data/ShipType.cs:
--------------------------------------------------------------------------------
1 | using Codeplex.Data;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Collections.ObjectModel;
5 | using System.Diagnostics;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Text.RegularExpressions;
9 | using System.Threading.Tasks;
10 |
11 | namespace ElectronicObserver.Data {
12 |
13 | ///
14 | /// 艦種
15 | ///
16 | [DebuggerDisplay( "[{ID}] : {Name}" )]
17 | public class ShipType : ResponseWrapper, IIdentifiable {
18 |
19 | ///
20 | /// 艦種
21 | ///
22 | public int TypeID {
23 | get { return (int)RawData.api_id; }
24 | }
25 |
26 | ///
27 | /// 並べ替え順
28 | ///
29 | public int SortID {
30 | get { return (int)RawData.api_sortno; }
31 | }
32 |
33 | ///
34 | /// 艦種名
35 | ///
36 | public string Name {
37 | get { return RawData.api_name; }
38 | }
39 |
40 | ///
41 | /// 入渠時間係数
42 | ///
43 | public int RepairTime {
44 | get { return (int)RawData.api_scnt; }
45 | }
46 |
47 |
48 | //TODO: api_kcnt
49 |
50 |
51 | ///
52 | /// 装備可否フラグ
53 | ///
54 | private HashSet _equipmentType;
55 | public HashSet EquipmentType {
56 | get { return _equipmentType; }
57 | }
58 |
59 |
60 | public int ID {
61 | get { return TypeID; }
62 | }
63 |
64 |
65 |
66 |
67 | public ShipType()
68 | : base() {
69 |
70 | _equipmentType = new HashSet();
71 | }
72 |
73 | public override void LoadFromResponse( string apiname, dynamic data ) {
74 |
75 | // api_equip_type の置換処理
76 | // checkme: 無駄が多い気がするのでもっといい案があったら是非
77 | data = DynamicJson.Parse( Regex.Replace( data.ToString(), @"""(?\d+?)""", @"""api_id_${id}""" ) );
78 |
79 | base.LoadFromResponse( apiname, (object)data );
80 |
81 |
82 | if ( IsAvailable ) {
83 | _equipmentType = new HashSet();
84 | foreach ( KeyValuePair type in RawData.api_equip_type ) {
85 |
86 | if ( (double)type.Value != 0 )
87 | _equipmentType.Add( Convert.ToInt32( type.Key.Substring( 7 ) ) ); //skip api_id_
88 | }
89 | }
90 | }
91 |
92 | }
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/ElectronicObserver/Observer/kcsapi/api_req_kousyou/createitem.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 | public class createitem : APIBase {
11 |
12 | private int[] materials;
13 |
14 | public createitem()
15 | : base() {
16 |
17 | materials = new int[4];
18 | }
19 |
20 | public override void OnRequestReceived( Dictionary data ) {
21 |
22 | for ( int i = 0; i < 4; i++ ) {
23 | materials[i] = int.Parse( data["api_item" + ( i + 1 )] );
24 | }
25 |
26 | base.OnRequestReceived( data );
27 | }
28 |
29 | public override void OnResponseReceived( dynamic data ) {
30 |
31 | KCDatabase db = KCDatabase.Instance;
32 |
33 | //装備の追加 データが不十分のため、自力で構築しなければならない
34 | if ( (int)data.api_create_flag != 0 ) {
35 | var eq = new EquipmentData();
36 | eq.LoadFromResponse( APIName, data.api_slot_item );
37 | db.Equipments.Add( eq );
38 | }
39 |
40 | db.Material.LoadFromResponse( APIName, data.api_material );
41 |
42 | //logging
43 | if ( Utility.Configuration.Config.Log.ShowSpoiler ) {
44 | if ( (int)data.api_create_flag != 0 ) {
45 |
46 | int eqid = (int)data.api_slot_item.api_slotitem_id;
47 |
48 | Utility.Logger.Add( 2, string.Format( LoggerRes.CreatedItem,
49 | db.MasterEquipments[eqid].CategoryTypeInstance.Name,
50 | db.MasterEquipments[eqid].Name,
51 | materials[0], materials[1], materials[2], materials[3],
52 | db.Fleet[1].MembersInstance[0].NameWithLevel ) );
53 | } else {
54 | Utility.Logger.Add( 2, string.Format( LoggerRes.ItemCreationFailed,
55 | materials[0], materials[1], materials[2], materials[3],
56 | db.Fleet[1].MembersInstance[0].NameWithLevel ) );
57 | }
58 | }
59 |
60 | base.OnResponseReceived( (object) data );
61 | }
62 |
63 | public override bool IsRequestSupported { get { return true; } }
64 | public override bool IsResponseSupported { get { return true; } }
65 |
66 | public override string APIName {
67 | get { return "api_req_kousyou/createitem"; }
68 | }
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/ElectronicObserver/Window/Dialog/DialogWhitecap.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ElectronicObserver.Window.Dialog {
2 | partial class DialogWhitecap {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose( bool disposing ) {
13 | if ( disposing && ( components != null ) ) {
14 | components.Dispose();
15 | }
16 | base.Dispose( disposing );
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.components = new System.ComponentModel.Container();
27 | this.UpdateTimer = new System.Windows.Forms.Timer(this.components);
28 | this.SuspendLayout();
29 | //
30 | // UpdateTimer
31 | //
32 | this.UpdateTimer.Tick += new System.EventHandler(this.UpdateTimer_Tick);
33 | //
34 | // DialogWhitecap
35 | //
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
37 | this.ClientSize = new System.Drawing.Size(284, 262);
38 | this.DoubleBuffered = true;
39 | this.Font = new System.Drawing.Font("Meiryo UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
40 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
41 | this.MaximizeBox = false;
42 | this.MinimizeBox = false;
43 | this.Name = "DialogWhitecap";
44 | this.ShowIcon = false;
45 | this.ShowInTaskbar = false;
46 | this.Text = "癒し処「白波」";
47 | this.Load += new System.EventHandler(this.DialogWhitecap_Load);
48 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.DialogWhitecap_Paint);
49 | this.DoubleClick += new System.EventHandler(this.DialogWhitecap_DoubleClick);
50 | this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.DialogWhitecap_MouseClick);
51 | this.ResumeLayout(false);
52 |
53 | }
54 |
55 | #endregion
56 |
57 | private System.Windows.Forms.Timer UpdateTimer;
58 | }
59 | }
--------------------------------------------------------------------------------