昨晩、ふと思い立ち、「Army & Maiden」のアプレット版の開発を開始しました。
以前から、懸案になっていたので。
「Army & Maiden」は、内部的にはCroCroWrpという、環境依存を吸収するライブラリの上で動いています。
このCroCroWrpには、PC版を動かすCroCroWrpPc、Android版を動かすCroCroWrpAndがこれまで存在していました(それぞれ、CroCroWrpの各クラスを継承している)。
ここにCroCroWrpApltを追加して、Webブラウザ上でも動くようにしました。
とりあえず一晩で完成したので、よかったです。落ち着いたら、公開準備をしないといけません。
さて、割と簡単に実装できたのですが、実は一ヶ所面倒臭いところがあって、これまで手を付けていませんでした。
それは、ネット上のZipファイルをDLしてきて、メモリ内で解凍して中味を取り出す処理です。
JavaのZip系クラスは、ファイルを直接読むものと、ストリームから読むものの2系統があります。
ファイルを直接読むものは、アプレットでは使えません。ローカルアプリではないので。
また、ストリームから読むものは、Zip内のファイルを読むたびに、ヘッダー部を解析してファイルを探しに行くので、大量のファイルをその都度読む用途には使えません。
そのため、これまでのPC版とAndroid版と同じデータ(Zipで固めたもの)をそのまま利用しようとすれば、自前でZipを読むクラスを開発しなければなりません。
というわけで、開発しました。Zipファイルをメモリ上に保持して、必要に応じて中味を解凍して取り出すクラスを。
とは言っても、完全にゼロから作ったわけではありません。Android版で使っていたクラスを流用しただけです。
実は以前に、Android版用に、Androidのリソースに保存したZipファイルから、必要なファイルだけを解凍して抜き出すクラスを作っていました。
というわけで、そのクラスを改造して、メモリ上のZipを解凍して取り出すクラスを作成して、アプレット版の「Army & Mainden」が無事に完成しました。
まあ、アプレットなので、ファイルの保存はできないのですが、デモを公開する程度なら問題ないと思います。
ファイル保存が必要になれば、サーバーと通信して、データを保存する命令を追加すればいいですし。
というわけで、前々から予定はあったけど手を付けていなかった部分を、一晩で突貫で実装しました。