Files
Logic0/Logic0/rotate.h
T
2026-09-30 19:55:25 -05:00

69 lines
4.2 KiB
C++

#pragma once
#include "element.h"
#include <SDL3/SDL.h>
#include "graphics.h"
class Rotate : public Element {
public:
int dir;
Rotate(int px, int py, int facing) : Element(px, py), dir{ facing } {
type = 923;
}
void draw(int posX, int posY, Logic0_RenderContext::RenderCtx* ctx) override {
SDL_SetRenderDrawColor(ctx->renderer, 0, 255, 255, 255);
if (dir == 1) { // Up
// Curved Loop
Graphics::RenderLine(ctx->renderer, posX + 20, posY + 10, posX + 16, posY + 10, 3);
Graphics::RenderLine(ctx->renderer, posX + 16, posY + 10, posX + 12, posY + 14, 3);
Graphics::RenderLine(ctx->renderer, posX + 12, posY + 14, posX + 12, posY + 26, 3);
Graphics::RenderLine(ctx->renderer, posX + 12, posY + 26, posX + 16, posY + 30, 3);
Graphics::RenderLine(ctx->renderer, posX + 16, posY + 30, posX + 24, posY + 30, 3);
Graphics::RenderLine(ctx->renderer, posX + 24, posY + 30, posX + 28, posY + 26, 3);
Graphics::RenderLine(ctx->renderer, posX + 28, posY + 26, posX + 28, posY + 10, 3);
// Arrowhead (pointing Up)
Graphics::RenderLine(ctx->renderer, posX + 23, posY + 15, posX + 28, posY + 10, 3);
Graphics::RenderLine(ctx->renderer, posX + 33, posY + 15, posX + 28, posY + 10, 3);
}
else if (dir == 2) { // Right
// Curved Loop
Graphics::RenderLine(ctx->renderer, posX + 30, posY + 20, posX + 30, posY + 16, 3);
Graphics::RenderLine(ctx->renderer, posX + 30, posY + 16, posX + 26, posY + 12, 3);
Graphics::RenderLine(ctx->renderer, posX + 26, posY + 12, posX + 14, posY + 12, 3);
Graphics::RenderLine(ctx->renderer, posX + 14, posY + 12, posX + 10, posY + 16, 3);
Graphics::RenderLine(ctx->renderer, posX + 10, posY + 16, posX + 10, posY + 24, 3);
Graphics::RenderLine(ctx->renderer, posX + 10, posY + 24, posX + 14, posY + 28, 3);
Graphics::RenderLine(ctx->renderer, posX + 14, posY + 28, posX + 30, posY + 28, 3);
// Arrowhead (pointing Right)
Graphics::RenderLine(ctx->renderer, posX + 25, posY + 23, posX + 30, posY + 28, 3);
Graphics::RenderLine(ctx->renderer, posX + 25, posY + 33, posX + 30, posY + 28, 3);
}
else if (dir == 3) { // Down
// Curved Loop
Graphics::RenderLine(ctx->renderer, posX + 20, posY + 30, posX + 24, posY + 30, 3);
Graphics::RenderLine(ctx->renderer, posX + 24, posY + 30, posX + 28, posY + 26, 3);
Graphics::RenderLine(ctx->renderer, posX + 28, posY + 26, posX + 28, posY + 14, 3);
Graphics::RenderLine(ctx->renderer, posX + 28, posY + 14, posX + 24, posY + 10, 3);
Graphics::RenderLine(ctx->renderer, posX + 24, posY + 10, posX + 16, posY + 10, 3);
Graphics::RenderLine(ctx->renderer, posX + 16, posY + 10, posX + 12, posY + 14, 3);
Graphics::RenderLine(ctx->renderer, posX + 12, posY + 14, posX + 12, posY + 30, 3);
// Arrowhead (pointing Down)
Graphics::RenderLine(ctx->renderer, posX + 17, posY + 25, posX + 12, posY + 30, 3);
Graphics::RenderLine(ctx->renderer, posX + 7, posY + 25, posX + 12, posY + 30, 3);
}
else if (dir == 4) { // Left
// Curved Loop
Graphics::RenderLine(ctx->renderer, posX + 10, posY + 20, posX + 10, posY + 24, 3);
Graphics::RenderLine(ctx->renderer, posX + 10, posY + 24, posX + 14, posY + 28, 3);
Graphics::RenderLine(ctx->renderer, posX + 14, posY + 28, posX + 26, posY + 28, 3);
Graphics::RenderLine(ctx->renderer, posX + 26, posY + 28, posX + 30, posY + 24, 3);
Graphics::RenderLine(ctx->renderer, posX + 30, posY + 24, posX + 30, posY + 16, 3);
Graphics::RenderLine(ctx->renderer, posX + 30, posY + 16, posX + 26, posY + 12, 3);
Graphics::RenderLine(ctx->renderer, posX + 26, posY + 12, posX + 10, posY + 12, 3);
// Arrowhead (pointing Left)
Graphics::RenderLine(ctx->renderer, posX + 15, posY + 17, posX + 10, posY + 12, 3);
Graphics::RenderLine(ctx->renderer, posX + 15, posY + 7, posX + 10, posY + 12, 3);
}
}
};