Skip to content

Commit

Permalink
Merge pull request #29 from hyoi/refactoring_0.12
Browse files Browse the repository at this point in the history
0.12.0のリリース(Refactoring)
  • Loading branch information
hyoi authored Mar 19, 2024
2 parents ac91fa3 + b7a6e2d commit 615c1e9
Show file tree
Hide file tree
Showing 67 changed files with 4,499 additions and 3,480 deletions.
19 changes: 3 additions & 16 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,16 +1,3 @@
[package]
name = "tigtag"
version = "0.11.0"
edition = "2021"

[dependencies]
#bevy = { git = "https://github.com/bevyengine/bevy" } #Master branch
bevy = "0.13"
once_cell = "1"
rand = "0.8"
regex = "1"

# WASMの場合にどれか指定する必要がある??
# rand = { version = "0.8.4", features = [ "wasm-bindgen" ] }
# getrandom = { version = "0.2.4", features = [ "js" ] }
# getrandom = { version = "0.2.4", features = [ "wasm-bindgen" ] }
[workspace]
resolver = "2"
members = [ "tigtag", "macros" ]
37 changes: 23 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,44 @@ Note: Japanese text only.
逃げ回ってドットをすべて拾ったらステージクリアなゲーム。(よくあるヤツ)
昔のベーマガみたいなピコゲーを作りたかったのです。
逆襲なし、追手は重なるとスピードアップするマゾ仕様。
たいへん耳障りなSEが実装されています。ボリューム上げるな要注意っ (≧ω≦;)
SEが実装されています。音量要注意っ (≧ω≦;)

## WASM版
[https://hyoi.github.io/tigtag/](https://hyoi.github.io/tigtag/)
[https://hyoi.github.io/tigtag/tigtag/](https://hyoi.github.io/tigtag/tigtag/)
※Rustのworkspaceで作業するとディレクトリの切り方にセンス問われるな‥‥

## 操作方法

### キーボード
- `` `` `` `` キーで上下左右に移動。
- `Esc`キーで一時停止(Pause)。
- `Alt``Enter`でフルスクリーンとウインドウモード切替(デスクトップアプリ)。
### キーボード⌨️
- `` `` `` `` キーで上下左右に移動
- `Esc`キーで一時停止(Pause)
- デスクトップアプリのみ`EXIT`メニューあり
`` ``で選択、`Space``Enter`で決定
- `Alt``Enter`でフルスクリーンとウインドウモード切替(デスクトップアプリのみ)
- `Hit ANY key!`が表示されてる時、一部のキーを除き何か押せば反応するハズ

### ゲームパッド🎮
- 十字ボタンで上下左右に移動。
- 十字ボタンで上下左右に移動。
- ps4 PADの`SHARE`で一時停止(Pause)
- デスクトップアプリのみ`EXIT`メニューあり
`` ``で選択、``で決定
- ps4 PADの`OPTIOS`でフルスクリーンとウインドウモード切替(デスクトップアプリのみ)
※所有してないので他のPADでボタンがどれにアサインされるか分からない‥‥

## コンパイル方法
- デスクトップアプリにするなら`cargo run -r`でOK。
`cargo run`だとデバッグモード。
`cargo run`だとデバッグモード。いろいろ余計に表示されます
```
cargo run -r
```
- WASMの場合は`--target`を指定してコンパイル後、`wasm-bindgen`で環境を整えます。
`wasm-bindgen`コマンドの各ディレクトリーは作業環境に合わせてください
コマンドライン引数に書くディレクトリーは作業環境に合わせてください
```
cargo build -r --target wasm32-unknown-unknown
wasm-bindgen --out-dir ./wasm --target web --no-typescript ./target/wasm32-unknown-unknown/release/tigtag.wasm
wasm-bindgen --out-dir .\tigtag\wasm --target web --no-typescript .\target\wasm32-unknown-unknown\release\tigtag.wasm
```
- WASMのコンパイルには事前にRustのtarget追加とwasm-bindgenのインストールが必要です
- wasm-bindgenを実行すると警告が出ることがあります。その時はバージョン上げましょう
- wasm-bindgenを実行するとバージョン違いの警告が出ることがあります。その時はバージョン上げましょう
- [Unofficial Bevy Cheat Book - 13.5. Browser (WebAssembly)](https://bevy-cheatbook.github.io/platforms/wasm.html)をご参考に
```
rustup target install wasm32-unknown-unknown
Expand All @@ -49,9 +58,9 @@ cargo install -f wasm-bindgen-cli
- [Orbitron](https://fonts.google.com/specimen/Orbitron)
- [Reggae One](https://fonts.google.com/specimen/Reggae+One)
- [ドット絵ダウンロードサイト DOTOWN](https://dotown.maeda-design-room.net/)
- Rustだから蟹 <img src="./assets/images/sprite/kani_DOTOWN.png" width="22" height="16" style="vertical-align: bottom;">
- Rustだから蟹 <img src="./tigtag/assets/image/sprite/kani_DOTOWN.png" width="22" height="16" style="vertical-align: bottom;">

## 宿題
- [ ] スマホでプレーできるようにしたい。
- [ ] スマホブラウザでちゃんと表示されるようにしたい
- [ ] タッチ操作できたらブラウザ&WASMでスマホ上で遊べるかも
- [ ] スマホのブラウザでちゃんと表示されるようにしたい
- [ ] タッチ操作できたらWASMでスマホ上で遊べるかも
Binary file removed assets/images/sprite/debug_grid.png
Binary file not shown.
14 changes: 14 additions & 0 deletions macros/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "macros"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lib]
proc-macro = true

[dependencies]
#syn = { version = "2.0", features = [ "extra-traits" ] }
syn = "2.0"
quote = "1.0"
57 changes: 57 additions & 0 deletions macros/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
//import external modules
use proc_macro::TokenStream;
use syn::*;
use quote::*;

//#[derive( MyState )]を作る
#[proc_macro_derive( MyState )]
pub fn derive( input: TokenStream ) -> TokenStream
{ //入力を分解する
let ast = parse_macro_input!( input as DeriveInput );
let enum_type = ast.ident;

//バリアントの名前を保存する
let mut variant = Vec::new();
match ast.data
{ Data::Enum( my_enum ) =>
{ for my_variant in my_enum.variants.into_iter()
{ { variant.push( my_variant.ident );
}
}
}
_ => panic!( "Only Enum can be applied." )
}

//文字列を作成して出力する
let expand = quote!
{ //MyStateの遷移に使うTrait境界
pub trait ChangeMyState { fn state( &self ) -> #enum_type; }

//バリアントと同名のstructからバリアントを取得できるように仕込む
#( #[derive( Default )] pub struct #variant;
impl ChangeMyState for #variant
{ fn state( &self ) -> #enum_type { #enum_type::#variant }
}
)*

//型(struct)によって指定されたMyStateへ遷移する
pub fn change_state_to<T: Send + Sync + Default + ChangeMyState>
( next: Local<T>,
mut next_state: ResMut<NextState< #enum_type >>
)
{ next_state.set( next.state() );
}

//ResourceにセットされたMyStateへ遷移する
pub fn change_state_by<T: Resource + ChangeMyState>
( opt_state: Option<Res<T>>,
mut next_state: ResMut<NextState< #enum_type >>
)
{ let Some ( next ) = opt_state else { warn!( "opt_state is None." ); return };
next_state.set( next.state() );
}
};
expand.into()
}

//End of code.
149 changes: 0 additions & 149 deletions src/init_app.rs

This file was deleted.

Loading

0 comments on commit 615c1e9

Please sign in to comment.