chore: finish icons builder
- finish icons builder in scripts.
This commit is contained in:
@ -1,3 +1,77 @@
|
||||
import enum
|
||||
from typing import Optional, Self
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, RootModel, Field, model_validator, ValidationError
|
||||
|
||||
|
||||
class ShowcaseType(enum.StrEnum):
|
||||
Nothing = 'none'
|
||||
Floor = 'floor'
|
||||
Rail = 'Rail'
|
||||
Wood = 'wood'
|
||||
|
||||
|
||||
class ShowcaseCfgType(enum.StrEnum):
|
||||
Float = 'float'
|
||||
Int = 'int'
|
||||
Bool = 'bool'
|
||||
Face = 'face'
|
||||
|
||||
|
||||
class ShowcaseCfg(BaseModel):
|
||||
field: str = Field(frozen=True, strict=True)
|
||||
type: ShowcaseCfgType = Field(frozen=True)
|
||||
title: str = Field(frozen=True, strict=True)
|
||||
desc: str = Field(frozen=True, strict=True)
|
||||
default: str = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Showcase(BaseModel):
|
||||
title: str = Field(frozen=True, strict=True)
|
||||
icon: str = Field(frozen=True, strict=True)
|
||||
type: ShowcaseType = Field(frozen=True)
|
||||
cfgs: list[ShowcaseCfg] = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Param(BaseModel):
|
||||
field: str = Field(frozen=True, strict=True)
|
||||
data: str = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Var(BaseModel):
|
||||
field: str = Field(frozen=True, strict=True)
|
||||
data: str = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Vertex(BaseModel):
|
||||
skip: str = Field(frozen=True, strict=True)
|
||||
data: str = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Face(BaseModel):
|
||||
skip: str = Field(frozen=True, strict=True)
|
||||
texture: str = Field(frozen=True, strict=True)
|
||||
indices: list[int] = Field(frozen=True, strict=True)
|
||||
uvs: list[str] = Field(frozen=True, strict=True)
|
||||
normals: Optional[list[str]] = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Instance(BaseModel):
|
||||
identifier: str = Field(frozen=True, strict=True)
|
||||
skip: str = Field(frozen=True, strict=True)
|
||||
params: dict[str, str] = Field(frozen=True, strict=True)
|
||||
transform: str = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Prototype(BaseModel):
|
||||
identifier: str = Field(frozen=True, strict=True)
|
||||
showcase: Optional[Showcase] = Field(frozen=True, strict=True)
|
||||
params: list[Param] = Field(frozen=True, strict=True)
|
||||
skip: str = Field(frozen=True, strict=True)
|
||||
vars: list[Var] = Field(frozen=True, strict=True)
|
||||
vertices: list[Vertex] = Field(frozen=True, strict=True)
|
||||
faces: list[Face] = Field(frozen=True, strict=True)
|
||||
instances: list[Instance] = Field(frozen=True, strict=True)
|
||||
|
||||
|
||||
class Prototypes(RootModel):
|
||||
root: list[Prototype] = Field(frozen=True, strict=True)
|
||||
|
Reference in New Issue
Block a user