Example #1
0
bool IsPointOK_RoadPath(const GameWorldBase& gwb, const MapPoint pt, const unsigned char  /*dir*/, const void* param)
{
    const Param_RoadPath* prp = static_cast<const Param_RoadPath*>(param);

    // Auch auf unserem Territorium?
    if(!gwb.IsPlayerTerritory(pt))
        return false;

    // Feld bebaubar?
    if(!gwb.IsRoadAvailable(prp->boat_road, pt))
        return false;

    return true;
}
Example #2
0
/// Abbruch-Bedingungen für freien Pfad für Menschen
bool IsPointOK_TradePath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Feld passierbar?
    noBase::BlockingManner bm = gwb.GetNO(pt)->GetBM();
    if(bm != noBase::BM_NOTBLOCKING && bm != noBase::BM_TREE && bm != noBase::BM_FLAG)
        return false;


    unsigned char player = gwb.GetNode(pt).owner;
    // Ally or no player? Then ok
    if(player == 0 || gwb.GetPlayer(*((unsigned char*)param)).IsAlly(player - 1))
        return true;
    else
        return false;
}
Example #3
0
/// Abbruch-Bedingungen für Straßenbau-Pathfinding for comfort road construction with a possible flag every 2 steps
bool IsPointOK_RoadPathEvenStep(const GameWorldBase& gwb, const MapPoint pt, const unsigned char  /*dir*/, const void* param)
{
    const Param_RoadPath* prp = static_cast<const Param_RoadPath*>(param);

    // Auch auf unserem Territorium?
    if(!gwb.IsPlayerTerritory(pt))
        return false;

    // Feld bebaubar?
    if(!gwb.RoadAvailable(prp->boat_road, pt))
        return false;
	if(!prp->boat_road && (gwb.CalcBQ(pt, gwb.GetNode(pt).owner-1, true, false) != BQ_FLAG))
		return false;	

    return true;
}
Example #4
0
/// Zusätzliche Abbruch-Bedingungen für freien Pfad für Schiffe,  die auch bei der letzen Kante
/// zum Ziel eingehalten werden müssen
bool IsPointToDestOK_ShipPath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Der Übergang muss immer aus Wasser sein zu beiden Seiten
    if(TerrainData::IsUsableByShip(gwb.GetWalkingTerrain1(pt,  (dir + 3) % 6)) && TerrainData::IsUsableByShip(gwb.GetWalkingTerrain2(pt,  (dir + 3) % 6)))
        return true;
    else
        return false;
}
Example #5
0
/// Zusätzliche Abbruch-Bedingungen für freien Pfad für Menschen,  die auch bei der letzen Kante
/// zum Ziel eingehalten werden müssen
bool IsPointToDestOK_HumanPath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Feld passierbar?
    // Nicht über Wasser,  Lava,  Sümpfe gehen
    if(!gwb.IsNodeToNodeForFigure(pt,  (dir + 3) % 6))
        return false;

    return true;
}
Example #6
0
/// Abbruch-Bedingungen für freien Pfad für Menschen
bool IsPointOK_HumanPath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Feld passierbar?
    noBase::BlockingManner bm = gwb.GetNO(pt)->GetBM();
    if(bm != noBase::BM_NOTBLOCKING && bm != noBase::BM_TREE && bm != noBase::BM_FLAG)
        return false;

    return true;
}
Example #7
0
/// Abbruch-Bedingungen für freien Pfad für Schiffe
bool IsPointOK_ShipPath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Ein Meeresfeld?
    for(unsigned i = 0; i < 6; ++i)
    {
        if(!TerrainData::IsUsableByShip(gwb.GetTerrainAround(pt,  i)))
            return false;
    }

    return true;
}
Example #8
0
bool IsPointToDestOK_TradePath(const GameWorldBase& gwb,  const MapPoint pt,  const unsigned char dir,  const void* param)
{
    // Feld passierbar?
    // Nicht über Wasser,  Lava,  Sümpfe gehen
    if(!gwb.IsNodeToNodeForFigure(pt,  (dir + 3) % 6))
        return false;

    // Not trough hostile territory?
    unsigned char old_player = gwb.GetNode(gwb.GetNeighbour(pt,  (dir + 3) % 6)).owner, 
                  new_player = gwb.GetNode(pt).owner;
    // Ally or no player? Then ok
    if(new_player == 0 || gwb.GetPlayer(*((unsigned char*)param)).IsAlly(new_player - 1))
        return true;
    else
    {
        // Old player also evil?
        if(old_player != 0 && !gwb.GetPlayer(*((unsigned char*)param)).IsAlly(old_player - 1))
            return true;
        else
            return false;
    }
}