webmechwarrior's People
webmechwarrior's Issues
DnD Component
NOTE: This will be pretty vague since i have no idea how to best align dnd with redux-form fields
Create a component that is a redux-form
Field
which only reacts on drag start and dropped events.
This will be used as a component that receives dragged equipment from the mechlab's equipment table (which is also to be made) and then renders it in its full glory.
The thing that i have no idea with is, should this component be a single component containing multiple critical slots or should every critical slot be a single component or something in between since we want to have proper allocation of critical slots i.e.
- Drag AC/20 which takes 10 criticals
- Only body parts with enough critical space should light up where it is possible to drop the AC/20
- Only DnD's on those parts should be able to revceive the drop from AC/20
- This might be a bit too complex for just a single field and might require that all body parts take care of it themselves
Hexgrid based map
Implement a basic hexgrid map
- HTML Hexgrid (@vcerjan hello css :) )
- Hexgrid Cells should be able to have properties (coords, modifiers, meta data...)
- Layers and Units
- Turn-based movement
Save Mech does not redirect to edit
After saving a mech, designer should redirect to /MechDesigner/:id
to avoid making mass duplicates on saves
Left/Right sides are swapped
Sides should be listed as if the mech is staring at the user
Add a max armor button to Armor card
Add a button which maximizes the armor points to the Armor card.
- It should maximize the armor (disregarding the current tonnage) of all mech parts
- For parts with front and rear armor, armor should be in 3 to 1 ratio front to rear
Split Weapons, Equipment and Ammo
It makes no sense to have all equipment in a single table (for the boardgame its ok since it is easy for us to interpret special rules and symbols inside range or damage columns, but not for code, it also makes no sense since only thing they share is the critical slots inside mech locations)
- Extract Ammo
- Extract Equipment
- Extract Weapons
Basic Lobby with Chat
This is a first step towards multiplayer brawls and turn-based combat.
- Implement Lobby and Chat system using websockets
Nav Component
We need a component that wraps the react-router-dom
's <Link to='/some/path' />
component and styles it according to general webmechwarrior look'n feel.
Since this is a game, not a website per-se, our wrapper component should look like a button more than a link but should retain some of the common link aesthetics.
- Create a component that wraps
react-router-dom
's<Link to='/some/path' />
- Style it so it feels natural with current design scheme (it is meh, but we need something as a starting point)
- It should look like a button
- It should retain the underlined text aesthetic inside the button
Add mech design persistance
In order to save mechs a backend must be created (it doesn't but i would like it that way so we can contribute from multiple instances)
- Implement a backend service which stores mech designs
- To make it easier from start, use mongo (will migrate to postgres further down the development because postgres is awesome and can do everything document-object stores can do, but better and typesafe)
- Use typescript with express and mongoose to create the service
Add Traits
Implement the Trait system (a little bit different than the Quirks system)
- Implement general Trait support for 'Mechs
- Traits (+-x heat dissipation, +-x magazine/ammo rack size, +-x armour/structure...)
- Implement the Trait editor
Mech chassis and variants separation
So far you can only create mechs, to make Omni tech work as expected, mech and variant creation should be separated
- Mech Designer does not have the ability to insert equipment into mechs unless it's an Omni mech
- Mech Lab is used to create variants
Light engine criticals
Light engine should take two critical slots in each side-torso, and six in center torso.
Missing rules
List of missing rules:
- Omni mechs
- All mechs get 10 heatsinks for free which don't count towards total tonnage
- Heavy Gauss Ammo weighs 2 tons and takes 2 critical slots
- Half-magazine/rack Ammo items (MG Ammo)
- Artemis IV FCS Launchers and Ammo
- Missile Guidance switch (Artemis IV FCS or Standard)
- IS CASE is a piece of equipment, Clan CASE is a flag on a mech component
- MASC is missing
- TSM is missing
- Targeting Computers are missing
Checkbox Component
Write a redux-form
's <Field />
compliant <Checkbox />
component.
- It should not use input underneath since portable styling issues are still a thing in 2018
- It should be styled to fit in the current webmechwarrior look'n feel
- It should act as a checkbox with an optional label, be focusable both with keyboard(tab) and mouse and whole checkbox (label included) should toggle the checkbox state
Find a better way of guarding against invalid combinations of mech props
What this needs to solve:
- Lets say one selects a
Inner Sphere
tech as a tech base for their mech - Select
Compact Gyro
- Then change the tech to
Clan
(clanners are cool, but they do not have compact gyros available) - The change should not leave the mech in an invalid state, it should try to preserve the most of compatible tech and properties but reset all invalid to defaults
- This gets more complicated as soon as you include tech (weapons and equipment, special construction rules for
Omni
mechs, etc...) since now the handler will have to be extra smart - Or just mark everything that fails the check as invalid with validators per field (similar like tonnage works, but use
redux-form
compliant validators for those fields)
Add hardpoint section to components
It should be possible to choose the number of mountable hardpoints for every component
- It should use multiple
<Range />
components - It should modify the correct part of the mech loadout state
- It should show icons or images that can relate to hardpoint types (energy, ballistic, missile)
Rear armor points allocation
Increasing rear armor should automatically decrese front armor points when needed. We shouldn't need to decrease front armor to be able to put points into rear armor.
Render critical slots on mech components
It should be possible to see all the free critical slots (depending on the mech setup) and slots taken by engine, gyro, cockpit, sensors, life support and actuators.
- It should render criticals lots
- It should show taken criticals and what they were taken by
- It should show free criticals
Take note to lay out groundwork for DnD inputs to actually fit the equipment into the chassis
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.