Giter VIP home page Giter VIP logo

webmechwarrior's People

Contributors

dcerjan avatar vcerjan avatar

Watchers

 avatar  avatar  avatar

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

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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.