generate empire names
This commit is contained in:
parent
7bb16a1cca
commit
7cb4028af8
7 changed files with 150 additions and 26 deletions
109
Cargo.lock
generated
109
Cargo.lock
generated
|
@ -185,6 +185,17 @@ dependencies = [
|
|||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "atty"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||
dependencies = [
|
||||
"hermit-abi 0.1.19",
|
||||
"libc",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
|
@ -251,7 +262,8 @@ dependencies = [
|
|||
"anyhow",
|
||||
"axum",
|
||||
"chrono",
|
||||
"clap",
|
||||
"clap 4.4.11",
|
||||
"names",
|
||||
"petgraph 0.6.4",
|
||||
"prisma-client-rust",
|
||||
"serde",
|
||||
|
@ -569,6 +581,23 @@ dependencies = [
|
|||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "3.2.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"bitflags 1.3.2",
|
||||
"clap_derive 3.2.25",
|
||||
"clap_lex 0.2.4",
|
||||
"indexmap 1.9.3",
|
||||
"once_cell",
|
||||
"strsim",
|
||||
"termcolor",
|
||||
"textwrap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.4.11"
|
||||
|
@ -576,7 +605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
"clap_derive 4.4.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -587,10 +616,23 @@ checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
|
|||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
"clap_lex",
|
||||
"clap_lex 0.6.0",
|
||||
"strsim",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "3.2.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008"
|
||||
dependencies = [
|
||||
"heck 0.4.1",
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "4.4.7"
|
||||
|
@ -603,6 +645,15 @@ dependencies = [
|
|||
"syn 2.0.43",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_lex"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
|
||||
dependencies = [
|
||||
"os_str_bytes",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_lex"
|
||||
version = "0.6.0"
|
||||
|
@ -1591,6 +1642,15 @@ version = "0.4.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.3.3"
|
||||
|
@ -2599,6 +2659,16 @@ dependencies = [
|
|||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "names"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc"
|
||||
dependencies = [
|
||||
"clap 3.2.25",
|
||||
"rand 0.8.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.11"
|
||||
|
@ -2728,7 +2798,7 @@ version = "1.16.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"hermit-abi 0.3.3",
|
||||
"libc",
|
||||
]
|
||||
|
||||
|
@ -2856,6 +2926,12 @@ version = "0.3.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063"
|
||||
|
||||
[[package]]
|
||||
name = "os_str_bytes"
|
||||
version = "6.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
|
||||
|
||||
[[package]]
|
||||
name = "overload"
|
||||
version = "0.1.1"
|
||||
|
@ -3290,6 +3366,7 @@ dependencies = [
|
|||
"proc-macro-error-attr",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
|
@ -4538,6 +4615,21 @@ dependencies = [
|
|||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
|
||||
dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "textwrap"
|
||||
version = "0.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.52"
|
||||
|
@ -5290,6 +5382,15 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-util"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
|
|
|
@ -15,3 +15,4 @@ serde = { version = "1.0.193", features = ["derive"] }
|
|||
tokio = { version = "1.35.1", features = ["full"] }
|
||||
serde_json = "1.0.108"
|
||||
petgraph = "0.6.4"
|
||||
names = "0.14.0"
|
||||
|
|
|
@ -2,12 +2,16 @@ use std::{collections::HashMap, f64::consts::PI};
|
|||
|
||||
use anyhow::Result;
|
||||
use chrono::Utc;
|
||||
use names::Generator as NameGenerator;
|
||||
use petgraph::{graph::UnGraph, graphmap::UnGraphMap};
|
||||
use triangle::{triangulate, Point, TrianglulateOpts};
|
||||
|
||||
use crate::{
|
||||
prisma::PrismaClient,
|
||||
state::{GameCoreState, StarSystemCoreState, StarSystemId, UniverseId},
|
||||
state::{
|
||||
EmpireCoreState, EmpireId, GameCoreState, StarSystemCoreState,
|
||||
StarSystemId, UniverseId,
|
||||
},
|
||||
};
|
||||
|
||||
pub async fn generate_initial_game_state(
|
||||
|
@ -37,7 +41,14 @@ pub async fn generate_initial_game_state(
|
|||
// Generate a new universe ID
|
||||
let universe = client.universe().create(json!({}), vec![]).exec().await?;
|
||||
|
||||
let empires = HashMap::new();
|
||||
// Generate some empires
|
||||
let mut empires = HashMap::new();
|
||||
let name_generator = NameGenerator::default();
|
||||
for (idx, name) in name_generator.take(10).enumerate() {
|
||||
let id = EmpireId(idx as i32);
|
||||
let empire = EmpireCoreState { id, name };
|
||||
empires.insert(id, empire);
|
||||
}
|
||||
|
||||
// Format the star systems
|
||||
let mut star_systems = HashMap::new();
|
||||
|
@ -50,6 +61,7 @@ pub async fn generate_initial_game_state(
|
|||
star_systems.insert(id, star_system);
|
||||
}
|
||||
|
||||
// Format the hyperlanes into petgraph
|
||||
let mut hyperlanes = UnGraphMap::default();
|
||||
for indexes in result.triangle_list.into_iter() {
|
||||
hyperlanes.add_edge(indexes[0], indexes[1], ());
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
pub struct EmpireId(u32);
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct EmpireId(pub i32);
|
||||
|
||||
pub struct EmpireCoreState {}
|
||||
pub struct EmpireCoreState {
|
||||
pub id: EmpireId,
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
pub struct EmpireDerivedState {}
|
||||
|
|
|
@ -4,7 +4,7 @@ use anyhow::Result;
|
|||
use chrono::{DateTime, Utc};
|
||||
use petgraph::{graph::UnGraph, graphmap::UnGraphMap};
|
||||
|
||||
use crate::prisma::{star_system, star_system_edges, PrismaClient};
|
||||
use crate::prisma::{empire, star_system, star_system_edges, PrismaClient};
|
||||
|
||||
use super::{EmpireCoreState, EmpireId, StarSystemCoreState, StarSystemId};
|
||||
|
||||
|
@ -25,7 +25,6 @@ pub struct GameDerivedState<'a> {
|
|||
|
||||
impl GameCoreState {
|
||||
pub async fn save_to_database(&self, client: &PrismaClient) -> Result<()> {
|
||||
println!("Self {:?} {:?}", self.universe_id, self.star_systems);
|
||||
// Save star systems to database
|
||||
client
|
||||
.star_system()
|
||||
|
@ -49,19 +48,6 @@ impl GameCoreState {
|
|||
.await?;
|
||||
|
||||
// Insert edges into database
|
||||
macro_rules! create_edge {
|
||||
($from:expr, $to:expr) => {{
|
||||
println!("WTF? {}, {}", $from, $to);
|
||||
star_system_edges::create_unchecked(
|
||||
universe.id.clone(),
|
||||
star_system_map.get(&$from).unwrap().to_owned(),
|
||||
$from as i32,
|
||||
star_system_map.get(&$to).unwrap().to_owned(),
|
||||
$to as i32,
|
||||
vec![],
|
||||
)
|
||||
}};
|
||||
}
|
||||
client
|
||||
.star_system_edges()
|
||||
.create_many(
|
||||
|
@ -82,6 +68,26 @@ impl GameCoreState {
|
|||
.exec()
|
||||
.await?;
|
||||
|
||||
// Save empires to database
|
||||
client
|
||||
.empire()
|
||||
.create_many(
|
||||
self
|
||||
.empires
|
||||
.values()
|
||||
.map(|empire| {
|
||||
empire::create_unchecked(
|
||||
self.universe_id.0,
|
||||
empire.name.clone(),
|
||||
vec![empire::id::set(empire.id.0)],
|
||||
)
|
||||
})
|
||||
.collect(),
|
||||
)
|
||||
.skip_duplicates()
|
||||
.exec()
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ export default function MapView({}) {
|
|||
const x = point.coordX / 80;
|
||||
const y = point.coordY / 80;
|
||||
return (
|
||||
<StarSystem key={point.id} system={point} position={[x, 0, y]} />
|
||||
<StarSystem key={point.index} system={point} position={[x, 0, y]} />
|
||||
);
|
||||
})}
|
||||
|
||||
|
|
|
@ -42,13 +42,13 @@ model Player {
|
|||
}
|
||||
|
||||
model Empire {
|
||||
id String @id @default(uuid())
|
||||
id Int @id @default(autoincrement())
|
||||
|
||||
universeId Int
|
||||
universe Universe @relation(fields: [universeId], references: [id])
|
||||
|
||||
name String
|
||||
color String
|
||||
color String?
|
||||
|
||||
playerId String? @unique
|
||||
player Player? @relation(fields: [playerId], references: [id])
|
||||
|
|
Loading…
Reference in a new issue