src/signs_base.h
author bjarni
Thu, 19 Jun 2008 17:54:23 +0000
changeset 9561 f236daaaf93a
parent 9388 27b62a221d24
child 10207 c291a21b304e
permissions -rw-r--r--
(svn r13584) -Fix: [OSX] Fixed issue where 10.5 failed to switch to fullscreen
This is done by selecting the 32bpp-anim blitter by default as it seems Apple removed some 8bpp support
Since this is done at runtime the same binary will still select 8bpp on 10.3 and 10.4
8790
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     1
/* $Id$ */
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     2
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     3
/** @file signs_base.h Base class for signs. */
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     4
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     5
#ifndef SIGNS_BASE_H
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     6
#define SIGNS_BASE_H
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     7
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
     8
#include "signs_type.h"
9129
a7b713cb0422 (svn r12989) -Codechange: move ViewportSign to viewport_type.h.
rubidium
parents: 8790
diff changeset
     9
#include "viewport_type.h"
8790
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    10
#include "oldpool.h"
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    11
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    12
DECLARE_OLD_POOL(Sign, Sign, 2, 16000)
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    13
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    14
struct Sign : PoolItem<Sign, SignID, &_Sign_pool> {
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    15
	char *name;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    16
	ViewportSign sign;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    17
	int32        x;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    18
	int32        y;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    19
	byte         z;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    20
	PlayerByte   owner; // placed by this player. Anyone can delete them though. OWNER_NONE for gray signs from old games.
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    21
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    22
	/**
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    23
	 * Creates a new sign
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    24
	 */
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    25
	Sign(PlayerID owner = INVALID_PLAYER);
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    26
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    27
	/** Destroy the sign */
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    28
	~Sign();
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    29
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    30
	inline bool IsValid() const { return this->owner != INVALID_PLAYER; }
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    31
};
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    32
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    33
static inline SignID GetMaxSignIndex()
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    34
{
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    35
	/* TODO - This isn't the real content of the function, but
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    36
	 *  with the new pool-system this will be replaced with one that
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    37
	 *  _really_ returns the highest index. Now it just returns
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    38
	 *  the next safe value we are sure about everything is below.
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    39
	 */
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    40
	return GetSignPoolSize() - 1;
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    41
}
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    42
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    43
static inline bool IsValidSignID(uint index)
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    44
{
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    45
	return index < GetSignPoolSize() && GetSign(index)->IsValid();
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    46
}
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    47
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    48
#define FOR_ALL_SIGNS_FROM(ss, start) for (ss = GetSign(start); ss != NULL; ss = (ss->index + 1U < GetSignPoolSize()) ? GetSign(ss->index + 1U) : NULL) if (ss->IsValid())
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    49
#define FOR_ALL_SIGNS(ss) FOR_ALL_SIGNS_FROM(ss, 0)
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    50
4a7a796b3976 (svn r12501) -Codechange: split signs.h.
rubidium
parents:
diff changeset
    51
#endif /* SIGNS_BASE_H */