Added basic betting, turns, and added queue restacking

This commit is contained in:
2021-08-13 09:32:15 -07:00
parent 82fe9a7e3c
commit eddc5bfafd
14 changed files with 217 additions and 8 deletions

View File

@ -65,6 +65,30 @@ void queueDispose(queue_t *queue) {
if(action->onEnd != NULL) action->onEnd(queue, action, queue->current);
}
void queueRestack(queue_t *queue) {
queueaction_t *action;
uint8_t i;
queueaction_t items[ANIMATION_QUEUE_ITEM_MAX];
// Take the current queue and copy it.
arrayCopy(sizeof(queueaction_t),
queue->items+queue->current, queue->count - queue->current,
items
);
// Now rewind the stack
queue->count -= queue->current;
queue->current = 0;
// Now copy back
arrayCopy(sizeof(queueaction_t), items, queue->count, queue->items);
// Now fix indexes
for(i = 0; i < queue->count; i++) {
queue->items[i].index = i;
}
}
void _queueDelayUpdate(queue_t *queue, queueaction_t *action, uint8_t i) {
float n = queue->timeline - queue->actionStarted;

View File

@ -7,6 +7,7 @@
#pragma once
#include <dawn/dawn.h>
#include "../../util/array.h"
/**
* Initialize the queue set.
@ -41,10 +42,17 @@ void queueUpdate(queue_t *queue, engine_t *engine);
*/
void queueDispose(queue_t *queue);
/**
* Restacks the queue. The restack process essentially rewinds the queue so that
* the current items move back to position 0, and allows you to add more items
* to the queue again.
*
* @param queue Queue to restack.
*/
void queueRestack(queue_t *queue);
/** Callbacks for Queue Delay Action */
void _queueDelayUpdate(queue_t *queue, queueaction_t *action, uint8_t i);
/**
* Adds a delay action to a queue.
* @param queue Queue to add to.