summaryrefslogtreecommitdiff
path: root/lib/src/turns-turn-order.h
blob: 3b0552116cf378ade796955e3a58f26540e9977e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#ifndef TURNS_TURN_ORDER_H
#define TURNS_TURN_ORDER_H

#include "turns-participant.h"

#include <glib-object.h>
#include <glib.h>

G_BEGIN_DECLS

typedef enum
{
  /**
   * @brief Sorting is in descending order.
   * @since 1.0.0
   */
  TURNS_TURN_ORDER_SORT_MODE_DESCENDING,

  /**
   * @brief Sorting is in ascending order.
   * @since 1.0.0
   */
  TURNS_TURN_ORDER_SORT_MODE_ASCENDING,
} TurnsTurnOrderSortMode;

GType turns_turn_order_sort_mode_get_type(void) G_GNUC_CONST;
#define TURNS_TYPE_TURN_ORDER_SORT_MODE (turns_turn_order_sort_mode_get_type())

#define TURNS_TYPE_TURN_ORDER turns_turn_order_get_type()
G_DECLARE_FINAL_TYPE(TurnsTurnOrder, turns_turn_order, TURNS, TURN_ORDER, GObject)

/**
 * @class TurnsTurnOrder turns-turn-order.h "turns-turn-order.h"
 * @since 1.0.0
 * @brief Manages the order of turns for a given set of participants.
 */

/**
 * @brief Creates a new turn order.
 * @since 1.0.0
 *
 * @return A new @p Turns.TurnOrder
 */
TurnsTurnOrder * turns_turn_order_new(void) G_GNUC_WARN_UNUSED_RESULT;

/**
 * @brief Adds a participant to the turn order.
 * @since 1.0.0
 *
 * @param participant The participant to be added.
 *
 * @note (transfer none) - The data is owned by the caller of the method.
 */
void turns_turn_order_add(TurnsTurnOrder * self, TurnsParticipant * participant);

/**
 * @brief Gets the number of participants in the turn order.
 * @since 1.0.0
 *
 * @return The current number of participants in the turn order.
 */
gsize turns_turn_order_get_participant_count(TurnsTurnOrder const * self) G_GNUC_WARN_UNUSED_RESULT;

/**
 * @brief Gets whether the turn order is currently running.
 * @since 1.0.0
 *
 * @return The current value of the @p Turns.TurnOrder:running property.
 */
gboolean turns_turn_order_get_running(TurnsTurnOrder const * self) G_GNUC_WARN_UNUSED_RESULT;

/**
 * @brief Gets the current sort mode of the turn order.
 * @since 1.0.0
 *
 * @return The current value of the @p Turns.TurnOrder:sort-mode property.
 */
TurnsTurnOrderSortMode turns_turn_order_get_sort_mode(TurnsTurnOrder const * self) G_GNUC_WARN_UNUSED_RESULT;

/**
 * @brief Sets whether to sort lower priorities before larger ones.
 * @since 1.0.0
 *
 * Sets property @p Turns.TurnOrder:sort-mode
 *
 * @param sort_mode Whether to sort smaller priorities first.
 */
void turns_turn_order_set_sort_mode(TurnsTurnOrder * self, TurnsTurnOrderSortMode sort_mode);

G_END_DECLS

#endif