wip
This commit is contained in:
commit
f617cc8e1c
16 changed files with 5842 additions and 0 deletions
2
.cargo/config.toml
Normal file
2
.cargo/config.toml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[build]
|
||||||
|
rustflags = ["--cfg=web_sys_unstable_apis"]
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/target
|
||||||
|
/dist
|
1
.tokeignore
Normal file
1
.tokeignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
dist
|
5602
Cargo.lock
generated
Normal file
5602
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
19
Cargo.toml
Normal file
19
Cargo.toml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[package]
|
||||||
|
name = "tift"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
members = ["common", "server"]
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
lto = true
|
||||||
|
codegen-units = 1
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bevy = "0.14.2"
|
||||||
|
bevy_egui = "0.30.1"
|
||||||
|
bevy_math = "0.14.2"
|
||||||
|
|
||||||
|
common = { path = "common" }
|
||||||
|
lightyear = "0.17.1"
|
7
common/Cargo.toml
Normal file
7
common/Cargo.toml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[package]
|
||||||
|
name = "common"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bevy = "0.14.2"
|
92
common/src/lib.rs
Normal file
92
common/src/lib.rs
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
pub mod proto;
|
||||||
|
pub mod state;
|
||||||
|
|
||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct ChampionItems(Vec<ItemSlot>);
|
||||||
|
|
||||||
|
pub trait ChampionDefinition: Component + Send + Sync {
|
||||||
|
type Skill: SkillDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait SkillDefinition {}
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub enum ItemSlot {
|
||||||
|
None,
|
||||||
|
ItemComponent,
|
||||||
|
CompletedItem,
|
||||||
|
Gloves,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum ItemComponent {
|
||||||
|
Sword,
|
||||||
|
Vest,
|
||||||
|
Belt,
|
||||||
|
Rod,
|
||||||
|
Cloak,
|
||||||
|
Bow,
|
||||||
|
Fist,
|
||||||
|
Tear,
|
||||||
|
Spat,
|
||||||
|
Pan,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum CompletedItem {
|
||||||
|
BastionEmblem,
|
||||||
|
EldritchEmblem,
|
||||||
|
FaerieEmblem,
|
||||||
|
FrostEmblem,
|
||||||
|
HoneymancyEmblem,
|
||||||
|
HunterEmblem,
|
||||||
|
MageEmblem,
|
||||||
|
MultistrikerEmblem,
|
||||||
|
PortalEmblem,
|
||||||
|
PreserverEmblem,
|
||||||
|
PyroEmblem,
|
||||||
|
ScholarEmblem,
|
||||||
|
ShapeshifterEmblem,
|
||||||
|
SugarcraftEmblem,
|
||||||
|
WarriorEmblem,
|
||||||
|
WitchcraftEmblem,
|
||||||
|
|
||||||
|
AdaptiveHelm,
|
||||||
|
ArchangelsStaff,
|
||||||
|
Bloodthirster,
|
||||||
|
BlueBuff,
|
||||||
|
BrambleVest,
|
||||||
|
Crownguard,
|
||||||
|
Deathblade,
|
||||||
|
DragonsClaw,
|
||||||
|
EdgeOfNight,
|
||||||
|
Evenshroud,
|
||||||
|
GargoyleStoneplate,
|
||||||
|
GiantSlayer,
|
||||||
|
Guardbreaker,
|
||||||
|
GuinsoosRageblade,
|
||||||
|
HandOfJustice,
|
||||||
|
HextechGunblade,
|
||||||
|
InfinityEdge,
|
||||||
|
IonicSpark,
|
||||||
|
JeweledGauntlet,
|
||||||
|
LastWhisper,
|
||||||
|
Morellonomicon,
|
||||||
|
NashorsTooth,
|
||||||
|
ProtectorsVow,
|
||||||
|
Quicksilver,
|
||||||
|
RabadonsDeathcap,
|
||||||
|
RedBuff,
|
||||||
|
Redemption,
|
||||||
|
RunaansHurricane,
|
||||||
|
SpearOfShojin,
|
||||||
|
StatikkShiv,
|
||||||
|
SteadfastHeart,
|
||||||
|
SteraksGage,
|
||||||
|
SunfireCape,
|
||||||
|
TacticiansCape,
|
||||||
|
TacticiansCrown,
|
||||||
|
TacticiansShield,
|
||||||
|
TitansResolve,
|
||||||
|
WarmogsArmor,
|
||||||
|
}
|
7
common/src/proto.rs
Normal file
7
common/src/proto.rs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
use bevy::app::{App, Plugin};
|
||||||
|
|
||||||
|
pub struct ProtocolPlugin {}
|
||||||
|
|
||||||
|
impl Plugin for ProtocolPlugin {
|
||||||
|
fn build(&self, app: &mut App) {}
|
||||||
|
}
|
21
common/src/state.rs
Normal file
21
common/src/state.rs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
#[derive(Resource)]
|
||||||
|
pub struct GameState {
|
||||||
|
current_state: GameCurrentState,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for GameState {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
current_state: GameCurrentState::PortalSelection,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum GameCurrentState {
|
||||||
|
PortalSelection,
|
||||||
|
BoardSetup,
|
||||||
|
PveCombat,
|
||||||
|
PvpCombat,
|
||||||
|
}
|
15
index.html
Normal file
15
index.html
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Tift</title>
|
||||||
|
<!-- <link data-trunk rel="copy-dir" href="assets" /> -->
|
||||||
|
<!-- <link data-trunk rel="copy-dir" href="credits" /> -->
|
||||||
|
<!-- <link data-trunk rel="copy-file" href="build/windows/icon.ico" /> -->
|
||||||
|
<!-- <link rel="icon" href="icon.ico" /> -->
|
||||||
|
<!-- <link data-trunk rel="inline" href="build/web/styles.css" /> -->
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- <link data-trunk rel="inline" href="build/web/sound.js" /> -->
|
||||||
|
</body>
|
||||||
|
</html>
|
1
rustfmt.toml
Normal file
1
rustfmt.toml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
tab_spaces = 2
|
6
server/Cargo.toml
Normal file
6
server/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "server"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
3
server/src/main.rs
Normal file
3
server/src/main.rs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
6
src/board.rs
Normal file
6
src/board.rs
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
#[derive(Bundle)]
|
||||||
|
pub struct BoardBundle {}
|
||||||
|
|
||||||
|
pub fn setup_board() {}
|
19
src/champion.rs
Normal file
19
src/champion.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
use bevy::prelude::*;
|
||||||
|
use common::{ChampionDefinition, ChampionItems, ItemSlot};
|
||||||
|
|
||||||
|
#[derive(Bundle)]
|
||||||
|
pub struct ChampionInstance<Def: ChampionDefinition> {
|
||||||
|
def: Def,
|
||||||
|
hp: Hp,
|
||||||
|
|
||||||
|
items: ChampionItems,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct Hp {
|
||||||
|
current: u64,
|
||||||
|
max: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct Mana {}
|
39
src/main.rs
Normal file
39
src/main.rs
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||||
|
|
||||||
|
mod board;
|
||||||
|
mod champion;
|
||||||
|
|
||||||
|
use bevy::{
|
||||||
|
prelude::*,
|
||||||
|
sprite::{MaterialMesh2dBundle, Mesh2dHandle},
|
||||||
|
};
|
||||||
|
use bevy_egui::EguiPlugin;
|
||||||
|
use common::state::GameState;
|
||||||
|
|
||||||
|
use crate::board::setup_board;
|
||||||
|
|
||||||
|
#[bevy_main]
|
||||||
|
fn main() {
|
||||||
|
App::new()
|
||||||
|
.add_plugins(DefaultPlugins)
|
||||||
|
.add_plugins(EguiPlugin)
|
||||||
|
.insert_resource(GameState::default())
|
||||||
|
.add_systems(Startup, (setup, setup_board))
|
||||||
|
.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn setup(
|
||||||
|
mut commands: Commands,
|
||||||
|
mut meshes: ResMut<Assets<Mesh>>,
|
||||||
|
mut materials: ResMut<Assets<ColorMaterial>>,
|
||||||
|
) {
|
||||||
|
commands.spawn(Camera2dBundle::default());
|
||||||
|
|
||||||
|
let hex = Mesh2dHandle(meshes.add(RegularPolygon::new(50.0, 6)));
|
||||||
|
let material = materials.add(Color::linear_rgb(1.0, 1.0, 1.0));
|
||||||
|
commands.spawn(MaterialMesh2dBundle {
|
||||||
|
mesh: hex,
|
||||||
|
material,
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in a new issue