/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2021, Mustafa Quraish * Copyright (c) 2023, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "SnakeSkin.h" #include #include #include #include #include namespace Snake { class ImageSkin : public SnakeSkin { public: static ErrorOr> create(StringView skin_name); virtual ~ImageSkin() override = default; void draw_head(Gfx::Painter&, Gfx::IntRect const& head, Direction facing_direction) override; void draw_body(Gfx::Painter&, Gfx::IntRect const& rect, Direction previous_direction, Direction next_direction) override; void draw_tail(Gfx::Painter&, Gfx::IntRect const& tail, Direction body_direction) override; private: ImageSkin(StringView skin_name, Vector> head_bitmaps, Vector> body_bitmaps); String m_skin_name; Vector> m_head_bitmaps; Vector> m_body_bitmaps; }; }