コード例 #1
0
ファイル: terrain.c プロジェクト: johnh530/electro
void recv_create_terrain(void)
{
    int i;

    if ((i = new_terrain()))
    {
        char filename[MAXSTR];

        int w = recv_value();
        int h = recv_value();
        int n = recv_value();
        int m = recv_value();
        int l = recv_value();

        recv_array(filename, l + 1, 1);

        /* HACK: Clients load data from disk instead of broadcast. */

        if (load_terrain(i, filename, w, h))
        {
            terrain[i].count = 1;
            terrain[i].w     = w;
            terrain[i].h     = h;
            terrain[i].n     = n;
            terrain[i].m     = m;
            terrain[i].o     = 3396000;
            terrain[i].bias  = DEFAULT_BIAS;
            terrain[i].magn  = DEFAULT_MAGN;

            /* Encapsulate this object in an entity. */

            recv_create_entity();
        }
    }
}
コード例 #2
0
ファイル: terrain.c プロジェクト: johnh530/electro
static unsigned int new_terrain(void)
{
    unsigned int i;
    void        *v;

    if ((i = vec_add(terrain, sizeof (struct terrain))))
    {
        memset(terrain +i, 0, sizeof (struct terrain));
        return i;
    }

    if ((v = vec_gro(terrain, sizeof (struct terrain))))
    {
        terrain = (struct terrain *) v;
        return new_terrain();
    }
    return 0;
}
コード例 #3
0
ファイル: map.cpp プロジェクト: Yossarian/WesnothAddonServer
bool gamemap::try_merge_terrains(const t_translation::t_terrain terrain) {

	if(tcodeToTerrain_.count(terrain) == 0) {
		const std::map<t_translation::t_terrain, terrain_type>::const_iterator base_iter =
			tcodeToTerrain_.find(t_translation::t_terrain(terrain.base, t_translation::NO_LAYER));
		const std::map<t_translation::t_terrain, terrain_type>::const_iterator overlay_iter =
			tcodeToTerrain_.find(t_translation::t_terrain(t_translation::NO_LAYER, terrain.overlay));

		if(base_iter == tcodeToTerrain_.end() || overlay_iter == tcodeToTerrain_.end()) {
			return false;
		}

		terrain_type new_terrain(base_iter->second, overlay_iter->second);
		terrainList_.push_back(new_terrain.number());
		tcodeToTerrain_.insert(std::pair<t_translation::t_terrain, terrain_type>(
								   new_terrain.number(), new_terrain));
		return true;
	}
	return true; // Terrain already exists, nothing to do
}
コード例 #4
0
ファイル: terrain.c プロジェクト: johnh530/electro
int send_create_terrain(const char *filename, int w, int h, int n)
{
    int l = strlen(filename);
    int i;

    if ((i = new_terrain()))
    {
        /* If the file exists and is successfully loaded... */

        if (load_terrain(i, filename, w, h))
        {
            terrain[i].count = 1;
            terrain[i].w     = w;
            terrain[i].h     = h;
            terrain[i].n     = n;
            terrain[i].m     = DEFAULT_SIZE;
            terrain[i].o     = 3396000;
            terrain[i].bias  = DEFAULT_BIAS;
            terrain[i].magn  = DEFAULT_MAGN;

            /* Pack the header and data. */

            send_event(EVENT_CREATE_TERRAIN);
            send_value(terrain[i].w);
            send_value(terrain[i].h);
            send_value(terrain[i].n);
            send_value(terrain[i].m);

            send_value(l);
            send_array(filename, l + 1, 1);

            /* Encapsulate this object in an entity. */

            return send_create_entity(TYPE_TERRAIN, i);
        }
    }
    return -1;
}