yapf/yapf_common.cpp
author KUDr
Mon, 01 Jan 2007 19:44:02 +0000
branchcustombridgeheads
changeset 5626 1811beeb472f
parent 5621 6ce400c0a2f4
permissions -rw-r--r--
(svn r7728) -Codechange: [YAPF] added some YAPF debug messages plus 2 new files (string class)
/* $Id$ */

#include "../stdafx.h"

#include "yapf.hpp"
#include "follow_track.hpp"
#include "yapf_node_rail.hpp"
#include "yapf_costbase.hpp"
#include "yapf_costcache.hpp"

/** translate tileh to the bitset of up-hill trackdirs */
const TrackdirBits CYapfCostBase::c_upwards_slopes[] = {
	TRACKDIR_BIT_NONE                    , // no tileh
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, // 1
	TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, // 2
	TRACKDIR_BIT_X_SW                    , // 3
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, // 4
	TRACKDIR_BIT_NONE                    , // 5
	TRACKDIR_BIT_Y_SE                    , // 6
	TRACKDIR_BIT_NONE                    , // 7
	TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, // 8,
	TRACKDIR_BIT_Y_NW                    , // 9
	TRACKDIR_BIT_NONE                    , //10
	TRACKDIR_BIT_NONE                    , //11,
	TRACKDIR_BIT_X_NE                    , //12
	TRACKDIR_BIT_NONE                    , //13
	TRACKDIR_BIT_NONE                    , //14
	TRACKDIR_BIT_NONE                    , //15
};

const char* GetTrackdirName(Trackdir td)
{
	static const char * const td_names[] = {
		"INVALID_TRACKDIR",
		"X_NE",
		"Y_SE",
		"UPPER_E",
		"LOWER_E",
		"LEFT_S",
		"RIGHT_S",
		"<6>",
		"<7>",
		"X_SW",
		"Y_NW",
		"UPPER_W",
		"LOWER_W",
		"LEFT_N",
		"RIGHT_N",
		"TRACKDIR_END"
	};
	if (((int)td <= (int)TRACKDIR_END)) {
		int idx = ((int8)td) + 1;
		return td_names[idx];
	}
	return "<invalid value>";
}

CStrA GetTrackdirBitsName(TrackdirBits td_bits)
{
	CStrA name;
	for(int tdb = td_bits; tdb != 0; tdb = KillFirstBit2x64(tdb)) {
		name.Format("%s%s", name.Size() > 0 ? "+" : "", GetTrackdirName((Trackdir)FindFirstBit2x64(tdb)));
	}
	return name.Transfer();
}