Skip to content

Commit

Permalink
Add: New RoadType API functions.
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterN committed Apr 13, 2019
1 parent 0b44f9b commit fd79ad8
Show file tree
Hide file tree
Showing 18 changed files with 166 additions and 0 deletions.
2 changes: 2 additions & 0 deletions projects/openttd_vs140.vcxproj
Expand Up @@ -1093,6 +1093,7 @@
<ClInclude Include="..\src\script\api\script_rail.hpp" />
<ClInclude Include="..\src\script\api\script_railtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_road.hpp" />
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_sign.hpp" />
<ClInclude Include="..\src\script\api\script_signlist.hpp" />
<ClInclude Include="..\src\script\api\script_station.hpp" />
Expand Down Expand Up @@ -1159,6 +1160,7 @@
<ClCompile Include="..\src\script\api\script_rail.cpp" />
<ClCompile Include="..\src\script\api\script_railtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_road.cpp" />
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_sign.cpp" />
<ClCompile Include="..\src\script\api\script_signlist.cpp" />
<ClCompile Include="..\src\script\api\script_station.cpp" />
Expand Down
6 changes: 6 additions & 0 deletions projects/openttd_vs140.vcxproj.filters
Expand Up @@ -2367,6 +2367,9 @@
<ClInclude Include="..\src\script\api\script_road.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_sign.hpp">
<Filter>Script API</Filter>
</ClInclude>
Expand Down Expand Up @@ -2565,6 +2568,9 @@
<ClCompile Include="..\src\script\api\script_road.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_sign.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
Expand Down
2 changes: 2 additions & 0 deletions projects/openttd_vs141.vcxproj
Expand Up @@ -1093,6 +1093,7 @@
<ClInclude Include="..\src\script\api\script_rail.hpp" />
<ClInclude Include="..\src\script\api\script_railtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_road.hpp" />
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_sign.hpp" />
<ClInclude Include="..\src\script\api\script_signlist.hpp" />
<ClInclude Include="..\src\script\api\script_station.hpp" />
Expand Down Expand Up @@ -1159,6 +1160,7 @@
<ClCompile Include="..\src\script\api\script_rail.cpp" />
<ClCompile Include="..\src\script\api\script_railtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_road.cpp" />
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_sign.cpp" />
<ClCompile Include="..\src\script\api\script_signlist.cpp" />
<ClCompile Include="..\src\script\api\script_station.cpp" />
Expand Down
6 changes: 6 additions & 0 deletions projects/openttd_vs141.vcxproj.filters
Expand Up @@ -2367,6 +2367,9 @@
<ClInclude Include="..\src\script\api\script_road.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_sign.hpp">
<Filter>Script API</Filter>
</ClInclude>
Expand Down Expand Up @@ -2565,6 +2568,9 @@
<ClCompile Include="..\src\script\api\script_road.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_sign.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
Expand Down
2 changes: 2 additions & 0 deletions projects/openttd_vs142.vcxproj
Expand Up @@ -1093,6 +1093,7 @@
<ClInclude Include="..\src\script\api\script_rail.hpp" />
<ClInclude Include="..\src\script\api\script_railtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_road.hpp" />
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp" />
<ClInclude Include="..\src\script\api\script_sign.hpp" />
<ClInclude Include="..\src\script\api\script_signlist.hpp" />
<ClInclude Include="..\src\script\api\script_station.hpp" />
Expand Down Expand Up @@ -1159,6 +1160,7 @@
<ClCompile Include="..\src\script\api\script_rail.cpp" />
<ClCompile Include="..\src\script\api\script_railtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_road.cpp" />
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp" />
<ClCompile Include="..\src\script\api\script_sign.cpp" />
<ClCompile Include="..\src\script\api\script_signlist.cpp" />
<ClCompile Include="..\src\script\api\script_station.cpp" />
Expand Down
6 changes: 6 additions & 0 deletions projects/openttd_vs142.vcxproj.filters
Expand Up @@ -2367,6 +2367,9 @@
<ClInclude Include="..\src\script\api\script_road.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_roadtypelist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_sign.hpp">
<Filter>Script API</Filter>
</ClInclude>
Expand Down Expand Up @@ -2565,6 +2568,9 @@
<ClCompile Include="..\src\script\api\script_road.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_roadtypelist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_sign.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
Expand Down
2 changes: 2 additions & 0 deletions source.list
Expand Up @@ -826,6 +826,7 @@ script/api/script_order.hpp
script/api/script_rail.hpp
script/api/script_railtypelist.hpp
script/api/script_road.hpp
script/api/script_roadtypelist.hpp
script/api/script_sign.hpp
script/api/script_signlist.hpp
script/api/script_station.hpp
Expand Down Expand Up @@ -894,6 +895,7 @@ script/api/script_order.cpp
script/api/script_rail.cpp
script/api/script_railtypelist.cpp
script/api/script_road.cpp
script/api/script_roadtypelist.cpp
script/api/script_sign.cpp
script/api/script_signlist.cpp
script/api/script_station.cpp
Expand Down
2 changes: 2 additions & 0 deletions src/ai/ai_instance.cpp
Expand Up @@ -62,6 +62,7 @@
#include "../script/api/ai/ai_rail.hpp.sq"
#include "../script/api/ai/ai_railtypelist.hpp.sq"
#include "../script/api/ai/ai_road.hpp.sq"
#include "../script/api/ai/ai_roadtypelist.hpp.sq"
#include "../script/api/ai/ai_sign.hpp.sq"
#include "../script/api/ai/ai_signlist.hpp.sq"
#include "../script/api/ai/ai_station.hpp.sq"
Expand Down Expand Up @@ -167,6 +168,7 @@ void AIInstance::RegisterAPI()
SQAIRail_Register(this->engine);
SQAIRailTypeList_Register(this->engine);
SQAIRoad_Register(this->engine);
SQAIRoadTypeList_Register(this->engine);
SQAISign_Register(this->engine);
SQAISignList_Register(this->engine);
SQAIStation_Register(this->engine);
Expand Down
2 changes: 2 additions & 0 deletions src/game/game_instance.cpp
Expand Up @@ -64,6 +64,7 @@
#include "../script/api/game/game_rail.hpp.sq"
#include "../script/api/game/game_railtypelist.hpp.sq"
#include "../script/api/game/game_road.hpp.sq"
#include "../script/api/game/game_roadtypelist.hpp.sq"
#include "../script/api/game/game_sign.hpp.sq"
#include "../script/api/game/game_signlist.hpp.sq"
#include "../script/api/game/game_station.hpp.sq"
Expand Down Expand Up @@ -174,6 +175,7 @@ void GameInstance::RegisterAPI()
SQGSRail_Register(this->engine);
SQGSRailTypeList_Register(this->engine);
SQGSRoad_Register(this->engine);
SQGSRoadTypeList_Register(this->engine);
SQGSSign_Register(this->engine);
SQGSSignList_Register(this->engine);
SQGSStation_Register(this->engine);
Expand Down
1 change: 1 addition & 0 deletions src/script/api/ai/ai_road.hpp.sq
Expand Up @@ -86,6 +86,7 @@ void SQAIRoad_Register(Squirrel *engine)
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::RemoveRoadDepot, "RemoveRoadDepot", 2, ".i");
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::RemoveRoadStation, "RemoveRoadStation", 2, ".i");
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::GetBuildCost, "GetBuildCost", 3, ".ii");
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::IsRoadTypeTram, "IsRoadTypeTram", 2, ".i");
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::GetMaxSpeed, "GetMaxSpeed", 2, ".i");
SQAIRoad.DefSQStaticMethod(engine, &ScriptRoad::GetMaintenanceCostFactor, "GetMaintenanceCostFactor", 2, ".i");

Expand Down
25 changes: 25 additions & 0 deletions src/script/api/ai/ai_roadtypelist.hpp.sq
@@ -0,0 +1,25 @@
/* $Id$ */

/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */

#include "../script_roadtypelist.hpp"
#include "../template/template_roadtypelist.hpp.sq"


template <> const char *GetClassName<ScriptRoadTypeList, ST_AI>() { return "AIRoadTypeList"; }

void SQAIRoadTypeList_Register(Squirrel *engine)
{
DefSQClass<ScriptRoadTypeList, ST_AI> SQAIRoadTypeList("AIRoadTypeList");
SQAIRoadTypeList.PreRegister(engine, "AIList");
SQAIRoadTypeList.AddConstructor<void (ScriptRoadTypeList::*)(), 1>(engine, "x");

SQAIRoadTypeList.PostRegister(engine);
}
1 change: 1 addition & 0 deletions src/script/api/game/game_road.hpp.sq
Expand Up @@ -86,6 +86,7 @@ void SQGSRoad_Register(Squirrel *engine)
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::RemoveRoadDepot, "RemoveRoadDepot", 2, ".i");
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::RemoveRoadStation, "RemoveRoadStation", 2, ".i");
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::GetBuildCost, "GetBuildCost", 3, ".ii");
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::IsRoadTypeTram, "IsRoadTypeTram", 2, ".i");
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::GetMaxSpeed, "GetMaxSpeed", 2, ".i");
SQGSRoad.DefSQStaticMethod(engine, &ScriptRoad::GetMaintenanceCostFactor, "GetMaintenanceCostFactor", 2, ".i");

Expand Down
25 changes: 25 additions & 0 deletions src/script/api/game/game_roadtypelist.hpp.sq
@@ -0,0 +1,25 @@
/* $Id$ */

/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */

#include "../script_roadtypelist.hpp"
#include "../template/template_roadtypelist.hpp.sq"


template <> const char *GetClassName<ScriptRoadTypeList, ST_GS>() { return "GSRoadTypeList"; }

void SQGSRoadTypeList_Register(Squirrel *engine)
{
DefSQClass<ScriptRoadTypeList, ST_GS> SQGSRoadTypeList("GSRoadTypeList");
SQGSRoadTypeList.PreRegister(engine, "GSList");
SQGSRoadTypeList.AddConstructor<void (ScriptRoadTypeList::*)(), 1>(engine, "x");

SQGSRoadTypeList.PostRegister(engine);
}
5 changes: 5 additions & 0 deletions src/script/api/script_road.cpp
Expand Up @@ -626,6 +626,11 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
}
}

/* static */ bool ScriptRoad::IsRoadTypeTram(RoadType roadtype)
{
return ::RoadTypeIsTram((::RoadType)roadtype);
}

/* static */ int32 ScriptRoad::GetMaxSpeed(RoadType road_type)
{
if (!ScriptRoad::IsRoadTypeAvailable(road_type)) return 0;
Expand Down
7 changes: 7 additions & 0 deletions src/script/api/script_road.hpp
Expand Up @@ -537,6 +537,13 @@ class ScriptRoad : public ScriptObject {
*/
static Money GetBuildCost(RoadType roadtype, BuildType build_type);

/**
* Test if a road type is for trams.
* @param roadtype the roadtype to test.
* @return True if the road type is for trams.
*/
static bool IsRoadTypeTram(RoadType roadtype);

/**
* Get the maximum speed of road vehicles running on this roadtype.
* @param road_type The roadtype to get the maximum speed of.
Expand Down
23 changes: 23 additions & 0 deletions src/script/api/script_roadtypelist.cpp
@@ -0,0 +1,23 @@
/* $Id$ */

/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

/** @file script_roadtypelist.cpp Implementation of ScriptRoadTypeList and friends. */

#include "../../stdafx.h"
#include "script_roadtypelist.hpp"
#include "../../road_func.h"

#include "../../safeguards.h"

ScriptRoadTypeList::ScriptRoadTypeList()
{
for (RoadType rt = ROADTYPE_BEGIN; rt != ROADTYPE_END; rt++) {
if (ScriptObject::GetCompany() == OWNER_DEITY || ::HasRoadTypeAvail(ScriptObject::GetCompany(), rt)) this->AddItem(rt);
}
}
28 changes: 28 additions & 0 deletions src/script/api/script_roadtypelist.hpp
@@ -0,0 +1,28 @@
/* $Id$ */

/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

/** @file script_roadtypelist.hpp List all available roadtypes. */

#ifndef SCRIPT_ROADTYPELIST_HPP
#define SCRIPT_ROADTYPELIST_HPP

#include "script_list.hpp"
#include "script_road.hpp"

/**
* Creates a list of all available roadtypes.
* @api ai game
* @ingroup ScriptList
*/
class ScriptRoadTypeList : public ScriptList {
public:
ScriptRoadTypeList();
};

#endif /* SCRIPT_ROADTYPELIST_HPP */
21 changes: 21 additions & 0 deletions src/script/api/template/template_roadtypelist.hpp.sq
@@ -0,0 +1,21 @@
/* $Id$ */

/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/

/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */

#include "../script_roadtypelist.hpp"

namespace SQConvert {
/* Allow ScriptRoadTypeList to be used as Squirrel parameter */
template <> inline ScriptRoadTypeList *GetParam(ForceType<ScriptRoadTypeList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptRoadTypeList *)instance; }
template <> inline ScriptRoadTypeList &GetParam(ForceType<ScriptRoadTypeList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptRoadTypeList *)instance; }
template <> inline const ScriptRoadTypeList *GetParam(ForceType<const ScriptRoadTypeList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (ScriptRoadTypeList *)instance; }
template <> inline const ScriptRoadTypeList &GetParam(ForceType<const ScriptRoadTypeList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(ScriptRoadTypeList *)instance; }
template <> inline int Return<ScriptRoadTypeList *>(HSQUIRRELVM vm, ScriptRoadTypeList *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "RoadTypeList", res, nullptr, DefSQDestructorCallback<ScriptRoadTypeList>, true); return 1; }
} // namespace SQConvert

0 comments on commit fd79ad8

Please sign in to comment.