spawn/teleport dummy command
This commit is contained in:
parent
4b61ac219d
commit
5f8e701ac1
@ -1259,6 +1259,9 @@ P_Ent *P_NextEnt(P_Ent *e)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
//~ List helpers
|
||||||
|
|
||||||
P_Ent *P_PushTempEnt(Arena *arena, P_EntList *list)
|
P_Ent *P_PushTempEnt(Arena *arena, P_EntList *list)
|
||||||
{
|
{
|
||||||
P_EntListNode *n = PushStruct(arena, P_EntListNode);
|
P_EntListNode *n = PushStruct(arena, P_EntListNode);
|
||||||
@ -2584,6 +2587,7 @@ void P_StepFrame(P_Frame *frame)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Truncate bullet trail
|
||||||
if (!P_IsEntNil(victim))
|
if (!P_IsEntNil(victim))
|
||||||
{
|
{
|
||||||
bullet->has_hit = 1;
|
bullet->has_hit = 1;
|
||||||
|
|||||||
@ -589,7 +589,6 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
else if (MatchString(name, Lit("guy")))
|
else if (MatchString(name, Lit("guy")))
|
||||||
{
|
{
|
||||||
P_Ent *guy = P_PushTempEnt(frame_arena, &ents);
|
P_Ent *guy = P_PushTempEnt(frame_arena, &ents);
|
||||||
*guy = P_NilEnt;
|
|
||||||
guy->key = msg->key;
|
guy->key = msg->key;
|
||||||
guy->xf = msg->xf;
|
guy->xf = msg->xf;
|
||||||
guy->is_guy = 1;
|
guy->is_guy = 1;
|
||||||
@ -598,23 +597,28 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
}
|
}
|
||||||
else if (MatchString(name, Lit("dummy")))
|
else if (MatchString(name, Lit("dummy")))
|
||||||
{
|
{
|
||||||
P_Ent *guy = P_PushTempEnt(frame_arena, &ents);
|
P_Ent *dummy = P_EntFromKey(world_frame, msg->key);
|
||||||
*guy = P_NilEnt;
|
if (P_IsEntNil(dummy))
|
||||||
guy->key = P_RandKey();
|
{
|
||||||
guy->xf = msg->xf;
|
dummy = P_PushTempEnt(frame_arena, &ents);
|
||||||
guy->is_guy = 1;
|
|
||||||
guy->has_weapon = 1;
|
|
||||||
guy->exists = 1;
|
|
||||||
|
|
||||||
P_Ent *dummy = P_PushTempEnt(frame_arena, &ents);
|
|
||||||
*dummy = P_NilEnt;
|
|
||||||
dummy->key = msg->key;
|
dummy->key = msg->key;
|
||||||
dummy->is_player = 1;
|
dummy->is_player = 1;
|
||||||
dummy->is_dummy = 1;
|
dummy->is_dummy = 1;
|
||||||
dummy->exists = 1;
|
dummy->exists = 1;
|
||||||
dummy->guy = guy->key;
|
|
||||||
P_SetEntString(dummy, Lit("Dummy"));
|
P_SetEntString(dummy, Lit("Dummy"));
|
||||||
}
|
}
|
||||||
|
P_Ent *guy = P_EntFromKey(world_frame, dummy->guy);
|
||||||
|
if (P_IsEntNil(guy))
|
||||||
|
{
|
||||||
|
guy = P_PushTempEnt(frame_arena, &ents);
|
||||||
|
guy->key = P_RandKey();
|
||||||
|
guy->is_guy = 1;
|
||||||
|
guy->has_weapon = 1;
|
||||||
|
guy->exists = 1;
|
||||||
|
dummy->guy = guy->key;
|
||||||
|
}
|
||||||
|
guy->xf = msg->xf;
|
||||||
|
}
|
||||||
P_SpawnEntsFromList(world_frame, ents);
|
P_SpawnEntsFromList(world_frame, ents);
|
||||||
} break;
|
} break;
|
||||||
//- Delete entity
|
//- Delete entity
|
||||||
|
|||||||
@ -4325,7 +4325,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
// } break;
|
// } break;
|
||||||
|
|
||||||
case V_CmdKind_reset_world:
|
case V_CmdKind_reset_world:
|
||||||
case V_CmdKind_spawn:
|
case V_CmdKind_spawn_tp_player:
|
||||||
{
|
{
|
||||||
// Reset world
|
// Reset world
|
||||||
Vec2 guy_pos = VEC2(5, 0);
|
Vec2 guy_pos = VEC2(5, 0);
|
||||||
@ -4346,11 +4346,23 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case V_CmdKind_spawn_tp_dummy:
|
||||||
case V_CmdKind_spawn_dummy:
|
case V_CmdKind_spawn_dummy:
|
||||||
{
|
{
|
||||||
P_Msg *msg = P_PushMsg(P_MsgKind_EntEdit, Lit("dummy"));
|
P_Msg *msg = P_PushMsg(P_MsgKind_EntEdit, Lit("dummy"));
|
||||||
msg->key = P_RandKey();
|
msg->key = P_RandKey();
|
||||||
msg->xf.t = frame->world_cursor;
|
msg->xf.t = frame->world_cursor;
|
||||||
|
if (kind == V_CmdKind_spawn_tp_dummy)
|
||||||
|
{
|
||||||
|
for (P_Ent *ent = P_FirstEnt(local_frame); !P_IsEntNil(ent); ent = P_NextEnt(ent))
|
||||||
|
{
|
||||||
|
if (ent->is_dummy)
|
||||||
|
{
|
||||||
|
msg->key = ent->key;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case V_CmdKind_delete:
|
case V_CmdKind_delete:
|
||||||
|
|||||||
@ -13,12 +13,13 @@
|
|||||||
X(toggle_console, Toggle Developer Console, V_CmdDescFlag_None, V_HOTKEY( Button_GraveAccent ), ) \
|
X(toggle_console, Toggle Developer Console, V_CmdDescFlag_None, V_HOTKEY( Button_GraveAccent ), ) \
|
||||||
X(toggle_fullscreen, Toggle Fullscreen Mode, V_CmdDescFlag_None, V_HOTKEY( Button_Enter, .alt = 1 ) ) \
|
X(toggle_fullscreen, Toggle Fullscreen Mode, V_CmdDescFlag_None, V_HOTKEY( Button_Enter, .alt = 1 ) ) \
|
||||||
X(toggle_window_topmost, Toggle Window Topmost, V_CmdDescFlag_None, V_HOTKEY( Button_F4 ), ) \
|
X(toggle_window_topmost, Toggle Window Topmost, V_CmdDescFlag_None, V_HOTKEY( Button_F4 ), ) \
|
||||||
X(spawn, Spawn/Teleport Player, V_CmdDescFlag_None, V_HOTKEY( Button_Q ), ) \
|
X(spawn_tp_player, Spawn/Teleport Player, V_CmdDescFlag_None, V_HOTKEY( Button_Q ), ) \
|
||||||
X(spawn_dummy, Spawn Dummy, V_CmdDescFlag_None, V_HOTKEY( Button_T ), ) \
|
X(spawn_tp_dummy, Spawn/Teleport Dummy, V_CmdDescFlag_None, V_HOTKEY( Button_T ), ) \
|
||||||
|
X(spawn_dummy, Spawn Dummy, V_CmdDescFlag_None, V_HOTKEY( Button_T, .ctrl = 1 ), ) \
|
||||||
X(delete, Delete entity at cursor, V_CmdDescFlag_None, V_HOTKEY( Button_M2 ), ) \
|
X(delete, Delete entity at cursor, V_CmdDescFlag_None, V_HOTKEY( Button_M2 ), ) \
|
||||||
X(reset_world, Reset world, V_CmdDescFlag_None, V_HOTKEY( Button_R, .ctrl = 1, .alt = 1 ), ) \
|
X(reset_world, Reset world, V_CmdDescFlag_None, V_HOTKEY( Button_R, .ctrl = 1, .alt = 1 ), ) \
|
||||||
X(clear_particles, Clear particles, V_CmdDescFlag_None, V_HOTKEY( Button_C ), ) \
|
X(clear_particles, Clear particles, V_CmdDescFlag_None, V_HOTKEY( Button_C ), ) \
|
||||||
X(test, Test, V_CmdDescFlag_None, V_HOTKEY( Button_T, .ctrl = 1 ), ) \
|
X(test, Test, V_CmdDescFlag_None, V_HOTKEY( Button_Y ), ) \
|
||||||
/* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -284,10 +284,6 @@ LRESULT CALLBACK WND_W32_WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM l
|
|||||||
event.button = WND_W32.vk_to_button[vk_code];
|
event.button = WND_W32.vk_to_button[vk_code];
|
||||||
}
|
}
|
||||||
WND_W32_PushEvent(window, event);
|
WND_W32_PushEvent(window, event);
|
||||||
if (msg == WM_SYSKEYUP || msg == WM_SYSKEYDOWN)
|
|
||||||
{
|
|
||||||
result = DefWindowProcW(hwnd, msg, wparam, lparam);
|
|
||||||
}
|
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
//- Text
|
//- Text
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user