§
------------------------------------------------
MIP - Simutrans いろいろ機能追加パッチ

				Jul 19, 2012
				 for MIP-002
				    wackdone
------------------------------------------------

Simutransにちょこっと便利な細かい機能追加を行うパッチです。

主に以下のような機能を追加します。
  * 柔軟な高架+スロープ建設 (裏技を使わなくても高架の下にスロープが置ける)
  * トンネル入り口の建設制限解除 (スロープや駅ホームが置ける)
  * 駅ホーム設置時の向きの反転 (Ctrlキーを押しながら設置)
  * 駅ホームのレベルのダウングレード (Shiftキーを押しながら設置)
  * デフォルトツールの記憶の変更
  * ゲームロード時に自動でポーズ
  * トップウィンドウだけのスクリーンショット (Ctrlキーを押しながら撮影)

それぞれの機能はビルド時に有効/無効を切り替えることができます。
(試験用バイナリ配布時には「ロード時の自動ポーズ」以外は有効にしてビルドします)


--------------------
= バージョン情報
--------------------
パッチバージョン: MIP Version 0.02
対応Simutransソース: Nightly r5788
パッチファイル名: simutrans-r5788-mip-002.patch

== 適用可能ソースについて
手元では、Release 111.3 (r5772) にも適用で動作することを確認しています。
おそらく、この間のバージョンであればどれも適用可能でしょう。

--------------------
= セーブファイルのバージョン: 変わらない
--------------------
このパッチをあてることによって、セーブファイルのバージョンが変わることはありません。
またオブジェクトのタイプなどにも一切の変更はありません。
これまでのゲームをそのままロードできますし、このパッチの元で作ったゲームを
オリジナルのSimutransでロードすることもできます。

--------------------
= ご注意
--------------------
本パッチは、上述の対応バージョンのオリジナルソースに対してのみテストしています。
本パッチを使用したことによる損害などには、一切責任を負えませんのでご了承ください。

本パッチは現状、ネットワークモードで動作するかは検証されていません。

--------------------
= パッチの適用とビルド
--------------------
Simutransのビルドが可能な環境とスキルがあることを前提に説明します。

== パッチの適用
Nightlyのソースを入手し、これに対して同梱のパッチファイル
  simutrans-r5788-mip-002.patch
をpatchコマンドなどを使ってあててください。

例:
{{{
  svn co -r5788 svn://tron.homeunix.org/simutrans/simutrans/trunk
  cd r5788
  patch -p0 < simutrans-r5788-mip-002.patch
}}}

== コンフィグ
ビルドコンフィグファイル (config.defaultなど) の中に以下のような
行を追加してください。

{{{
# 高架線下のスロープ建設を可能にする
CFLAGS += -DMAY_SLOPE_UNDER_ELEVATED
# トンネル入り口上の高架線建設を可能にする
CFLAGS += -DMAY_ELEVATED_ON_TUNNEL_ENTRANCE
# トンネル入り口部のホーム建設建設を可能にする (現状表示に難あり)
CFLAGS += -DMAY_STATION_ON_TUNNEL_ENTRANCE
# 駅ホームの自動設置判定の反転
CFLAGS += -DMAY_FLIP_STATION_FACE
# 駅のダウングレード
CFLAGS += -DMAY_DOWNGRADE_HALT
# 線路ツールのデフォルトとして高架線を記憶しない
CFLAGS += -DDONT_REMEMBER_ELEVATED
# ゲームロード時にポーズ状態で開始
CFLAGS += -DPAUSE_AFTER_LOAD
# 最全面のウィンドウだけのスクリーンショット (Ctrlを押しながら撮影)
CFLAGS += -DSCREENSHOT_ONLY_TOPWIN
}}}

各項目を入れるか入れないかで機能の有無を切り替えられます。
(上の{{{から}}}の間の部分をコピーして、必要に応じて先頭に'#'を入れてコメントアウトすると便利でしょう)
なおWindows GDI用のコンフィグのサンプルを config.MIP.sample として同梱します。

ちなみにソースコード上は全てこれを元にifdefで制御されており、
このマクロ定義をしなければ、動作がオリジナル通りになります。
障害時にはこの定義を切り替えて動作を比較してください。

== ビルド
オリジナルと同様に make でコンパイル/リンクできます。

== パッチ機能有効化の組み合わせ
全ての機能が無効の場合 (CFLAGSで何も追加せず) と、
全ての機能が有効の場合 (添付の config.sample 相当) とはビルド、動作ともに
確認しています。

それぞれの機能の有効、無効は独立になるようにコーディングしていますが、
組み合わせによっては予想外の動作をするかもしれません。
もし組み合わせによって問題が発生した場合はお知らせください。


--------------------
= 機能の説明: スロープ、トンネルまわりの建築制限の緩和
--------------------
主に高架線やトンネル入り口まわりでの建築上の制約を取り除きます。

----------
== MAY_SLOPE_UNDER_ELEVATED: 高架線下のスロープ
----------
水平な高架線の下に並行する方向のスロープが設置できます。
また逆に既存のスロープの端に接っするように、高架線の端部を下げることができます。

(一部で解説された裏技のように整地、特殊駅施設を設置、施設削除という手順を踏めば
これまでも可能ではありました)

----------
== MAY_ELEVATED_ON_TUNNEL_ENTRANCE: トンネル入り口上の高架線
----------
トンネル入り口の上に高架線を施設できるようにします。
トンネル入り口の真上に並行して水平に高架線を設置したい場合は、
傾斜に沿った高架線を建設したあと、スロープツールで下げてください。

----------
== MAY_STATION_ON_TUNNEL_ENTRANCE: トンネル入り口部のホーム
----------
トンネル入り口部分に駅ホームやバス停を設置できるようにします。
(昔のSimutransでは可能でした)

問題点: ホームの表示位置がずれてしまう。
  (対策検討中)


--------------------
= 機能の説明: 駅ホーム設置の柔軟性確保
--------------------
駅のホームを設置する時に、これまでできなかった事を可能にします。
(一部、SimutransVT と似ているが操作方法の異なるものがあります。
 VTをご使用中の方はご注意ください。)

----------
== MAY_FLIP_STATION_FACE: 駅ホームの自動設置判定の反転
----------
自動設置対応ホームを設置時に、Ctrlを押しながら設置することで、
本来の自動判定の向きとは逆向きのホームを建設します。
(Ctrlを押すのは設置位置をクリックするタイミングです。
 ツールを選ぶタイミングではありません。)

例えばデフォルトでは、下の線路の中央をクリックすると

　　　　　　□  ホーム
線路　＝＝＝＝＝＝＝

のように設置されるところを、Ctrlを押しながらクリックすることで、

線路　＝＝＝＝＝＝＝
　　　　　　□  ホーム

のように設置されます。
続けて並べて設置する時は (自動判定は既存のホームの向きを参考にするので)
Ctrlを押さないようにして下さい。

言葉で考えるより使ってみて慣れた方が早い機能です。
(次の MAY_DOWNGRADE_HALT を有効にすれば、資金に余裕さえあれば何度でも試せますし。)

----------
== MAY_DOWNGRADE_HALT: 駅のダウングレード
----------
既存の駅に上書きで、レベルの低い(容量の小さい)駅を建設できるようにします。
駅を設置時にShiftキーを押しながら設置します。

--------------------
= 機能の説明: その他
-------------------
その他、ゲーム時の操作を便利にする機能などです。

----------
== DONT_REMEMBER_ELEVATED: 高架線をデフォルトツールとして記憶しない
----------
't'キーで最後に選択していた線路をデフォルトツールとして呼び出すことができますが、
この時に高架線(鉄道/道路など)についてはデフォルトとして更新しないようにさせます。
道路('s')についても同様に機能します。

例としては (あくまで一つの使用スタイルとしてですが)、
't'で呼び出されるのはその時代に合った一般的な地上線路で建設を進め、
一部だけ高架線を使用して建設を行うということがあると思います。
この時、頻繁に使う地上線路は素早く't'で呼び出せてほしいので、
高架線建設を行うたびにデフォルトツールが変更されるのは迷惑です。

この機能はこのような状況での操作性を改善します。

----------
== PAUSE_AFTER_LOAD: ゲームロード時にポーズ状態で開始
----------
ゲームをロードした直後、ポーズ状態でゲームを開始します。
大規模開発されてしまい動作中だと重くて操作できないような
ゲームをロードする際などに便利です。

また開発中の機能などを試している状況で、ロード直後に発生するような
タイミング依存の症状がある場合に、これを再現する助けにもなります。
(これはあくまで、こちらの手元の事情ではありますが。)

現状はパッチによるビルド時の固定設定です。
起動時オプションやGUIによって切り替え可能にするかは検討中です。
要望がありましたら対応いたします。

----------
== SCREENSHOT_ONLY_TOPWIN: トップウィンドウだけのスクリーンショット
----------
Ctrlキーを押しながらスクリーンショット撮影ボタンを押すことで、
現在表示されているウィンドウ(Simutransの中のもの) のなかで
最全面にあるウィンドウだけのスクリーンショットを作成します。
作成されたスクリーンショットは screenshot/simwinNN.bmp という
ファイル名になります。(将来変更の可能性あり)

機能解説資料を作る時や、問題報告でウィンドウの画像だけをアップしたい場合に
画像を切り出す手間がなくなるので、少しだけ便利になると思います。
(結局 bmpからpngなどへの変更は必要でしょうが。)

注記:
  現在は、SDL で COLOUR_DEPTH が 16の時のコードだけ入っています。
  (Windows GDL などでは使えません。)
  またSDLでも (Windows だけにある) png 出力には対応していません。
  他のバックエンドにコードを対応してくれる方を募集します。

--------------------
= 過去の機能の分離
--------------------
TIPとして公開当初に入っていた機能の一部は、それぞれ独立したパッチとして分離しました。
  * 「簡易タイムテーブル機能」は TTT として分離しました。
  * Windows以外での日本語入力を可能にする機能は STSKK として分離しました。

またパッチ提供上の問題などから、以下の機能は一旦削除しました。

  * 「路線の複製」ボタン (路線編集ウィンドウ)
        ← TTTと同時にパッチを当てようとすると衝突します
        → 要望があればTTT側に導入します

  * 「停止点の変更」 (スケジュール作成中にCtrlを押しながら停止点をクリック)
        ← 停止点のハイライト表示を元に戻すことができないなどの理由により廃止
           (TTTの時間情報の引きつぎなどの問題もあります。)
        → 要望があれば機能を整え再度導入します


--------------------
= ご利用上の注意点とお願い
--------------------
このパッチは現在、αクオリティです。
作者自身、この機能を充分に使い込み、試しているわけではありません。
突然、あなたのマップのあちこちで居住権を訴える運動が発生しても
作者はデモ鎮圧も代替用地補償もできませんのでご了承ください :-)

バグのご報告や機能改善のご提案はウェルカムです。
ご連絡は日本語フォーラム
  Japanese Simutrans Forum
の該当トピックへお願いいたします。
(どうしても個人的にという場合は、wackdone@gmail.com へメールください)

このパッチの各機能はどれも軽いものなので、多くの人にとって便利なようであれば
本家に取り入れてもらえるようにしたいと考えています。
宜しければフォーラムや巨大掲示板などで、
  「この機能はすぐにでも本家に入って欲しい」
とお伝え頂けますでしょうか。声の大きかったものから優先して本家へ
働きかけたいと思います。

また逆に、一部の機能を切り出してご自身で本家へアプローチされても結構です。
(その方が私は助かります。特に私は英語がダメなものでorz)

なお、みなさんに是非この機能を使ってより深くSimutransを楽しんでいただけたらと
願っております。
この機能を使ったマップ紹介ページや動画などを公開して頂くのは大歓迎です。
