-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[assets] added Laser Rifle and Microfuel Cell ammo.
- Loading branch information
Showing
22 changed files
with
270 additions
and
32 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,20 @@ | ||
import { SingleUnitAmmo } from "@src/components/viewport/layers/ammo/SingleUnitAmmo"; | ||
import { GameLayer } from "@src/components/viewport/_shared/GameLayer"; | ||
import { SingleUnitAmmo } from "@src/components/viewport/layers/ammo/SingleUnitAmmo"; | ||
import { useGameState } from "@src/hooks/useGameState"; | ||
import React from "react"; | ||
|
||
export const Ammo = () => { | ||
export const Ammo = React.memo(() => { | ||
const { gameState } = useGameState(); | ||
|
||
const ammoFiredIds = React.useMemo(() => { | ||
return gameState.ammoFiredIds; | ||
}, [gameState.ammoFiredIds.length]); | ||
|
||
return ( | ||
<GameLayer size={gameState.mapSize} className={"ammo-layer"} isometric={false}> | ||
{Object.values(gameState.ammoFiredIds).map((ammoId) => ( | ||
<SingleUnitAmmo key={ammoId} ammo={gameState.getAmmoById(ammoId)} /> | ||
{Object.values(ammoFiredIds).map((ammoId) => ( | ||
<SingleUnitAmmo key={ammoId} ammoId={ammoId} /> | ||
))} | ||
</GameLayer> | ||
); | ||
}; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,17 @@ | ||
import { constants } from "@src/engine/constants"; | ||
import { Ammo } from "@src/engine/weapon/AmmoFactory"; | ||
import { useGameState } from "@src/hooks/useGameState"; | ||
import React from "react"; | ||
|
||
export const SingleUnitAmmo = (props: { ammo?: Ammo }) => { | ||
if (!props.ammo) return null; | ||
export const SingleUnitAmmo = (props: { ammoId?: Ammo["id"] }) => { | ||
const { gameState } = useGameState(); | ||
|
||
const position = props.ammo.position; | ||
const ammo = React.useMemo(() => { | ||
if (!props.ammoId) return null; | ||
|
||
return ( | ||
<div | ||
className={`ammo ammo_${props.ammo.name}`} | ||
style={{ | ||
left: position.screen.x + constants.tileSize.width / 2, | ||
top: position.screen.y + constants.tileSize.height / 2, | ||
transform: `rotateX(60deg) rotateZ(${props.ammo.angle.deg - 45}deg) translateZ(40px)`, | ||
}} | ||
></div> | ||
); | ||
return gameState.getAmmoById(props.ammoId); | ||
}, [props.ammoId]); | ||
|
||
if (!ammo) return null; | ||
|
||
return <div className={`ammo`} data-name={ammo.name} style={ammo.getDerivedCssProps()}></div>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { AmmoDictEntity } from "@src/dict/ammo/ammo"; | ||
|
||
const ammo_microfusion_cell: { [id: string]: AmmoDictEntity } = { | ||
microfusion_cell: { | ||
name: "microfusion_cell", | ||
class: "laser_ammo", | ||
type: "microfusion_cell", | ||
title: "Microfusion cell", | ||
description: "A medium sized energy production unit. Self-contained fusion plant.", | ||
speed: 50, | ||
damage: 0, | ||
penetration: 0, | ||
magazineSize: 50, | ||
weight: 5, | ||
price: 4, | ||
gfx: { | ||
icon: { | ||
size: { width: 36, height: 51 }, | ||
src: "/assets/ammo/energy/microfusion_cell/icon.webp", | ||
}, | ||
isometric: { | ||
size: { width: 29, height: 26 }, | ||
src: "/assets/ammo/energy/microfusion_cell/iso.webp", | ||
}, | ||
}, | ||
sfx: { | ||
targetReached: { | ||
src: [ | ||
"/assets/weapons/firearm/rico_1.mp3", | ||
"/assets/weapons/firearm/rico_2.mp3", | ||
"/assets/weapons/firearm/rico_3.mp3", | ||
"/assets/weapons/firearm/rico_4.mp3", | ||
"/assets/weapons/firearm/rico_5.mp3", | ||
"/assets/weapons/firearm/rico_6.mp3", | ||
"/assets/weapons/firearm/rico_7.mp3", | ||
], | ||
}, | ||
}, | ||
vfx: { | ||
targetReached: { | ||
type: ["hit-ground"], | ||
delayBeforeEmitting: 50, | ||
animationDuration: 200, | ||
}, | ||
}, | ||
}, | ||
}; | ||
|
||
export default ammo_microfusion_cell; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
import { WeaponDictEntity } from "@src/dict/weapon/weapon"; | ||
|
||
const laser_rifle: WeaponDictEntity = { | ||
name: "laser_rifle", | ||
class: "firearm", | ||
type: "rifle", | ||
title: "Laser rifle", | ||
description: | ||
"A Wattz 2000 laser rifle. Uses micro fusion cells for more powerful lasers, and an extended barrel for additional range.", | ||
weight: 12, | ||
price: 6000, | ||
damageType: "energy", | ||
ammoCapacity: 12, | ||
requiredStat: { | ||
name: "strength", | ||
value: 5, | ||
}, | ||
attackModes: { | ||
shot_single: { | ||
skill: "smallGuns", | ||
ammoType: "microfusion_cell", | ||
actionPointsConsumption: 5, | ||
ammoConsumption: 1, | ||
range: 45, | ||
damage: { | ||
min: 23, | ||
max: 50, | ||
}, | ||
removeFromInventoryAfterUse: false, | ||
animationDuration: { | ||
attack: 400, | ||
attackCompleted: 1000, | ||
attackNotAllowed: 1000, | ||
}, | ||
}, | ||
shot_burst: { | ||
skill: "smallGuns", | ||
ammoType: "microfusion_cell", | ||
actionPointsConsumption: 5, | ||
ammoConsumption: 6, | ||
range: 20, | ||
damage: { | ||
min: 8, | ||
max: 17, | ||
}, | ||
removeFromInventoryAfterUse: false, | ||
animationDuration: { | ||
attack: 400, | ||
attackCompleted: 1000, | ||
attackNotAllowed: 1000, | ||
}, | ||
}, | ||
}, | ||
sfx: { | ||
shot_single: { | ||
src: [ | ||
"/assets/weapons/firearm/rifle/laser_rifle/shot_single_1.m4a", | ||
"/assets/weapons/firearm/rifle/laser_rifle/shot_single_2.m4a", | ||
], | ||
timeIntervalMs: 400, | ||
}, | ||
outOfAmmo: { | ||
src: ["/assets/weapons/firearm/rifle/laser_rifle/out_of_ammo.m4a"], | ||
}, | ||
reload: { | ||
src: ["/assets/weapons/firearm/rifle/laser_rifle/reload.m4a"], | ||
}, | ||
}, | ||
gfx: { | ||
icon: { | ||
size: { width: 128, height: 36 }, | ||
src: "/assets/weapons/firearm/rifle/laser_rifle/icon.webp", | ||
}, | ||
isometric: { | ||
size: { width: 64, height: 21 }, | ||
src: "/assets/weapons/firearm/rifle/laser_rifle/iso.webp", | ||
}, | ||
}, | ||
vfx: { | ||
shot_single: { | ||
type: ["muzzle-1", "muzzle-2", "muzzle-3"], | ||
animationDuration: 100, | ||
delayBetweenEmitting: 50, | ||
delayBeforeEmitting: 500, | ||
light: { | ||
animationDuration: 50, | ||
color: "#ff0000", | ||
radius: 2, | ||
}, | ||
}, | ||
}, | ||
}; | ||
|
||
export default laser_rifle; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.