mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
Add Cut keybind.
This commit is contained in:
parent
84966573fa
commit
f34813392f
@ -22,6 +22,9 @@ export class HUDMassSelector extends BaseHUDPart {
|
|||||||
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
|
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
|
||||||
.getKeyCodeString();
|
.getKeyCodeString();
|
||||||
const abortKeybinding = this.root.keyMapper.getBinding(KEYMAPPINGS.general.back).getKeyCodeString();
|
const abortKeybinding = this.root.keyMapper.getBinding(KEYMAPPINGS.general.back).getKeyCodeString();
|
||||||
|
const cutKeybinding = this.root.keyMapper
|
||||||
|
.getBinding(KEYMAPPINGS.massSelect.massSelectCut)
|
||||||
|
.getKeyCodeString();
|
||||||
const copyKeybinding = this.root.keyMapper
|
const copyKeybinding = this.root.keyMapper
|
||||||
.getBinding(KEYMAPPINGS.massSelect.massSelectCopy)
|
.getBinding(KEYMAPPINGS.massSelect.massSelectCopy)
|
||||||
.getKeyCodeString();
|
.getKeyCodeString();
|
||||||
@ -32,6 +35,7 @@ export class HUDMassSelector extends BaseHUDPart {
|
|||||||
[],
|
[],
|
||||||
T.ingame.massSelect.infoText
|
T.ingame.massSelect.infoText
|
||||||
.replace("<keyDelete>", `<code class='keybinding'>${removalKeybinding}</code>`)
|
.replace("<keyDelete>", `<code class='keybinding'>${removalKeybinding}</code>`)
|
||||||
|
.replace("<keyCut>", `<code class='keybinding'>${cutKeybinding}</code>`)
|
||||||
.replace("<keyCopy>", `<code class='keybinding'>${copyKeybinding}</code>`)
|
.replace("<keyCopy>", `<code class='keybinding'>${copyKeybinding}</code>`)
|
||||||
.replace("<keyCancel>", `<code class='keybinding'>${abortKeybinding}</code>`)
|
.replace("<keyCancel>", `<code class='keybinding'>${abortKeybinding}</code>`)
|
||||||
);
|
);
|
||||||
@ -54,6 +58,7 @@ export class HUDMassSelector extends BaseHUDPart {
|
|||||||
this.root.keyMapper
|
this.root.keyMapper
|
||||||
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
|
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
|
||||||
.add(this.confirmDelete, this);
|
.add(this.confirmDelete, this);
|
||||||
|
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCut).add(this.confirmCut, this);
|
||||||
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCopy).add(this.startCopy, this);
|
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCopy).add(this.startCopy, this);
|
||||||
|
|
||||||
this.domAttach = new DynamicDomAttach(this.root, this.element);
|
this.domAttach = new DynamicDomAttach(this.root, this.element);
|
||||||
@ -123,6 +128,49 @@ export class HUDMassSelector extends BaseHUDPart {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
confirmCut() {
|
||||||
|
if (!this.root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_blueprints)) {
|
||||||
|
this.root.hud.parts.dialogs.showInfo(
|
||||||
|
T.dialogs.blueprintsNotUnlocked.title,
|
||||||
|
T.dialogs.blueprintsNotUnlocked.desc
|
||||||
|
);
|
||||||
|
} else if (this.selectedUids.size > 100) {
|
||||||
|
const { ok } = this.root.hud.parts.dialogs.showWarning(
|
||||||
|
T.dialogs.massCutConfirm.title,
|
||||||
|
T.dialogs.massCutConfirm.desc.replace(
|
||||||
|
"<count>",
|
||||||
|
"" + formatBigNumberFull(this.selectedUids.size)
|
||||||
|
),
|
||||||
|
["cancel:good", "ok:bad"]
|
||||||
|
);
|
||||||
|
ok.add(() => this.doCut());
|
||||||
|
} else {
|
||||||
|
this.doCut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
doCut() {
|
||||||
|
if (this.selectedUids.size > 0) {
|
||||||
|
const entityUids = Array.from(this.selectedUids);
|
||||||
|
|
||||||
|
// copy code relies on entities still existing, so must copy before deleting.
|
||||||
|
this.root.hud.signals.buildingsSelectedForCopy.dispatch(entityUids);
|
||||||
|
|
||||||
|
for (let i = 0; i < entityUids.length; ++i) {
|
||||||
|
const uid = entityUids[i];
|
||||||
|
const entity = this.root.entityMgr.findByUid(uid);
|
||||||
|
if (!this.root.logic.tryDeleteBuilding(entity)) {
|
||||||
|
logger.error("Error in mass cut, could not remove building");
|
||||||
|
this.selectedUids.delete(uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.root.soundProxy.playUiClick();
|
||||||
|
} else {
|
||||||
|
this.root.soundProxy.playUiError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mouse down pre handler
|
* mouse down pre handler
|
||||||
* @param {Vector} pos
|
* @param {Vector} pos
|
||||||
|
@ -65,6 +65,7 @@ export const KEYMAPPINGS = {
|
|||||||
massSelectStart: { keyCode: 17 }, // CTRL
|
massSelectStart: { keyCode: 17 }, // CTRL
|
||||||
massSelectSelectMultiple: { keyCode: 16 }, // SHIFT
|
massSelectSelectMultiple: { keyCode: 16 }, // SHIFT
|
||||||
massSelectCopy: { keyCode: key("C") },
|
massSelectCopy: { keyCode: key("C") },
|
||||||
|
massSelectCut: { keyCode: key("X") },
|
||||||
confirmMassDelete: { keyCode: 46 }, // DEL
|
confirmMassDelete: { keyCode: 46 }, // DEL
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ steamPage:
|
|||||||
|
|
||||||
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
|
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
|
||||||
|
|
||||||
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
|
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
|
||||||
|
|
||||||
|
|
||||||
[b]Standalone Advantages[/b]
|
[b]Standalone Advantages[/b]
|
||||||
@ -250,6 +250,11 @@ dialogs:
|
|||||||
desc: >-
|
desc: >-
|
||||||
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||||
|
|
||||||
|
massCutConfirm:
|
||||||
|
title: Confirm cut
|
||||||
|
desc: >-
|
||||||
|
You are cutting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||||
|
|
||||||
blueprintsNotUnlocked:
|
blueprintsNotUnlocked:
|
||||||
title: Not unlocked yet
|
title: Not unlocked yet
|
||||||
desc: >-
|
desc: >-
|
||||||
@ -324,7 +329,7 @@ ingame:
|
|||||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||||
# to select multiple buildings
|
# to select multiple buildings
|
||||||
massSelect:
|
massSelect:
|
||||||
infoText: Press <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||||
|
|
||||||
# The "Upgrades" window
|
# The "Upgrades" window
|
||||||
shop:
|
shop:
|
||||||
@ -710,6 +715,7 @@ keybindings:
|
|||||||
massSelectStart: Hold and drag to start
|
massSelectStart: Hold and drag to start
|
||||||
massSelectSelectMultiple: Select multiple areas
|
massSelectSelectMultiple: Select multiple areas
|
||||||
massSelectCopy: Copy area
|
massSelectCopy: Copy area
|
||||||
|
massSelectCut: Cut area
|
||||||
|
|
||||||
placementDisableAutoOrientation: Disable automatic orientation
|
placementDisableAutoOrientation: Disable automatic orientation
|
||||||
placeMultiple: Stay in placement mode
|
placeMultiple: Stay in placement mode
|
||||||
|
Loading…
Reference in New Issue
Block a user