Compare commits

..

13 Commits

Author SHA1 Message Date
Manuel Vögele 942bfa04e8 Release v1.4.4 2021-03-25 01:57:41 +01:00
Manuel Vögele b4ac65e478 Fix snapping for tokens that are smaller than 1x1 (fixes #48) 2021-03-25 01:55:48 +01:00
Manuel Vögele 0de01379e9 Release v1.4.3 2021-03-24 12:35:40 +01:00
Manuel Vögele f6eb5eff9c Add german translation 2021-03-24 12:35:05 +01:00
Manuel Vögele fee0983841 Mention 3de044e in changelog 2021-03-24 12:08:10 +01:00
Brother Sharp 3de044ea45 Update japanese translation (#47) 2021-03-24 12:05:10 +01:00
Manuel Vögele e473fea121 Add defaults for swade game system to generic speed provider 2021-03-18 19:06:35 +01:00
Manuel Vögele 0aee541eb3 Release v1.4.2 2021-03-18 07:45:18 +01:00
Manuel Vögele 40dde08ddd Allow getTokenShape on gridless maps (fixes #44) 2021-03-18 07:41:30 +01:00
Manuel Vögele 8234aa566d Release v1.4.1 2021-03-17 09:26:46 +01:00
Manuel Vögele 2862643ba8 Add missing check for whether hex-size-support module is present (fixes #43) 2021-03-17 09:25:30 +01:00
Manuel Vögele e3abdeab3a Mention chinese translation in changelog 2021-03-16 09:27:51 +01:00
zeteticl 2ff4e98fe9 Add chinese localization (#39) 2021-03-16 09:02:32 +01:00
8 changed files with 202 additions and 20 deletions
+27 -1
View File
@@ -1,3 +1,29 @@
## 1.4.4
### Bugfixes
- Fix snapping for tokens that are smaller than 1x1
## 1.4.3
### System compatibility
- Drag Ruler's Generic SpeedProvider is now aware of good default values for the Savage Worlds Adventure Edition game system
### Translation
- Added german translation
- Updated japanese translation (thanks to touge)
## 1.4.2
### Bugfixes
- Drag Ruler now works again on gridless maps
## 1.4.1
### Bugfixes
- Fixed a bug where Drag Ruler wouldn't work at all on hex grids when the Hex Token Size Support isn't installed
### Translation
- Added chinese translation (thanks to zeteticl)
## 1.4.0 ## 1.4.0
### New features ### New features
- If the [Terrain Ruler module](https://foundryvtt.com/packages/terrain-ruler/) is installed and activated, Drag Ruler will now take difficult terrain that was placed with the [TerrainLayer module](https://foundryvtt.com/packages/TerrainLayer/) into account. - If the [Terrain Ruler module](https://foundryvtt.com/packages/terrain-ruler/) is installed and activated, Drag Ruler will now take difficult terrain that was placed with the [TerrainLayer module](https://foundryvtt.com/packages/TerrainLayer/) into account.
@@ -26,7 +52,7 @@
## 1.3.2 ## 1.3.2
### Translation ### Translation
- Updated japanese translation (thanks to togue) - Updated japanese translation (thanks to touge)
## 1.3.1 ## 1.3.1
+2
View File
@@ -41,7 +41,9 @@ The game systems that offer Drag Ruler integration are:
## Translations ## Translations
Drag Ruler is available in the follwing languages: Drag Ruler is available in the follwing languages:
- Chinese (thanks to zeteticl)
- English - English
- German
- Japanese (thanks to touge) - Japanese (thanks to touge)
## API ## API
+66
View File
@@ -0,0 +1,66 @@
{
"drag-ruler": {
"genericSpeedProvider": {
"settings": {
"dashMultiplier": {
"name": "Sprint Multiplikator",
"hint": "Diese Einstellung kann genutzt werden, um eine zweite Geschwindigkeitsfarbe im gemessenen Pfad zu erhalten. Die zweite Farbe wird deaktiviert, wenn diese Einstellung auf 0 gesetzt ist."
},
"speedAttribute": {
"name": "Geschwindigkeitsattribut",
"hint": "Das Attribut, das die Gehgeschwindigkeit einer Spielfigur definiert. Diese Attribut wird während der Färbung des hervorgehobenen Pfads verwendet."
}
},
"speeds": {
"walk": "gehen",
"dash": "sprinten"
}
},
"settings": {
"alwaysShowSpeedForPCs": {
"name": "Geschwindigkeit von Spielercharakteren für jeden anzeigen",
"hint": "Wenn diese Einstellung aktiviert ist wird die Färbung der hervorgehobenen Felder bei Spielercharakteren allen Spielern angezeigt, selbst wenn diese keinen Zugriff auf den Charakterbogen haben."
},
"showGMRulerToPlayers": {
"name": "Lineal des Sipelleiters bei Spielern anzeigen",
"hint": "Wenn diese Option deaktiviert ist wird das Lineal des Spielleiters bei den anderen Spielern nicht angezeigt."
},
"speedProviderSettings": {
"name": "Einstellungen zur Spielsystemintegration",
"hint": "In diesem Menü befinden sich alle spielsystemspezifischen Einstellungen.",
"button": "Einstellungen zur Spielsystemintegration",
"windowTitle": "Einstellungen zur Spielsystemintegration",
"headers": {
"speedProvider": "Spielsystemintegration",
"speedProviderSettings": "Integrationsspezifische Einstellungen"
},
"activeProvider": {
"name": "Verwendete Spielsystemintegration",
"hint": "Die unten angezeigten Einstellungen hängen von der verwendeten Spielsystemintegration ab. Wenn der Spielleiter eine andere Spielsystemintegration auswählt können sich die zur Verfügung stehnden Einstellungen ändern."
},
"noSettings": "Diese Spielsystemintegration hat keine Einstellmöglichkeiten",
"color": {
"name": "Farbe für {colorName}",
"hint": "Die Farbe mit der Felder in {colorName} Reichweite hervorgehoben werden",
"unreachable": {
"name": "unerreichbar",
"hint": "Die Farbe für Felder, die von der bewegten Spielfigur nicht erreicht werden können"
}
},
"speedProvider": {
"name": "Verwendete Spielsystemintegration",
"hint": "Wähle aus, welche Spielsystemintegration für die farbliche Hervorhebung der Felder zuständig sein soll. Drag Ruler stellt eine generische Spielsystemintegration zur Verfügung, die grundlegende Funktionalität bietet und bei korrekter konfiguration mit allen Spielsystemen funktionieren sollte. Weitere Spielsystemintegrationen können durch Module und Spielsysteme angeboten werden. Eine andere Spielsystemintegration als die generische auszuwählen kann eine bessere Inegration in das verwendete Spielsystem bieten. Die Optionen unterhalb sind davon abhäng, welche Spielsystemintegration hier ausgewählt wurde.",
"choices": {
"module": "Modul {name}",
"native": "Generisch",
"system": "System {name}"
}
}
},
"swapSpacebarRightClick": {
"name": "Leertaste und Rechtsklick tauschen",
"hint": "Die Funktionen der Leertaste und des Rechtsklicks sind während eine Spielfigur bewegt wird vertauscht. Wenn diese Option aktiviert wrid können mit Rechtsklick Wegpunkte gesetzt werden und mit der Leertaste werden sie wieder gelöscht."
}
}
}
}
+4
View File
@@ -21,6 +21,10 @@
"name": "プレイヤーキャラクターの移動速度を全員に公開する", "name": "プレイヤーキャラクターの移動速度を全員に公開する",
"hint": "有効にすると、アクターの観察者(Observer)権限を持たない人にも,移動範囲の色分けが表示されるようになります。" "hint": "有効にすると、アクターの観察者(Observer)権限を持たない人にも,移動範囲の色分けが表示されるようになります。"
}, },
"showGMRulerToPlayers": {
"name": "GMのルーラーをプレイヤーに見せる",
"hint": "無効の場合、GMのルーラーはプレイヤーに表示されません。"
},
"speedProviderSettings": { "speedProviderSettings": {
"name": "移動速度の提供元", "name": "移動速度の提供元",
"hint": "ゲームシステムに固有のすべての設定をここで行います。", "hint": "ゲームシステムに固有のすべての設定をここで行います。",
+66
View File
@@ -0,0 +1,66 @@
{
"drag-ruler": {
"genericSpeedProvider": {
"settings": {
"dashMultiplier": {
"name": "快步 倍數",
"hint": "這可用於在對測量路徑進行著色的過程中為棋子賦予第二速度。將其設定為0可禁用第二速度。"
},
"speedAttribute": {
"name": "速度屬性",
"hint": "定義棋子的行走速度的屬性。在對測量路徑進行著色時使用。"
}
},
"speeds": {
"walk": "走路",
"dash": "快步"
}
},
"settings": {
"alwaysShowSpeedForPCs": {
"name": "向所有人顯示PC速度",
"hint": "如果啟用, 玩家的角色(actor)的速度將顯示給所有人,即使他們沒有角色表的觀察者(Observer)權限也是如此。"
},
"showGMRulerToPlayers": {
"name": "向玩家顯示GM標尺",
"hint": "如果禁用,則不為非GM玩家顯示GM的標尺"
},
"speedProviderSettings": {
"name": "速度提供者設定",
"hint": "速度提供者設定 包括 所有遊戲系統特定的設定。",
"button": "速度提供者設定",
"windowTitle": "速度提供者設定",
"headers": {
"speedProvider": "速度提供者設定",
"speedProviderSettings": "特定於速度提供者的設定"
},
"activeProvider": {
"name": "當前活動的速度提供者",
"hint": "下面顯示的設定 取決於活動的 速度提供者。如果GM選擇其他速度提供者,則可用的設定可能會更改。"
},
"noSettings": "該速度提供者不提供任何配置選項。",
"color": {
"name": "{colorName}的顏色",
"hint": "將用於為{colorName}範圍內的正方形上色的顏色",
"unreachable": {
"name": "無法到達",
"hint": "指定拖動棋子無法到達的範圍的顏色"
}
},
"speedProvider": {
"name": "速度設定的提供者",
"hint": "選擇在著色期間為棋子提供速度信息的人。DragRuler提供了一個通用速度提供程序, 該提供程序提供了基本功能, 並且如果配置正確,則可以在所有遊戲系統上使用。可以通過遊戲系統和已安裝的Mod來提供更多速度提供程序。選擇與 標準速度提供者 不同的速度提供者可以更好地集成到您所使用的遊戲系統規則中。以下選項取決於此處選擇的速度提供者。",
"choices": {
"module": "Mod {name}",
"native": "一般",
"system": "系統 {name}"
}
}
},
"swapSpacebarRightClick": {
"name": "交換空格鍵並鼠標右鍵",
"hint": "交換空格鍵和右鍵點擊在拖動過程中的功能。如果啟用,右鍵單擊將放置航點,空格鍵將刪除它們。"
}
}
}
}
+12 -2
View File
@@ -2,7 +2,7 @@
"name": "drag-ruler", "name": "drag-ruler",
"title": "Drag Ruler", "title": "Drag Ruler",
"description": "When dragging a token displays a ruler showing how far you've moved that token.", "description": "When dragging a token displays a ruler showing how far you've moved that token.",
"version": "1.4.0", "version": "1.4.4",
"minimumCoreVersion" : "0.7.9", "minimumCoreVersion" : "0.7.9",
"compatibleCoreVersion" : "0.7.9", "compatibleCoreVersion" : "0.7.9",
"authors": [ "authors": [
@@ -19,6 +19,11 @@
"speed_provider_settings.html" "speed_provider_settings.html"
], ],
"languages": [ "languages": [
{
"lang": "de",
"name": "Deutsch",
"path": "lang/de.json"
},
{ {
"lang": "en", "lang": "en",
"name": "English", "name": "English",
@@ -28,10 +33,15 @@
"lang": "ja", "lang": "ja",
"name": "日本語", "name": "日本語",
"path": "lang/ja.json" "path": "lang/ja.json"
},
{
"lang": "zh-tw",
"name": "正體中文",
"path": "lang/zh-tw.json"
} }
], ],
"url": "https://github.com/manuelVo/foundryvtt-drag-ruler", "url": "https://github.com/manuelVo/foundryvtt-drag-ruler",
"download": "https://github.com/manuelVo/foundryvtt-drag-ruler/archive/v1.4.0.zip", "download": "https://github.com/manuelVo/foundryvtt-drag-ruler/archive/v1.4.4.zip",
"manifest": "https://raw.githubusercontent.com/manuelVo/foundryvtt-drag-ruler/master/module.json", "manifest": "https://raw.githubusercontent.com/manuelVo/foundryvtt-drag-ruler/master/module.json",
"readme": "https://github.com/manuelVo/foundryvtt-drag-ruler/blob/master/README.md", "readme": "https://github.com/manuelVo/foundryvtt-drag-ruler/blob/master/README.md",
"changelog": "https://github.com/manuelVo/foundryvtt-drag-ruler/blob/master/CHANGELOG.md", "changelog": "https://github.com/manuelVo/foundryvtt-drag-ruler/blob/master/CHANGELOG.md",
+4
View File
@@ -7,12 +7,16 @@ export function getDefaultSpeedAttribute() {
return "actor.data.data.mech.speed" return "actor.data.data.mech.speed"
case "pf1": case "pf1":
return "actor.data.data.attributes.speed.land.total" return "actor.data.data.attributes.speed.land.total"
case "swade":
return "actor.data.data.stats.speed.value"
} }
return "" return ""
} }
export function getDefaultDashMultiplier() { export function getDefaultDashMultiplier() {
switch (game.system.id) { switch (game.system.id) {
case "swade":
return 0
case "dnd5e": case "dnd5e":
case "lancer": case "lancer":
case "pf1": case "pf1":
+21 -17
View File
@@ -16,7 +16,7 @@ export function getSnapPointForToken(x, y, token) {
return new PIXI.Point(...canvas.grid.getCenter(x, y)) return new PIXI.Point(...canvas.grid.getCenter(x, y))
} }
} }
if (canvas.grid.isHex || token.data.width % 2 === 1) { if (canvas.grid.isHex || Math.round(token.data.width) % 2 === 1 || token.data.width < 1) {
return new PIXI.Point(...canvas.grid.getCenter(x, y)) return new PIXI.Point(...canvas.grid.getCenter(x, y))
} }
const [snappedX, snappedY] = canvas.grid.getCenter(x - canvas.grid.w / 2, y - canvas.grid.h / 2) const [snappedX, snappedY] = canvas.grid.getCenter(x - canvas.grid.w / 2, y - canvas.grid.h / 2)
@@ -57,9 +57,10 @@ export function getAreaFromPositionAndShape(position, shape) {
} }
export function getTokenShape(token) { export function getTokenShape(token) {
if (token.scene.data.gridType === CONST.GRID_TYPES.GRIDLESS) if (token.scene.data.gridType === CONST.GRID_TYPES.GRIDLESS) {
throw new Error("getTokenShape cannot be called for tokens on gridless maps") return [{x: 0, y: 0}]
if (token.scene.data.gridType === CONST.GRID_TYPES.SQUARE) { }
else if (token.scene.data.gridType === CONST.GRID_TYPES.SQUARE) {
const topOffset = -Math.floor(token.data.height / 2) const topOffset = -Math.floor(token.data.height / 2)
const leftOffset = -Math.floor(token.data.width / 2) const leftOffset = -Math.floor(token.data.width / 2)
const shape = [] const shape = []
@@ -117,21 +118,24 @@ export function applyTokenSizeOffset(waypoints, token) {
const tokenSize = getTokenSize(token); const tokenSize = getTokenSize(token);
const waypointOffset = {x: 0, y: 0}; const waypointOffset = {x: 0, y: 0};
if (canvas.grid.isHex) { if (canvas.grid.isHex) {
const isAltOrientation = CONFIG.hexSizeSupport.getAltOrientationFlag(token); if (game.modules.get("hex-size-support")?.active) {
if (canvas.grid.grid.options.columns) { const isAltOrientation = CONFIG.hexSizeSupport.getAltOrientationFlag(token);
if (tokenSize.w % 2 === 0) { if (canvas.grid.grid.options.columns) {
waypointOffset.x = canvas.grid.w / 2; if (tokenSize.w % 2 === 0) {
if (!isAltOrientation) waypointOffset.x = canvas.grid.w / 2;
waypointOffset.x *= -1; if (!isAltOrientation)
} waypointOffset.x *= -1;
} }
else { }
if (tokenSize.h % 2 === 0) { else {
waypointOffset.y = canvas.grid.h / 2; if (tokenSize.h % 2 === 0) {
if (isAltOrientation) waypointOffset.y = canvas.grid.h / 2;
waypointOffset.y *= -1; if (isAltOrientation)
waypointOffset.y *= -1;
}
} }
} }
// If hex size support isn't active leave the waypoints like they are
} }
else { else {
if (tokenSize.w % 2 === 0) { if (tokenSize.w % 2 === 0) {