Knocking out TODO items.
This commit is contained in:
parent
cebcd7ae97
commit
694cdf5f70
21
TODO.md
Normal file
21
TODO.md
Normal file
@ -0,0 +1,21 @@
|
||||
# TODO
|
||||
|
||||
n Deployed sprites for every angle (wall)
|
||||
n - Showing charge level
|
||||
n Deployed sprites for every angle (ceiling)
|
||||
n - Showing charge level
|
||||
x flat sprite? Advantages: One direction, can probably be used on ceiling and wall.
|
||||
x - Showing charge level
|
||||
|
||||
- Pickup sprites for every angle
|
||||
- Spool of wire, a tool, and some electical tape
|
||||
|
||||
- 1st-person sprites
|
||||
- Wire cutters and electrical tape
|
||||
|
||||
x Sparks
|
||||
x Debris when destroyed
|
||||
|
||||
- Switching to mag manager goes to batteries screen
|
||||
|
||||
- Show remaining batteries as ammo
|
BIN
sprites/jmpra0.aseprite
Normal file
BIN
sprites/jmpra0.aseprite
Normal file
Binary file not shown.
BIN
sprites/jmpra0.png
Normal file
BIN
sprites/jmpra0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
16
textures.txt
Normal file
16
textures.txt
Normal file
@ -0,0 +1,16 @@
|
||||
sprite JMPRA0, 49, 43 {
|
||||
offset 24, 21
|
||||
patch JMPRA0,0,0 { }
|
||||
}
|
||||
sprite JMPRB0, 49, 43 {
|
||||
offset 24, 21
|
||||
patch JMPRA0,0,0 { translation "112:120=160:167" }
|
||||
}
|
||||
sprite JMPRC0, 49, 43 {
|
||||
offset 24, 21
|
||||
patch JMPRA0,0,0 { translation "112:120=32:47" }
|
||||
}
|
||||
sprite JMPRD0, 49, 43 {
|
||||
offset 24, 21
|
||||
patch JMPRA0,0,0 { translation "112:120=96:111" }
|
||||
}
|
109
zscript.zs
109
zscript.zs
@ -52,6 +52,7 @@ class JumperCablesMapLoader : EventHandler
|
||||
|
||||
void RegisterCables(JumperCablesDeployed cableActor)
|
||||
{
|
||||
Console.printf("REGISTERING %d\n", deployedCables.Find(cableActor));
|
||||
if(deployedCables.Find(cableActor) == deployedCables.size()) {
|
||||
deployedCables.Push(cableActor);
|
||||
|
||||
@ -62,7 +63,7 @@ class JumperCablesMapLoader : EventHandler
|
||||
|
||||
void UnregisterCables(JumperCablesDeployed cableActor)
|
||||
{
|
||||
Console.printf("UNREGISTERING\n");
|
||||
Console.printf("UNREGISTERING %d\n", deployedCables.Find(cableActor));
|
||||
int index = deployedCables.find(cableActor);
|
||||
if(index != deployedCables.size()) {
|
||||
deployedCables.delete(index);
|
||||
@ -80,23 +81,58 @@ class JumperCablesDeployed : HDUPK
|
||||
|
||||
default
|
||||
{
|
||||
radius 2;
|
||||
height 4;
|
||||
+SpriteAngle;
|
||||
Scale 0.4;
|
||||
}
|
||||
|
||||
states
|
||||
{
|
||||
spawn:
|
||||
DERP A -1 nodelay {
|
||||
invoker.bNoGravity = true;
|
||||
JMPR CABD -1;
|
||||
stop;
|
||||
}
|
||||
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Console.printf("IS THIS EVEN GETTING CALLED!?\n");
|
||||
bNoGravity = true;
|
||||
|
||||
// Register us with the global event handler so we can
|
||||
// respond to the linedef getting used.
|
||||
JumperCablesMapLoader loader = JumperCablesMapLoader.Get();
|
||||
loader.RegisterCables(self);
|
||||
|
||||
UpdateSprite();
|
||||
}
|
||||
|
||||
void SetWallSprite(Vector2 lineDir)
|
||||
{
|
||||
bFlatSprite = false;
|
||||
bWallSprite = true;
|
||||
A_SetAngle(atan2(lineDir) + 90);
|
||||
}
|
||||
|
||||
void SetFlatSprite(float angle)
|
||||
{
|
||||
bFlatSprite = true;
|
||||
bWallSprite = false;
|
||||
A_SetAngle(angle);
|
||||
}
|
||||
|
||||
void UpdateSprite()
|
||||
{
|
||||
// Charge levels correspond to battery sprite charge levels.
|
||||
if(charges > 13) {
|
||||
frame = 0;
|
||||
} else if(charges > 6) {
|
||||
frame = 1;
|
||||
} else if(charges > 0) {
|
||||
frame = 2;
|
||||
} else {
|
||||
frame = 3;
|
||||
}
|
||||
stop;
|
||||
give:
|
||||
DERP A 0;
|
||||
goto spawn;
|
||||
}
|
||||
|
||||
void DecrementBattery()
|
||||
@ -106,6 +142,8 @@ class JumperCablesDeployed : HDUPK
|
||||
if(charges <= 0) {
|
||||
DespawnToBattery();
|
||||
}
|
||||
|
||||
UpdateSprite();
|
||||
}
|
||||
|
||||
void DespawnToBattery()
|
||||
@ -116,7 +154,23 @@ class JumperCablesDeployed : HDUPK
|
||||
// Spawn a battery, with the same level of charge.
|
||||
HDMagAmmo.SpawnMag(self, "HDBattery", self.charges);
|
||||
|
||||
// TODO: Spawn debris.
|
||||
// Spawn some smoke.
|
||||
int smokeCount = random(1, 4);
|
||||
float smokeVel = 20.0;
|
||||
for(int k = 0; k < smokeCount; k++) {
|
||||
A_SpawnItemEx(
|
||||
"HDSmokeChunk",
|
||||
0.0, 0.0, 0.0,
|
||||
frandom(-smokeVel, smokeVel),
|
||||
frandom(-smokeVel, smokeVel),
|
||||
frandom(-smokeVel, smokeVel));
|
||||
}
|
||||
|
||||
// Spawn a bunch of sparks.
|
||||
int sparkAmount = random(3,6);
|
||||
for(int k = 0; k < sparkAmount; k++) {
|
||||
SpawnSpark();
|
||||
}
|
||||
|
||||
JumperCablesMapLoader loader = JumperCablesMapLoader.Get();
|
||||
loader.UnregisterCables(self);
|
||||
@ -130,8 +184,34 @@ class JumperCablesDeployed : HDUPK
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO: Tick function where we add sparks and stuff?
|
||||
// TODO: Tick function where we set the sprite to indicate the charge level.
|
||||
void SpawnSpark()
|
||||
{
|
||||
A_StartSound("misc/arccrackle", CHAN_AUTO);
|
||||
A_SpawnParticle(
|
||||
"white",
|
||||
SPF_RELATIVE | SPF_FULLBRIGHT,
|
||||
random(1, 10), // lifetime
|
||||
frandom(1, 7), // size
|
||||
0, // angle
|
||||
// offset...
|
||||
frandom(-1.0, 1.0),
|
||||
frandom(-1.0, 1.0),
|
||||
frandom(-1.0, 1.0),
|
||||
// vel...
|
||||
frandom(-1.0, 1.0),
|
||||
frandom(-1.0, 1.0),
|
||||
frandom(-1.0, 1.0));
|
||||
}
|
||||
|
||||
override void Tick()
|
||||
{
|
||||
if(frandom(0.0, 1.0) < 0.02) {
|
||||
SpawnSpark();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO: Tick function (or whatever) where we set the sprite to indicate the charge level.
|
||||
// TODO: Despawn if the sector gets broken *again*?
|
||||
}
|
||||
|
||||
@ -403,12 +483,19 @@ class JumperCablesUsable : HDWeapon
|
||||
JumperCablesDeployed deployed = JumperCablesDeployed(
|
||||
Spawn(
|
||||
"JumperCablesDeployed",
|
||||
linetraceData.hitLocation - linetraceData.hitDir * 8));
|
||||
linetraceData.hitLocation - linetraceData.hitDir * 4));
|
||||
|
||||
deployed.lineDefIndex = brokenLine.index();
|
||||
deployed.bNoGravity = true;
|
||||
deployed.charges = batteryCharges;
|
||||
|
||||
if(linetraceData.hitType == TRACE_HitFloor || linetraceData.hitType == TRACE_HitCeiling) {
|
||||
deployed.SetFlatSprite(invoker.owner.angle);
|
||||
} else {
|
||||
Vector2 lineDir = linetraceData.hitLine.v2.p - linetraceData.hitLine.v1.p;
|
||||
deployed.SetWallSprite(lineDir);
|
||||
}
|
||||
|
||||
brokenLine.special = originalSpecial;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user