diff options
author | notoraptor <stevenbocco@gmail.com> | 2019-08-01 15:53:23 -0400 |
---|---|---|
committer | Philip Paquette <pcpaquette@gmail.com> | 2019-08-01 16:32:55 -0400 |
commit | 891fb62a77b9a86f2bc71cc02a82089412982b2f (patch) | |
tree | 7152ec4ef8186741695a921d6cc7bac78102b0dd /diplomacy/web/src/gui/maps/standard/common.js | |
parent | 904ea5bcfab0ffe2b87d00fd0b938a8907c44842 (diff) |
Refactored SVG map into a React component
- Create link to diplomacy map folder into web/src/diplomacy/maps
- Remove old web/src/gui/map folder.
- [web] Handle click only on current map.
- [web/game] Remove useless `wait` state.
- Remove unused nodejs modules.
- [web] Use queue to handle game notifications in sequential order.
- Make all calls to setState() asynchronous in Page and ContentGame components.
- Make sure notifications are handled in the order in which they come.
Diffstat (limited to 'diplomacy/web/src/gui/maps/standard/common.js')
-rw-r--r-- | diplomacy/web/src/gui/maps/standard/common.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/diplomacy/web/src/gui/maps/standard/common.js b/diplomacy/web/src/gui/maps/standard/common.js new file mode 100644 index 0000000..cb768c2 --- /dev/null +++ b/diplomacy/web/src/gui/maps/standard/common.js @@ -0,0 +1,75 @@ +// ============================================================================== +// Copyright (C) 2019 - Philip Paquette, Steven Bocco +// +// This program is free software: you can redistribute it and/or modify it under +// the terms of the GNU Affero General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) any +// later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +// details. +// +// You should have received a copy of the GNU Affero General Public License along +// with this program. If not, see <https://www.gnu.org/licenses/>. +// ============================================================================== +import {SvgStandardExtra} from "./SvgStandardExtra"; + +const TAG_ORDERDRAWING = 'jdipNS:ORDERDRAWING'; +const TAG_POWERCOLORS = 'jdipNS:POWERCOLORS'; +const TAG_POWERCOLOR = 'jdipNS:POWERCOLOR'; +const TAG_SYMBOLSIZE = 'jdipNS:SYMBOLSIZE'; +const TAG_PROVINCE_DATA = 'jdipNS:PROVINCE_DATA'; +const TAG_PROVINCE = 'jdipNS:PROVINCE'; +const TAG_UNIT = 'jdipNS:UNIT'; +const TAG_DISLODGED_UNIT = 'jdipNS:DISLODGED_UNIT'; +const TAG_SUPPLY_CENTER = 'jdipNS:SUPPLY_CENTER'; + +export const ARMY = 'Army'; +export const FLEET = 'Fleet'; + +function getCoordinates() { + const coordinates = {}; + for (let provinceDefiniton of SvgStandardExtra[TAG_PROVINCE_DATA][TAG_PROVINCE]) { + const name = provinceDefiniton.name.toUpperCase().replace('-', '/'); + coordinates[name] = {}; + if (provinceDefiniton.hasOwnProperty(TAG_UNIT)) { + coordinates[name].unit = [provinceDefiniton[TAG_UNIT]['x'], provinceDefiniton[TAG_UNIT]['y']]; + } + if (provinceDefiniton.hasOwnProperty(TAG_DISLODGED_UNIT)) { + coordinates[name].disl = [provinceDefiniton[TAG_DISLODGED_UNIT]['x'], provinceDefiniton[TAG_DISLODGED_UNIT]['y']]; + } + if (provinceDefiniton.hasOwnProperty(TAG_SUPPLY_CENTER)) { + coordinates[name].sc = [provinceDefiniton[TAG_SUPPLY_CENTER]['x'], provinceDefiniton[TAG_SUPPLY_CENTER]['y']]; + } + } + return coordinates; +} + +function getSymbolSizes() { + const sizes = {}; + for (let definition of SvgStandardExtra[TAG_ORDERDRAWING][TAG_SYMBOLSIZE]) { + sizes[definition.name] = { + width: parseInt(definition.width), + height: parseInt(definition.height) + }; + } + return sizes; +} + +function getColors() { + const colors = {}; + for (let definition of SvgStandardExtra[TAG_ORDERDRAWING][TAG_POWERCOLORS][TAG_POWERCOLOR]) { + colors[definition.power.toUpperCase()] = definition.color; + } + return colors; +} + +export const Coordinates = getCoordinates(); +export const SymbolSizes = getSymbolSizes(); +export const Colors = getColors(); + +export function offset(floatString, offset) { + return "" + (parseFloat(floatString) + offset); +} |