Coder Social home page Coder Social logo

electronicobserver's Introduction

七四式電子観測儀

現在鋭意開発中の艦これ補助ブラウザです。

実装されている機能

各機能はそれぞれウィンドウとして独立しており、自由にドッキング・タブ化するなどしてレイアウト可能です。
以下では概略を紹介します。詳しくはWikiを参照してください。

  • 内蔵ブラウザ(スクリーンショット, ズーム, ミュートなど)
  • 艦隊(状態(遠征中, 未補給など), 制空戦力, 索敵能力)
    • 個艦(Lv, HP, コンディション, 補給, 装備スロット)
    • 艦隊一覧(全艦隊の状態を一目で確認できます)
    • グループ(フィルタリングで艦娘情報を表示)
  • 入渠(入渠艦, 残り時間)
  • 工廠(建造中の艦名, 残り時間)
  • 司令部(提督情報, 資源情報)
  • 羅針盤(次の進路, 敵編成・獲得資源等のイベント予測)
  • 戦闘(戦闘予測・結果表示)
  • 情報(中破絵未回収艦一覧, 海域ゲージ残量など)
  • 任務(達成回数/最大値表示)
  • 図鑑(艦船/装備図鑑)
  • 装備一覧
  • 通知(遠征・入渠完了, 大破進撃警告など)
  • レコード(開発・建造・ドロップ艦の記録など)
  • ウィンドウキャプチャ(他プログラムのウィンドウを取り込む)

なお、全ての機能において艦これ本体の送受信する情報に干渉する操作は行っていません。

ダウンロード

リリースページ もしくは 配布ブログ を参照してください。

更新内容・履歴はこちらで確認できます。

開発者の皆様へ

開発のための情報はこちらに掲載しています。

Other/Information/ に艦これのAPIや仕様についての情報を掲載しています。
ご自由にお持ちください。但し内容は保証しません。

ライセンスは MIT License です。

使用しているライブラリ

連絡先など

electronicobserver's People

Contributors

alalwww avatar andanteyk avatar brunei-admiral avatar ccxcxd avatar cna-bld avatar cosmius avatar dkwingsmt avatar grdanjou avatar hkuno9000 avatar javran avatar kagamichan avatar myangelkamikaze avatar nekopanda avatar nishisonic avatar pandamon avatar radarnyan avatar rjhsiao avatar slime7 avatar sorube314 avatar t-f-m avatar tsanie avatar vanishcrow avatar xiaozhikang0916 avatar yukun0406 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

electronicobserver's Issues

他の畫面から母港に切り替える時に、エラーメッセージが出ました

つい先発見したエラーメッセージです
一応Logも添付きますけど、Windowsの使う言語は**語に設定されますから、そのエラーメッセージの半分も**語になりました...

[2015/5/1 上午 12:29:01][3] : Responseの受信中にエラーが発生しました。 : Year、Month 和 Day 參數描述無法表示的 DateTime。
[2015/5/1 上午 12:29:03][3] : Responseの受信中にエラーが発生しました。 : Year、Month 和 Day 參數描述無法表示的 DateTime。
[2015/5/1 上午 12:29:07][3] : Responseの受信中にエラーが発生しました。 : Year、Month 和 Day 參數描述無法表示的 DateTime。

着任(ログイン)の時も、戦闘終わりの後も、そのエラーメッセージも出ます
そして、艦隊の状態も更新できません

Why is 'StyleSheetApplied' set to 'false' on 'Browser_DocumentCompleted'?

I've been trying to eliminate flickers of the Browser, it's not a bug that breaks things, it just annoys me. After reading the code, at first I thought the flickers come from 74EO applying stylesheet to too many elements, so I reduced it to as less as possible (at least that's the shortest answer I can come up with).

But the flickers can still be seen when the page is loading slow. Then I found this :

        private bool StyleSheetApplied {
            get { return _styleSheetApplied; }
            set {

                if ( value ) {
                    //Browser.Anchor = AnchorStyles.None;
                    ApplyZoom();
                    SizeAdjuster_SizeChanged( null, new EventArgs() );

                } else {
                    SizeAdjuster.SuspendLayout();
                    //Browser.Anchor = AnchorStyles.Top | AnchorStyles.Left;
                    Browser.Location = new Point( 0, 0 );
                    Browser.MinimumSize = new Size( 0, 0 );
                    Browser.Size = SizeAdjuster.Size;
                    SizeAdjuster.ResumeLayout();
                }

                _styleSheetApplied = value;
            }
        }

and it's called from here :

        private void Browser_DocumentCompleted( object sender, WebBrowserDocumentCompletedEventArgs e ) {

            StyleSheetApplied = false; // <- line 273

So every time Browser_DocumentCompleted is triggered after the stylesheet is applied (it could happen due to links in other js files loading slower than the game - that could happen a lot), a flicker will happen.

Now here comes the question: what is this line 273 for? I'd like to delete it to avoid Browser flickering.

艦これ統計データベースへの送信におけるAPIフィルタについて

艦これ統計データベースへの送信で、送るAPIをフィルタする機能がありますが、一部のAPIしか送らないというのはサーバ側での処理に支障を来す恐れがあると思います。艦これDBの作者様に直接聞いたわけではありませんが、たいていの専ブラやツールは一部のAPIしか受け取れない状況ではうまく動かないと思うので、危険ではないかと。

もし、艦これDBの作者様からOKを頂いているということでしたら、私の杞憂ですので無視してください。

Tool Window (like "装備一覧") - window disappear when click on "File" menu.

74eo-bug-tool-window

Sometimes when I click the "File" menu of some tool window (eg: "装備一覧", "舰船图鉴" ) the menu would display but the tool window disappears. This bug doesn't happen right after I start 74EO, and I can't find a way to actively trigger it.

I found a workaround to make the window stop disappearing: enable and disable "Always on top" for 74EO. See the GIF on top for the behavior of the bug and the workaround.

艦隊:航空機熟練度と改修レベル表示の両立について

ver. 2.5.3 現在、熟練度とレベルは同じ位置に表示されるため、見にくくなっている。
(設定によってどちらかのみ表示することはできるが、根本的解決にはなっていない。)
これの改善を行いたい。

例:
熟練度をアイコンにオーバーラップさせる

Exception when start up

Just starting up in "Game Start" scene
すべての通知をミユート checked
2 ship in construction deck
Catch exception described as follow

System.NullReferenceException: 未将对象引用设置到对象的实例。
在 ElectronicObserver.Notifier.NotifierConstruction.Notify(Int32 arsenalID, Int32 shipID)
在 ElectronicObserver.Notifier.NotifierConstruction.UpdateTimerTick()
在 System.Action.Invoke()
在 ElectronicObserver.Utility.SystemEvents.OnUpdateTimerTick()
在 ElectronicObserver.Window.FormMain.UIUpdateTimer_Tick(Object sender, EventArgs e)
在 System.Windows.Forms.Timer.OnTick(EventArgs e)
在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Not showing all the time

Responseの受信中にエラーが発生しました。

一応報告します。
多分今回メンテナンスの時、運営は api_req_map/startapi_req_map/next この2つ API の Response 内容を変更されました...


20160503_04340297.txt

エラーレポート : 2016/5/3 上午 04:34:02
エラー : FormatException
輸入字串格式不正確。
追加情報 : Responseの受信中にエラーが発生しました。
スタックトレース:
   於 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   於 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   於 Codeplex.Data.DynamicJson.TryGetMember(GetMemberBinder binder, Object& result)
   於 CallSite.Target(Closure , CallSite , Object )
   於 ElectronicObserver.Data.CompassData.get_GetItemID()
   於 ElectronicObserver.Window.FormCompass.GetMaterialName(CompassData compass)
   於 ElectronicObserver.Window.FormCompass.Updated(String apiname, Object data)
   於 ElectronicObserver.Observer.APIReceivedEventHandler.Invoke(String apiname, Object data)
   於 CallSite.Target(Closure , CallSite , APIReceivedEventHandler , String , Object )
   於 ElectronicObserver.Observer.APIBase.OnResponseReceived(Object data)
   於 ElectronicObserver.Observer.kcsapi.api_req_map.start.OnResponseReceived(Object data)
   於 CallSite.Target(Closure , CallSite , APIBase , Object )
   於 System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)
   於 CallSite.Target(Closure , CallSite , APIBase , Object )
   於 ElectronicObserver.Observer.APIDictionary.OnResponseReceived(String apiname, Object data)
   於 CallSite.Target(Closure , CallSite , APIDictionary , String , Object )
   於 ElectronicObserver.Observer.APIObserver.LoadResponse(String path, String data)

通信内容 : api_req_map/start
svdata={"api_result":1,"api_result_msg":"\u6210\u529f","api_data":{"api_rashin_flg":1,"api_rashin_id":2,"api_maparea_id":2,"api_mapinfo_no":3,"api_no":2,"api_color_no":2,"api_event_id":2,"api_event_kind":0,"api_next":1,"api_bosscell_no":11,"api_bosscomp":1,"api_airsearch":{"api_plane_type":0,"api_result":0},"api_itemget":[{"api_usemst":4,"api_id":1,"api_getcount":30,"api_name":"","api_icon_id":1}],"api_from_no":0}}

20160503_04351616.txt

エラーレポート : 2016/5/3 上午 04:35:16
エラー : FormatException
輸入字串格式不正確。
追加情報 : Responseの受信中にエラーが発生しました。
スタックトレース:
   於 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   於 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   於 Codeplex.Data.DynamicJson.TryGetMember(GetMemberBinder binder, Object& result)
   於 CallSite.Target(Closure , CallSite , Object )
   於 ElectronicObserver.Data.CompassData.get_GetItemID()
   於 ElectronicObserver.Window.FormCompass.GetMaterialName(CompassData compass)
   於 ElectronicObserver.Window.FormCompass.Updated(String apiname, Object data)
   於 ElectronicObserver.Observer.APIReceivedEventHandler.Invoke(String apiname, Object data)
   於 CallSite.Target(Closure , CallSite , APIReceivedEventHandler , String , Object )
   於 ElectronicObserver.Observer.APIBase.OnResponseReceived(Object data)
   於 ElectronicObserver.Observer.kcsapi.api_req_map.next.OnResponseReceived(Object data)
   於 CallSite.Target(Closure , CallSite , APIBase , Object )
   於 System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)
   於 CallSite.Target(Closure , CallSite , APIBase , Object )
   於 ElectronicObserver.Observer.APIDictionary.OnResponseReceived(String apiname, Object data)
   於 CallSite.Target(Closure , CallSite , APIDictionary , String , Object )
   於 ElectronicObserver.Observer.APIObserver.LoadResponse(String path, String data)

通信内容 : api_req_map/next
svdata={"api_result":1,"api_result_msg":"\u6210\u529f","api_data":{"api_rashin_flg":0,"api_rashin_id":0,"api_maparea_id":2,"api_mapinfo_no":3,"api_no":12,"api_color_no":2,"api_event_id":2,"api_event_kind":0,"api_next":2,"api_bosscell_no":11,"api_bosscomp":1,"api_comment_kind":0,"api_production_kind":0,"api_airsearch":{"api_plane_type":0,"api_result":0},"api_itemget":[{"api_usemst":4,"api_id":1,"api_getcount":15,"api_name":"","api_icon_id":1}]}}

ブラウザが真っ白になるあるいは通信が非常に遅くなる

VirtualBoxかVMwareがインストールされていて、かつIEのプロキシ設定で「設定を自動的に検出する」がチェックされていると発生する問題です。PCでAndroidのゲームを動かすために使われている、GenyMotionがVirtualBoxを含んでいるため影響範囲が拡大したようです。

解決策は、Nekoxyのアップストリーム設定でSystemProxyではなくDirectAccessを指定することです。SystemProxyは、航海日誌などとの連携をスムーズにするために実装されました。しかし、現状でうまく機能しているとは言い難いですし、むしろ被害が大きいのでDirectAccessにすることをお勧めします。

アップストリーム設定でSystemProxyを指定すると、NekoxyはIEのプロキシ設定から上流のプロキシのアドレスを取得してそちらにリクエストを転送します。上記の環境では、Nekoxyは謎のプロキシのアドレスを取得して、そちらにリクエストを転送します。

リクエストを受け取った謎のプロキシは、なぜかもう一度40620にリクエストを転送するため、ループができてしまいます。ループをぐるぐる回ってephemeralポートを使い切ったところで、最後のプロキシが外にリクエストを投げるので、通信が非常に遅くなる問題が生じます。

謎のプロキシの正体が何なのかはまだわかりませんが、DirectAccessを指定することで、このプロキシにリクエストを転送することがなくなるので問題が解決します。

[表示]-[入渠] : Ship name displays higher if ellipsised.

If ship name is too long to fit in the panel, it will be ellipsised. But there seems to be a BUG that when a label is set to AutoEllipsis = true and ellipsis happens, it will be aligned to top regardless of property given.

74eo-2 4 3-issue-001
I don't like the idea of setting UseCompatibleTextRendering so I tried to fix this by ellipsising the string myself, and it seems to be working (left one in the picture above) but I don't really like what I've done, maybe you can come up with a better solution (or more legit code).

編成画像出力の改善

(改善案)

  • デフォルトのタイトルフォントを bold にする
  • バナーのLv表示を改善?
    • 影を入れるか Lv. と明示する
  • カットイン:画像がないときに艦名を描画するように
  • バナー・カットイン:運を表示
  • 5スロット艦がいるときだけスペースを空ける
    • 補強スロットとの間に線があるといいかも
  • バナー:艦ごとに下線を入れる

レイアウトファイルの保存時に例外が発生し保存に失敗

初回起動時のレイアウトファイルの保存を選択時に以下の例外が発生しました。

エラーレポート : 2015/05/02 12:47:43
エラー : DirectoryNotFoundException
パス 'PATH_TO_ElectronicObserver\Settings\WindowLayout.zip' の一部が見つかりませんでした。
追加情報 : ウィンドウ レイアウトの保存に失敗しました。
スタックトレース:
   場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   場所 ElectronicObserver.Window.FormMain.SaveLayout(String path)

Condition timer not working correctly

After finishing a battle with combined fleet and come back to home port, ships in fleet 2 are actually in yellow-face condition, but the condition timer remind me that they are recover from bad-condition.
qq 20160523222533

If I refresh by coming back to home port, the timer work fine then
qq 20160523222543
The timer of fleet 1 seems work fine all the time.

起動時にタスクバーに表示されない

起動直後に別のプログラムにフォーカスがあると、タスクバーに表示されなくなることがある。
一度フォーカスされると以降表示されるようになる。

DateTime Parse Error

Records were always generating errors. Turns out .NET's DateTime.ToString() is a bit strange. Note the system Short Date in all these.

Here's how I think you expected dates to be:
standard
Here's how my dates were:
mine
One way to fix would be get the separators from the system:
fix
And it would still work the original way:
fixv2

Changing Windows input method in Win10 sometimes causes 74EO to ignore input

(74E0 25, 74EO 25B)
(Windows 10)

I started noticing this problem in these 2 weeks.
Sometimes when I change my input method between English and Japanese, the 74EO will no longer take input.

  • The "Flash" part of Kancolle will hang. (e.g. the 出擊 at 母港 will stop spinning)
  • But all the timers in 74EO will continue to count normally.
  • But then clicking anything of 74EO will have no response.
  • The cursor does not change if I move it to the toolwindow border.
  • Even the 通知 popup windows will have no response.

Sometimes after this behavior happens, if I open the Win10 "Language Preferences", then 74EO will return to normal.
But sometimes this workaround does not work and I will have to kill it via Task Manager.

Maybe this is a problem of Flash/Windows10/IE/Edge...etc, I am not sure...

Thanks.

Combined Fleet (連合艦隊) View

Please add a separate fleet view for combined fleet.

Since it's only used for combined fleet, several information such as equipment icons could be omitted to save UI space. The separate sub-window would also help users by calculating the combined fighter power and LOS rather than manually calculating from the separate fleet 1 and fleet 2 sub-window.

Below is an illustration of the fleet view if stacked horizontally, but stacked vertically is okay too.

combinedfleetview

NavigateToLogInPage() could be called before proxy set.

I personally didn't enable "load on start" (起動時に読み込む) for Browser (I load page manually every time I start 74EO) so I haven't encount this problem, but I've noticed some users report they see "Region invalid" error from DMM and need to manually reload the browser for proxy to work.

Simple method to test:

File: Browser/FormBrowser.cs
@@ -329,10 +329,13 @@ namespace Browser {
 		/// 指定した URL のページを開きます。
 		/// </summary>
 		public void Navigate( string url ) {
 			if (url != Configuration.LogInPageURL || !Configuration.AppliesStyleSheet)
 				StyleSheetApplied = false;
+			if (!isProxySet) {
+				MessageBox.Show("Proxy not set, abort."); return;
+			}
 			Browser.Navigate( url );
 		}
 
 		/// <summary>
 		/// ブラウザを再読み込みします。
@@ -543,17 +546,20 @@ namespace Browser {
 
 
 		}
 
 
+		private bool isProxySet = false;
+
 		public void SetProxy( string proxy ) {
 			ushort port;
 			if ( ushort.TryParse( proxy, out port ) ) {
 				WinInetUtil.SetProxyInProcessForNekoxy( port );
 			} else {
 				WinInetUtil.SetProxyInProcess( proxy, "local" );
 			}
+			isProxySet = true;
 
 			//AddLog( 1, "setproxy:" + proxy );
 		}

NavigateToLogInPage() is called from FormBrowserHost.cs, I literally have no idea about how this "async" thing works... So I think I can only leave this for you to fix.

About code style

After modifying code, i always found that it's a big commit with too much unnecessary line changed, especially if i change any form designing. It may be a big problem for code reviewing.
i notice that similar issue has been discussed in #76 , so i wander which kind of line ending do you use in this project.
FYI visual studio uses CRLF as default and hard to change it.

Also i notice that you use tab as indentation, but i'm using 4 spaces. So i want to confirm which kind do you prefer.

And when i change the form designing in visual studio, it change the .design.cs file automatically, but bring a big change to this file. do you have any idea to avoid it?

Screenshot not working

After the 1.2.6 update whenever I use screenshot button of ElectronicObserver, it gives me this error instead.

image

艦船図鑑⑤を選択すると実行時エラーとなる

2015/5/29のアップデートで艦船図鑑⑤が追加されましたが、これをクリックすると以下のメッセージが飛んできます。

{"api_result":1,"api_result_msg":"成功","api_data":null}

ShipParameterRecord.AlbumOpened()やFormInformation.GetAlbumInfo()はapi_dataに値が入っていることが前提の処理となっているため、null参照でエラーとなってしまいます。
(プレイには影響ありませんが)

ちょっと影響範囲が広そうなのでIssueに登録だけしておきます。

failed to load time zone info

When open show error {"The time zone ID 'Tokyo Standard Time' was found on the local computer, but the registry information was corrupt."}
The problem is for unknown reason The program (and I) cannot find correct time zone info in registry.
Is it better to handle this exception and not hard code Tokyo standard time in program?
To fix this problem and enjoy the tool I've downloaded the source and changed the time zone setting to my current time zone.

1.2.0 任務統計bug

今日(2015-04-28) 5時 任務更新 見つかりました。
前の日 未完の任務 消えるはありません。
日本語が得意ではありません。理解することを望んでいます。 ('_')
20150428043242

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.