Mercurial > malikania
view libclient/malikania/client/animator.cpp @ 82:ee850a6ab89e
Client: namespace and hierarchy
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 22 Jan 2017 11:07:36 +0100 |
parents | libclient/malikania/animator.cpp@858621081b95 |
children | 119bcc5a727e |
line wrap: on
line source
/* * animator.cpp -- animation drawing object * * Copyright (c) 2013-2017 Malikania Authors * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "animation.hpp" #include "animator.hpp" namespace mlk { namespace client { animator::animator(animation& animation) noexcept : m_animation(animation) { } void animator::update() noexcept { auto total = m_animation.sprite().rows() * m_animation.sprite().columns(); if (m_current >= total) { return; } if (m_timer.elapsed().wall / 1000000LL >= m_animation[m_current].delay()) { m_current ++; m_timer.start(); } } void animator::draw(window& window, const point& point) { if (m_current >= m_animation.sprite().rows() * m_animation.sprite().columns()) { return; } m_animation.sprite().draw(window, m_current, point); } } // !client } // !mlk