mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-12 17:19:09 +00:00
Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
995b1b04b9 | ||
|
bcfc0ec957 | ||
|
5702b3951c | ||
|
491b3e3efc | ||
|
2759e32451 | ||
|
d3c41a9d0e | ||
|
3cd96a459b | ||
|
1d18ef48a4 | ||
|
a6e95ace5c | ||
|
c57b316570 | ||
|
b720a16a1c | ||
|
7a0b2bff18 | ||
|
34bff06d8a | ||
|
be4eae9456 | ||
|
f8b956bc2c | ||
|
42c7cb38fa | ||
|
9d2f06c42c | ||
|
0c2be35fa1 | ||
|
80a3b5e78f | ||
|
8ca5334562 |
@@ -172,7 +172,6 @@ install: bundle
|
||||
$(Q)install -d "$(INSTALL_BINARY_DIR)"
|
||||
$(Q)install -d "$(INSTALL_ICON_DIR)"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/ai"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/game"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/baseset"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/lang"
|
||||
$(Q)install -d "$(INSTALL_DATA_DIR)/scripts"
|
||||
@@ -183,7 +182,6 @@ else
|
||||
endif
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/ai/"* "$(INSTALL_DATA_DIR)/ai"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/game/"* "$(INSTALL_DATA_DIR)/game"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/baseset/"* "$(INSTALL_DATA_DIR)/baseset"
|
||||
$(Q)install -m 644 "$(BUNDLE_DIR)/scripts/"* "$(INSTALL_DATA_DIR)/scripts"
|
||||
ifndef DO_NOT_INSTALL_DOCS
|
||||
|
@@ -75,10 +75,10 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
|
||||
|
||||
# Compile extra grf
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
|
||||
$(E) '$(STAGE) Assembling openttd.nfo'
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(E) '$(STAGE) Compiling openttd.grf'
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
|
||||
|
@@ -43,23 +43,23 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang )
|
||||
|
||||
all: table/strings.h $(LANGS)
|
||||
|
||||
strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h
|
||||
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
|
@@ -28,23 +28,23 @@ endif
|
||||
|
||||
all: table/settings.h
|
||||
|
||||
settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp $(SRC_DIR)/safeguards.h
|
||||
settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $(SRC_DIR)/strings_type.h $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/ini_type.h $(SRC_DIR)/core/smallvec_type.hpp
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_DIR)/safeguards.h
|
||||
getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
|
||||
string.o: $(SRC_DIR)/string.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h $(SRC_DIR)/safeguards.h
|
||||
ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
|
||||
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("0.7 API compatibility in effect:");
|
||||
AILog.Info("0.7 API compatability in effect:");
|
||||
AILog.Info(" - AITown::GetLastMonthProduction's behaviour has slightly changed.");
|
||||
AILog.Info(" - AISubsidy::GetDestination returns STATION_INVALID for awarded subsidies.");
|
||||
AILog.Info(" - AISubsidy::GetSource returns STATION_INVALID for awarded subsidies.");
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.0 API compatibility in effect.");
|
||||
AILog.Info("1.0 API compatability in effect.");
|
||||
|
||||
AIRoad._BuildRoadStation <- AIRoad.BuildRoadStation;
|
||||
AIRoad.BuildRoadStation <- function(tile, front, road_veh_type, station_id)
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.1 API compatibility in effect.");
|
||||
AILog.Info("1.1 API compatability in effect.");
|
||||
|
||||
AICompany.GetCompanyValue <- function(company)
|
||||
{
|
||||
|
@@ -7,4 +7,4 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.2 API compatibility in effect.");
|
||||
AILog.Info("1.2 API compatability in effect.");
|
||||
|
@@ -7,4 +7,4 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.3 API compatibility in effect.");
|
||||
AILog.Info("1.3 API compatability in effect.");
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$ */
|
||||
/* $Id: compat_1.3.nut 23969 2012-02-19 19:14:17Z rubidium $ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
@@ -6,5 +6,3 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.4 API compatibility in effect.");
|
||||
|
@@ -1,8 +0,0 @@
|
||||
/* $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/>.
|
||||
*/
|
@@ -2,12 +2,12 @@
|
||||
|
||||
# $Id$
|
||||
|
||||
if ! [ -f ai/regression/completeness.sh ]; then
|
||||
if ! [ -f ai/regression/regression.nut ]; then
|
||||
echo "Make sure you are in the root of OpenTTD before starting this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk '
|
||||
cat ai/regression/regression.nut | tr ';' '\n' | awk '
|
||||
/^function/ {
|
||||
for (local in locals) {
|
||||
delete locals[local]
|
||||
@@ -61,7 +61,7 @@ cat ai/regression/tst_*/main.nut | tr ';' '\n' | awk '
|
||||
}
|
||||
' | sed 's/ //g' | sort | uniq > tmp.in_regression
|
||||
|
||||
grep 'DefSQ.*Method' ../src/script/api/ai/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
|
||||
grep 'DefSQ.*Method' ../src/ai/api/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
|
||||
|
||||
diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//'
|
||||
|
||||
|
@@ -972,7 +972,48 @@ function Regression::Order()
|
||||
print(" SetStopLocation(): " + AIOrder.SetStopLocation(20, 0, AIOrder.STOPLOCATION_MIDDLE));
|
||||
print(" GetStopLocation(): " + AIOrder.GetStopLocation(20, 0));
|
||||
|
||||
local list = AIVehicleList_Station(3);
|
||||
local list = AIStationList_Vehicle(12);
|
||||
|
||||
print("");
|
||||
print("--StationList_Vehicle--");
|
||||
print(" Count(): " + list.Count());
|
||||
list.Valuate(AIStation.GetLocation);
|
||||
print(" Location ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 0);
|
||||
print(" CargoWaiting(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 1);
|
||||
print(" CargoWaiting(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoRating, 1);
|
||||
print(" CargoRating(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetDistanceManhattanToTile, 30000);
|
||||
print(" DistanceManhattanToTile(30000) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
|
||||
print(" DistanceSquareToTile(30000) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.IsWithinTownInfluence, 0);
|
||||
print(" IsWithinTownInfluence(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
|
||||
list = AIVehicleList_Station(3);
|
||||
|
||||
print("");
|
||||
print("--VehicleList_Station--");
|
||||
@@ -1193,6 +1234,10 @@ function Regression::Station()
|
||||
print(" GetLocation(1000): " + AIStation.GetLocation(1000));
|
||||
print(" GetStationID(33411): " + AIStation.GetStationID(33411));
|
||||
print(" GetStationID(34411): " + AIStation.GetStationID(34411));
|
||||
print(" GetCargoWaiting(0, 0): " + AIStation.GetCargoWaiting(0, 0));
|
||||
print(" GetCargoWaiting(1000, 0): " + AIStation.GetCargoWaiting(1000, 0));
|
||||
print(" GetCargoWaiting(0, 1000): " + AIStation.GetCargoWaiting(0, 1000));
|
||||
|
||||
print(" GetStationID(33411): " + AIStation.GetStationID(33411));
|
||||
print(" HasRoadType(3, TRAM): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_TRAM));
|
||||
print(" HasRoadType(3, ROAD): " + AIStation.HasRoadType(3, AIRoad.ROADTYPE_ROAD));
|
||||
@@ -1209,42 +1254,25 @@ function Regression::Station()
|
||||
print(" GetNearestTown(): " + AIStation.GetNearestTown(10000));
|
||||
print(" GetNearestTown(): " + AIStation.GetNearestTown(3));
|
||||
|
||||
print("");
|
||||
print("--CargoWaiting--");
|
||||
for (local cargo = 0; cargo <= 1000; cargo += 1000) {
|
||||
for (local station0 = 0; station0 <= 1000; station0 += 1000) {
|
||||
print(" GetCargoWaiting(" + station0 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoWaiting(station0, cargo));
|
||||
for (local station1 = 0; station1 <= 1000; station1 += 1000) {
|
||||
print(" GetCargoWaitingFrom(" + station0 + ", " + station1 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoWaitingFrom(station0, station1, cargo));
|
||||
print(" GetCargoWaitingVia(" + station0 + ", " + station1 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoWaitingFrom(station0, station1, cargo));
|
||||
for (local station2 = 0; station2 <= 1000; station2 += 1000) {
|
||||
print(" GetCargoWaitingFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoWaitingFromVia(station0, station1, station2, cargo));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP);
|
||||
|
||||
print("");
|
||||
print("--CargoPlanned--");
|
||||
for (local cargo = 0; cargo <= 1000; cargo += 1000) {
|
||||
for (local station0 = 0; station0 <= 1000; station0 += 1000) {
|
||||
print(" GetCargoPlanned(" + station0 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoPlanned(station0, cargo));
|
||||
for (local station1 = 0; station1 <= 1000; station1 += 1000) {
|
||||
print(" GetCargoPlannedFrom(" + station0 + ", " + station1 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoPlannedFrom(station0, station1, cargo));
|
||||
print(" GetCargoPlannedVia(" + station0 + ", " + station1 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoPlannedFrom(station0, station1, cargo));
|
||||
for (local station2 = 0; station2 <= 1000; station2 += 1000) {
|
||||
print(" GetCargoPlannedFromVia(" + station0 + ", " + station1 + ", " + station2 + ", " + cargo + "): " +
|
||||
AIStation.GetCargoPlannedFromVia(station0, station1, station2, cargo));
|
||||
}
|
||||
}
|
||||
}
|
||||
print("--StationList--");
|
||||
print(" Count(): " + list.Count());
|
||||
list.Valuate(AIStation.GetLocation);
|
||||
print(" Location ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 0);
|
||||
print(" CargoWaiting(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 1);
|
||||
print(" CargoWaiting(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
}
|
||||
|
@@ -7487,6 +7487,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetLocation(1000): -1
|
||||
GetStationID(33411): 4
|
||||
GetStationID(34411): 65535
|
||||
GetCargoWaiting(0, 0): 0
|
||||
GetCargoWaiting(1000, 0): -1
|
||||
GetCargoWaiting(0, 1000): -1
|
||||
GetStationID(33411): 4
|
||||
HasRoadType(3, TRAM): false
|
||||
HasRoadType(3, ROAD): false
|
||||
@@ -7501,81 +7504,17 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetNearestTown(): 65535
|
||||
GetNearestTown(): 10
|
||||
|
||||
--CargoWaiting--
|
||||
GetCargoWaiting(0, 0): 0
|
||||
GetCargoWaitingFrom(0, 0, 0): 0
|
||||
GetCargoWaitingVia(0, 0, 0): 0
|
||||
GetCargoWaitingFromVia(0, 0, 0, 0): 0
|
||||
GetCargoWaitingFromVia(0, 0, 1000, 0): -1
|
||||
GetCargoWaitingFrom(0, 1000, 0): -1
|
||||
GetCargoWaitingVia(0, 1000, 0): -1
|
||||
GetCargoWaitingFromVia(0, 1000, 0, 0): -1
|
||||
GetCargoWaitingFromVia(0, 1000, 1000, 0): -1
|
||||
GetCargoWaiting(1000, 0): -1
|
||||
GetCargoWaitingFrom(1000, 0, 0): -1
|
||||
GetCargoWaitingVia(1000, 0, 0): -1
|
||||
GetCargoWaitingFromVia(1000, 0, 0, 0): -1
|
||||
GetCargoWaitingFromVia(1000, 0, 1000, 0): -1
|
||||
GetCargoWaitingFrom(1000, 1000, 0): -1
|
||||
GetCargoWaitingVia(1000, 1000, 0): -1
|
||||
GetCargoWaitingFromVia(1000, 1000, 0, 0): -1
|
||||
GetCargoWaitingFromVia(1000, 1000, 1000, 0): -1
|
||||
GetCargoWaiting(0, 1000): -1
|
||||
GetCargoWaitingFrom(0, 0, 1000): -1
|
||||
GetCargoWaitingVia(0, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(0, 0, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(0, 0, 1000, 1000): -1
|
||||
GetCargoWaitingFrom(0, 1000, 1000): -1
|
||||
GetCargoWaitingVia(0, 1000, 1000): -1
|
||||
GetCargoWaitingFromVia(0, 1000, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(0, 1000, 1000, 1000): -1
|
||||
GetCargoWaiting(1000, 1000): -1
|
||||
GetCargoWaitingFrom(1000, 0, 1000): -1
|
||||
GetCargoWaitingVia(1000, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(1000, 0, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(1000, 0, 1000, 1000): -1
|
||||
GetCargoWaitingFrom(1000, 1000, 1000): -1
|
||||
GetCargoWaitingVia(1000, 1000, 1000): -1
|
||||
GetCargoWaitingFromVia(1000, 1000, 0, 1000): -1
|
||||
GetCargoWaitingFromVia(1000, 1000, 1000, 1000): -1
|
||||
|
||||
--CargoPlanned--
|
||||
GetCargoPlanned(0, 0): 0
|
||||
GetCargoPlannedFrom(0, 0, 0): 0
|
||||
GetCargoPlannedVia(0, 0, 0): 0
|
||||
GetCargoPlannedFromVia(0, 0, 0, 0): 0
|
||||
GetCargoPlannedFromVia(0, 0, 1000, 0): -1
|
||||
GetCargoPlannedFrom(0, 1000, 0): -1
|
||||
GetCargoPlannedVia(0, 1000, 0): -1
|
||||
GetCargoPlannedFromVia(0, 1000, 0, 0): -1
|
||||
GetCargoPlannedFromVia(0, 1000, 1000, 0): -1
|
||||
GetCargoPlanned(1000, 0): -1
|
||||
GetCargoPlannedFrom(1000, 0, 0): -1
|
||||
GetCargoPlannedVia(1000, 0, 0): -1
|
||||
GetCargoPlannedFromVia(1000, 0, 0, 0): -1
|
||||
GetCargoPlannedFromVia(1000, 0, 1000, 0): -1
|
||||
GetCargoPlannedFrom(1000, 1000, 0): -1
|
||||
GetCargoPlannedVia(1000, 1000, 0): -1
|
||||
GetCargoPlannedFromVia(1000, 1000, 0, 0): -1
|
||||
GetCargoPlannedFromVia(1000, 1000, 1000, 0): -1
|
||||
GetCargoPlanned(0, 1000): -1
|
||||
GetCargoPlannedFrom(0, 0, 1000): -1
|
||||
GetCargoPlannedVia(0, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(0, 0, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(0, 0, 1000, 1000): -1
|
||||
GetCargoPlannedFrom(0, 1000, 1000): -1
|
||||
GetCargoPlannedVia(0, 1000, 1000): -1
|
||||
GetCargoPlannedFromVia(0, 1000, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(0, 1000, 1000, 1000): -1
|
||||
GetCargoPlanned(1000, 1000): -1
|
||||
GetCargoPlannedFrom(1000, 0, 1000): -1
|
||||
GetCargoPlannedVia(1000, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(1000, 0, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(1000, 0, 1000, 1000): -1
|
||||
GetCargoPlannedFrom(1000, 1000, 1000): -1
|
||||
GetCargoPlannedVia(1000, 1000, 1000): -1
|
||||
GetCargoPlannedFromVia(1000, 1000, 0, 1000): -1
|
||||
GetCargoPlannedFromVia(1000, 1000, 1000, 1000): -1
|
||||
--StationList--
|
||||
Count(): 2
|
||||
Location ListDump:
|
||||
5 => 33421
|
||||
4 => 33411
|
||||
CargoWaiting(0) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoWaiting(1) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
|
||||
--Tile--
|
||||
HasTreeOnTile(): false
|
||||
@@ -9167,6 +9106,30 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
SetStopLocation(): true
|
||||
GetStopLocation(): 1
|
||||
|
||||
--StationList_Vehicle--
|
||||
Count(): 2
|
||||
Location ListDump:
|
||||
5 => 33421
|
||||
4 => 33411
|
||||
CargoWaiting(0) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoWaiting(1) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoRating(1) ListDump:
|
||||
5 => -1
|
||||
4 => -1
|
||||
DistanceManhattanToTile(30000) ListDump:
|
||||
5 => 106
|
||||
4 => 96
|
||||
DistanceSquareToTile(30000) ListDump:
|
||||
5 => 8818
|
||||
4 => 7058
|
||||
IsWithinTownInfluence(0) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
|
||||
--VehicleList_Station--
|
||||
Count(): 1
|
||||
Location ListDump:
|
@@ -4,9 +4,9 @@ class Regression extends AIInfo {
|
||||
function GetAuthor() { return "OpenTTD NoAI Developers Team"; }
|
||||
function GetName() { return "Regression"; }
|
||||
function GetShortName() { return "REGR"; }
|
||||
function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; }
|
||||
function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; }
|
||||
function GetVersion() { return 1; }
|
||||
function GetAPIVersion() { return "1.5"; }
|
||||
function GetAPIVersion() { return "1.3"; }
|
||||
function GetDate() { return "2007-03-18"; }
|
||||
function CreateInstance() { return "Regression"; }
|
||||
}
|
||||
|
@@ -2,11 +2,14 @@
|
||||
|
||||
# $Id$
|
||||
|
||||
if ! [ -f ai/regression/run.sh ]; then
|
||||
if ! [ -f ai/regression/regression.nut ]; then
|
||||
echo "Make sure you are in the root of OpenTTD before starting this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp ai/regression/regression.nut ai/regression/main.nut
|
||||
cp ai/regression/regression_info.nut ai/regression/info.nut
|
||||
|
||||
if [ -f scripts/game_start.scr ]; then
|
||||
mv scripts/game_start.scr scripts/game_start.scr.regression
|
||||
fi
|
||||
@@ -19,46 +22,27 @@ fi
|
||||
if [ "$1" = "-g" ]; then
|
||||
gdb="gdb --ex run --args "
|
||||
fi
|
||||
|
||||
if [ -d "ai/regression/tst_$1" ]; then
|
||||
tests="ai/regression/tst_$1"
|
||||
elif [ -d "ai/regression/tst_$2" ]; then
|
||||
tests="ai/regression/tst_$2"
|
||||
if [ -n "$gdb" ]; then
|
||||
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav
|
||||
else
|
||||
tests=ai/regression/tst_*
|
||||
./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
|
||||
fi
|
||||
|
||||
ret=0
|
||||
for tst in $tests; do
|
||||
echo -n "Running $tst... "
|
||||
|
||||
# Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused.
|
||||
cp ai/regression/regression_info.nut $tst/info.nut
|
||||
|
||||
sav=$tst/test.sav
|
||||
if ! [ -f $sav ]; then
|
||||
sav=ai/regression/empty.sav
|
||||
fi
|
||||
|
||||
if [ -n "$gdb" ]; then
|
||||
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
|
||||
if [ -z "$gdb" ]; then
|
||||
res="`diff -ub ai/regression/regression.txt tmp.regression`"
|
||||
if [ -z "$res" ]; then
|
||||
echo "Regression test passed!"
|
||||
else
|
||||
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
|
||||
echo "Regression test failed! Difference:"
|
||||
echo "$res"
|
||||
ret=1
|
||||
fi
|
||||
echo ""
|
||||
echo "Regression test done"
|
||||
fi
|
||||
|
||||
if [ -z "$gdb" ]; then
|
||||
res="`diff -ub $tst/result.txt tmp.regression`"
|
||||
if [ -z "$res" ]; then
|
||||
echo "passed!"
|
||||
else
|
||||
echo "failed! Difference:"
|
||||
echo "$res"
|
||||
ret=1
|
||||
fi
|
||||
fi
|
||||
|
||||
rm $tst/info.nut
|
||||
done
|
||||
rm -f ai/regression/main.nut ai/regression/info.nut
|
||||
|
||||
if [ -f scripts/game_start.scr.regression ]; then
|
||||
mv scripts/game_start.scr.regression scripts/game_start.scr
|
||||
|
@@ -1,216 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
class Regression extends AIController {
|
||||
function Start();
|
||||
};
|
||||
|
||||
|
||||
function Regression::StationList()
|
||||
{
|
||||
local list = AIStationList(AIStation.STATION_BUS_STOP + AIStation.STATION_TRUCK_STOP);
|
||||
|
||||
print("");
|
||||
print("--StationList--");
|
||||
print(" Count(): " + list.Count());
|
||||
list.Valuate(AIStation.GetLocation);
|
||||
print(" Location ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 0);
|
||||
print(" CargoWaiting(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 1);
|
||||
print(" CargoWaiting(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_Cargo()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_Cargo--");
|
||||
|
||||
for (local mode = AIStationList_Cargo.CM_WAITING; mode <= AIStationList_Cargo.CM_PLANNED; ++mode) {
|
||||
print(" " + mode);
|
||||
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA ; ++selector) {
|
||||
print(" " + selector);
|
||||
local list = AIStationList_Cargo(mode, selector, 6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoPlanned()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoPlanned--");
|
||||
|
||||
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) {
|
||||
print(" " + selector);
|
||||
local list = AIStationList_CargoPlanned(selector, 6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoPlannedByFrom()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoPlannedByFrom--");
|
||||
local list = AIStationList_CargoPlannedByFrom(2, 0);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoPlannedByVia()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoPlannedByVia--");
|
||||
local list = AIStationList_CargoPlannedByVia(2, 0);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoPlannedViaByFrom()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoPlannedViaByFrom--");
|
||||
local list = AIStationList_CargoPlannedViaByFrom(6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoPlannedFromByVia()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoPlannedFromByVia--");
|
||||
local list = AIStationList_CargoPlannedFromByVia(6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoWaiting()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoWaiting--");
|
||||
|
||||
for (local selector = AIStationList_Cargo.CS_BY_FROM; selector <= AIStationList_Cargo.CS_FROM_BY_VIA; ++selector) {
|
||||
print(" " + selector);
|
||||
local list = AIStationList_CargoWaiting(selector, 6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoWaitingByFrom()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoWaitingByFrom--");
|
||||
local list = AIStationList_CargoWaitingByFrom(2, 0);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoWaitingByVia()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoWaitingByVia--");
|
||||
local list = AIStationList_CargoWaitingByVia(2, 0);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoWaitingViaByFrom()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoWaitingViaByFrom--");
|
||||
local list = AIStationList_CargoWaitingViaByFrom(6, 0, 7);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_CargoWaitingFromByVia()
|
||||
{
|
||||
print("");
|
||||
print("--StationList_CargoWaitingFromByVia--");
|
||||
local list = AIStationList_CargoWaitingFromByVia(2, 0, 2);
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
};
|
||||
|
||||
function Regression::StationList_Vehicle()
|
||||
{
|
||||
local list = AIStationList_Vehicle(12);
|
||||
|
||||
print("");
|
||||
print("--StationList_Vehicle--");
|
||||
print(" Count(): " + list.Count());
|
||||
list.Valuate(AIStation.GetLocation);
|
||||
print(" Location ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 0);
|
||||
print(" CargoWaiting(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoWaiting, 1);
|
||||
print(" CargoWaiting(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetCargoRating, 1);
|
||||
print(" CargoRating(1) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetDistanceManhattanToTile, 30000);
|
||||
print(" DistanceManhattanToTile(30000) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.GetDistanceSquareToTile, 30000);
|
||||
print(" DistanceSquareToTile(30000) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
list.Valuate(AIStation.IsWithinTownInfluence, 0);
|
||||
print(" IsWithinTownInfluence(0) ListDump:");
|
||||
for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
}
|
||||
}
|
||||
|
||||
function Regression::Start()
|
||||
{
|
||||
StationList();
|
||||
StationList_Cargo();
|
||||
StationList_CargoPlanned();
|
||||
StationList_CargoPlannedByFrom();
|
||||
StationList_CargoPlannedByVia();
|
||||
StationList_CargoPlannedViaByFrom();
|
||||
StationList_CargoPlannedFromByVia();
|
||||
StationList_CargoWaiting();
|
||||
StationList_CargoWaitingByFrom();
|
||||
StationList_CargoWaitingByVia();
|
||||
StationList_CargoWaitingViaByFrom();
|
||||
StationList_CargoWaitingFromByVia();
|
||||
StationList_Vehicle();
|
||||
}
|
@@ -1,127 +0,0 @@
|
||||
|
||||
--StationList--
|
||||
Count(): 5
|
||||
Location ListDump:
|
||||
6 => 42341
|
||||
2 => 41831
|
||||
7 => 41825
|
||||
5 => 33421
|
||||
4 => 33411
|
||||
CargoWaiting(0) ListDump:
|
||||
7 => 6
|
||||
6 => 6
|
||||
2 => 3
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoWaiting(1) ListDump:
|
||||
7 => 0
|
||||
6 => 0
|
||||
5 => 0
|
||||
4 => 0
|
||||
2 => 0
|
||||
|
||||
--StationList_Cargo--
|
||||
0
|
||||
0
|
||||
6 => 6
|
||||
1
|
||||
6 => 2
|
||||
2
|
||||
2 => 4
|
||||
7 => 2
|
||||
3
|
||||
1
|
||||
0
|
||||
7 => 18
|
||||
6 => 16
|
||||
2 => 7
|
||||
1
|
||||
6 => 8
|
||||
2 => 3
|
||||
2
|
||||
2 => 16
|
||||
6 => 14
|
||||
7 => 11
|
||||
3
|
||||
6 => 10
|
||||
2 => 8
|
||||
|
||||
--StationList_CargoPlanned--
|
||||
0
|
||||
7 => 18
|
||||
6 => 16
|
||||
2 => 7
|
||||
1
|
||||
6 => 8
|
||||
2 => 3
|
||||
2
|
||||
2 => 16
|
||||
6 => 14
|
||||
7 => 11
|
||||
3
|
||||
6 => 10
|
||||
2 => 8
|
||||
|
||||
--StationList_CargoPlannedByFrom--
|
||||
7 => 8
|
||||
6 => 8
|
||||
2 => 7
|
||||
|
||||
--StationList_CargoPlannedByVia--
|
||||
2 => 16
|
||||
6 => 7
|
||||
|
||||
--StationList_CargoPlannedViaByFrom--
|
||||
6 => 8
|
||||
2 => 3
|
||||
|
||||
--StationList_CargoPlannedFromByVia--
|
||||
6 => 10
|
||||
2 => 8
|
||||
|
||||
--StationList_CargoWaiting--
|
||||
0
|
||||
6 => 6
|
||||
1
|
||||
6 => 2
|
||||
2
|
||||
2 => 4
|
||||
7 => 2
|
||||
3
|
||||
|
||||
--StationList_CargoWaitingByFrom--
|
||||
2 => 3
|
||||
|
||||
--StationList_CargoWaitingByVia--
|
||||
6 => 3
|
||||
|
||||
--StationList_CargoWaitingViaByFrom--
|
||||
6 => 2
|
||||
|
||||
--StationList_CargoWaitingFromByVia--
|
||||
6 => 3
|
||||
|
||||
--StationList_Vehicle--
|
||||
Count(): 2
|
||||
Location ListDump:
|
||||
5 => 33421
|
||||
4 => 33411
|
||||
CargoWaiting(0) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoWaiting(1) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
CargoRating(1) ListDump:
|
||||
5 => -1
|
||||
4 => -1
|
||||
DistanceManhattanToTile(30000) ListDump:
|
||||
5 => 106
|
||||
4 => 96
|
||||
DistanceSquareToTile(30000) ListDump:
|
||||
5 => 8818
|
||||
4 => 7058
|
||||
IsWithinTownInfluence(0) ListDump:
|
||||
5 => 0
|
||||
4 => 0
|
||||
ERROR: The script died unexpectedly.
|
Binary file not shown.
@@ -24,7 +24,6 @@ description.es_ES = Un conjunto de música vacío.
|
||||
description.et_EE = Muusikakogu ilma muusikata.
|
||||
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
|
||||
description.fr_FR = Un pack de musiques sans musiques.
|
||||
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
|
||||
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
|
||||
description.gl_ES = Un conxunto de músicas sen ningunha música.
|
||||
description.hr_HR = Muzički paket bez ikakve muzike.
|
||||
@@ -34,7 +33,6 @@ description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
|
||||
description.it_IT = Un pacchetto musicale non contenente alcuna musica.
|
||||
description.ja_JP = 空の音楽パック
|
||||
description.ko_KR = 실제 음악이 없는 음악 목록입니다.
|
||||
description.la_VA = Sarcina musicae sine ulla musica.
|
||||
description.lb_LU = E Musikpack ouni aktuell Musik.
|
||||
description.lt_LT = Muzikos pakas be muzikos.
|
||||
description.lv_LV = Mūzikas kopa bez mūzikas
|
||||
|
@@ -25,7 +25,6 @@ description.et_EE = Helikogu ilma helideta.
|
||||
description.eu_ES = Soinurik gabeko soinu pakete bat
|
||||
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
|
||||
description.fr_FR = Un pack de sons sans sons.
|
||||
description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann.
|
||||
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
|
||||
description.gl_ES = Un conxunto de sons sen ningún son
|
||||
description.hr_HR = Zvučni paket bez ikakvih zvukova.
|
||||
@@ -35,8 +34,7 @@ description.is_IS = Hljóðpakki án hljóðs.
|
||||
description.it_IT = Un pacchetto sonoro non contenente alcun suono.
|
||||
description.ja_JP = 空の効果音パック
|
||||
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
||||
description.la_VA = Sarcina sonorum sine ullis sonis.
|
||||
description.lb_LU = E Soundpack ouni iergendee Sound.
|
||||
description.lb_LU = En Soundpack mat all den Sounds.
|
||||
description.lt_LT = Garsų pakas be jokių garsų.
|
||||
description.nb_NO = En lydpakke uten noen lyder.
|
||||
description.nl_NL = Een geluidset zonder geluid.
|
||||
|
Binary file not shown.
Binary file not shown.
@@ -25,7 +25,6 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS.
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje.
|
||||
@@ -35,7 +34,6 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgá
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
|
||||
@@ -72,7 +70,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -24,7 +24,6 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.
|
||||
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje.
|
||||
@@ -34,7 +33,6 @@ description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útg
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
|
||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe DOS.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS.
|
||||
|
@@ -25,7 +25,6 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach).
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje.
|
||||
@@ -35,7 +34,6 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýs
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica).
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
|
||||
@@ -72,7 +70,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -25,7 +25,6 @@ description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Win
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje.
|
||||
@@ -35,7 +34,6 @@ description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows ú
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows.
|
||||
@@ -72,7 +70,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
OPENTTD.GRF = 75a93cea2ed455c2fd5dcbda39e53538
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -24,7 +24,6 @@ description.es_ES = Música original de Transport Tycoon Deluxe versión Windows
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
|
||||
description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
|
||||
description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje.
|
||||
@@ -34,8 +33,7 @@ description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows
|
||||
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
|
||||
description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Music.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
|
||||
description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows.
|
||||
|
@@ -24,7 +24,6 @@ description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windo
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
|
||||
@@ -34,7 +33,6 @@ description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
|
||||
description.la_VA = Soni ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.2 API compatibility in effect.");
|
||||
GSLog.Info("1.2 API compatability in effect.");
|
||||
|
||||
GSTown._SetGrowthRate <- GSTown.SetGrowthRate;
|
||||
GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
|
||||
@@ -16,10 +16,3 @@ GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
|
||||
if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL;
|
||||
return GSTown._SetGrowthRate(town_id, days_between_town_growth);
|
||||
}
|
||||
|
||||
/* 1.5 adds a game element reference to the news. */
|
||||
GSNews._Create <- GSNews.Create;
|
||||
GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.3 API compatibility in effect.");
|
||||
GSLog.Info("1.3 API compatability in effect.");
|
||||
|
||||
GSTown._SetGrowthRate <- GSTown.SetGrowthRate;
|
||||
GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
|
||||
@@ -16,10 +16,3 @@ GSTown.SetGrowthRate <- function(town_id, days_between_town_growth)
|
||||
if (days_between_town_growth == 0) days_between_town_growth = GSTown.TOWN_GROWTH_NORMAL;
|
||||
return GSTown._SetGrowthRate(town_id, days_between_town_growth);
|
||||
}
|
||||
|
||||
/* 1.5 adds a game element reference to the news. */
|
||||
GSNews._Create <- GSNews.Create;
|
||||
GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$ */
|
||||
/* $Id: compat_1.3.nut 24469 2012-08-13 19:33:17Z yexo $ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
@@ -6,12 +6,3 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.4 API compatibility in effect.");
|
||||
|
||||
/* 1.5 adds a game element reference to the news. */
|
||||
GSNews._Create <- GSNews.Create;
|
||||
GSNews.Create <- function(type, text, company)
|
||||
{
|
||||
return GSNews._Create(type, text, company, GSNews.NR_NONE, 0);
|
||||
}
|
||||
|
@@ -1,8 +0,0 @@
|
||||
/* $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/>.
|
||||
*/
|
247
changelog.txt
247
changelog.txt
@@ -1,250 +1,3 @@
|
||||
1.5.3 (2015-12-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.5.3-RC1 (2015-11-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: When selecting a refit cargo for orders, do not check whether the vehicle is in a depot or station, and do not ask whether the vehicle currently allows station-refitting. Also hide the refit cost for orders, it is not predictable (r27428)
|
||||
- Fix: Use the NewGRF railtype sorting order in the infrastructure window (r27427)
|
||||
- Fix: Crash when switching to or taking over companies, when an order window of a vehicle of the new company was opened. Now close those windows [FS#5842] (r27425)
|
||||
- Fix: Towns did not connect roads to existing roads, unless they had only a single roadbit. Otoh, towns also tried to connect to single roadbit tiles such as tunnels and depots, even though they were not connectable in the direction of interest [FS#6374] (r27424)
|
||||
- Fix: When towns expanded single-bit roadtiles using a grid-layout, they used the layout position of the neighbouring tile (r27423)
|
||||
- Fix: Aircraft picked the wrong airport entry point, if airports were rotated by 180 degree [FS#6341] (r27422)
|
||||
- Fix: Consider text and icon sizes when drawing the client list [FS#6265] (r27421)
|
||||
- Fix: GrowTownAtRoad sometimes returned false, even when a house was built [FS#6362] (r27420)
|
||||
- Fix: CmdSellRailWagon did not revert all actions properly when no orderlist could be allocated [FS#6369] (r27419)
|
||||
- Fix: Desync due to incorrect storage of segments with different railtype in the YAPF cache [FS#6329] [FS#6379] (r27418)
|
||||
- Fix: When a dedicated server was paused with no clients, the master server advertisement interval was slowed, causing deadvertisement of the server [FS#6368] (r27400)
|
||||
- Fix: [Makefile] Game script directory and compat*.nut were never installed on *nix (r27399)
|
||||
- Fix: There are two different availability conditions for fdatasync in the manpage. Use them both, since at least on some MinGW versions one is not enough (r27389)
|
||||
- Fix: win32 sound driver failed to report errors (r27383)
|
||||
- Fix: Clickareas in settings tree were misaligned when the filter warning was displayed, if the setting height was defined by the icons instead of the font [FS#6358] (r27366)
|
||||
- Fix: Center settings filter warning also vertically, and also in case of multiple lines (r27365)
|
||||
|
||||
|
||||
1.5.2 (2015-09-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.5.2-RC1 (2015-08-01)
|
||||
------------------------------------------------------------------------
|
||||
- Change: Auto-complete partial roads when building level-crossings [FS#6283] (r27309)
|
||||
- Fix: Do not rerandomise the town name when only cost-estimating the founding [FS#6332] (r27341)
|
||||
- Fix: Make variety distribution not assume that sea level is at height 0.2 / 3 * TGPGetMaxHeight() [FS#6335] (r27331, r27330, r27329, r27328)
|
||||
- Fix: Remove corner-case optimisation for line drawing, which failed for dashed lines (r27324)
|
||||
- Fix: Clipping of inclined lines did not account for the 'horizontal width' being bigger than the 'real width' (r27323, r27322)
|
||||
- Fix: Incorrect owner assignment when adding/removing road/tram to/from bridges [FS#6317] (r27313, r27312)
|
||||
- Fix: Mark infrastructure window dirty in more cases (r27311)
|
||||
- Fix: Prevent breaking of tram-reversal points by adding more road pieces [FS#6283] (r27308)
|
||||
- Fix: Error message window with manager face failed with GUI zoom [FS#6259] (r27307)
|
||||
- Fix: Account for road-bridges and drive-through-stops in CanFollowRoad [FS#6320] (r27306, r27305)
|
||||
- Fix: Password window layout with GUI zoom [FS#6321] (r27304, r27303)
|
||||
- Fix: Speed-only timetables got assigned times in stations [FS#6313] (r27302, r27301)
|
||||
- Fix: Enforce the company's default service intervals when purchasing another company [FS#6254] (r27282, r27281)
|
||||
- Fix: Cloning/autoreplace/autorenew did not copy custom service intervals (r27280)
|
||||
|
||||
|
||||
1.5.1 (2015-06-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.5.1-RC1 (2015-05-08)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Do not consider road junctions with trivial dead ends as branch points during town growth [FS#6245] (r27260, r27259, r27244)
|
||||
- Fix: ScriptList::RemoveList failed to remove a list from itself [FS#6287] (r27258)
|
||||
- Fix: Combined button+dropdown widgets in order and autoreplace GUI had incorrect hitbox when using GUI zoom [FS#6270] (r27255)
|
||||
- Fix: When building a lock on DC_AUTO-removable water-based objects, the water class was always set to canal [FS#6264] (r27254)
|
||||
- Fix: When crossing tram tracks with railroads, cost of extra roads was not being counted [FS#6282] (r27253)
|
||||
- Fix: Invalid infrastructure counting when crossing tram tracks with railroads [FS#6281] (r27252)
|
||||
- Fix: Broken error message in configure [FS#6286] (r27250)
|
||||
- Fix: In some cases town growth failure was considered as success [FS#6240] (r27249, r27247)
|
||||
- Fix: Town labels on smallmap and zoomed-out viewports were not centered [FS#6257] (r27248)
|
||||
- Fix: Removing a rail waypoint used the remove-rail-station cost [FS#6251] (r27245)
|
||||
- Fix: Duplicate frees due to pool item classes not having copy constructors [FS#6285] (r27243)
|
||||
- Fix: Crash when no AIs were installed due to improper handling of non-ASCII characters by the string pointer lexer [FS#6272] (r27233)
|
||||
- Fix: Compilation on DragonflyBSD [FS#6274] (r27224, r27223)
|
||||
- Fix: Use the current maximum speed as limited by bridges, orders etc. for all vehicle types alike when considering increased smoke emissions of vehicles [FS#6278] (r27222)
|
||||
- Fix: Multi-value keys in the desktop entry shall end with a trailing separator (r27221)
|
||||
- Fix: Draw path reservation on the whole bridge, not only on the bridge heads (r27209)
|
||||
- Fix: Draw correct overlay sprites for path reservations on bridges and tunnels (r27208)
|
||||
|
||||
|
||||
1.5.0 (2015-04-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: [NewGRF] Add Misc. GRF Feature Flag 6 to enable the second rocky tile set [FS#6260] (r27200)
|
||||
|
||||
|
||||
1.5.0-RC1 (2015-03-18)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Display relative offset changes in the sprite aligner [FS#6236] (r27174)
|
||||
- Fix: Original road vehicle acceleration crashed for vehicles taking over [FS#6255] (r27190)
|
||||
- Fix: GCC 5 compilation (r27185, r27183)
|
||||
- Fix: Data race due to lazy initialisation of objects [FS#5969] (r27178)
|
||||
- Fix: Compilation with MinGW64 (r27176)
|
||||
- Fix: Use the regular clipping functions in the sprite aligner instead of some magic [FS#6237] (r27173)
|
||||
- Fix: Windows randomly drops SetCursorPos calls, breaking the RMB-scrolling [FS#6238] (r27172)
|
||||
|
||||
|
||||
1.5.0-beta2 (2015-02-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NoGo] Game scripts can point to a location, station, industry, or town when publishing news (r27164)
|
||||
- Feature: Allow changing max heightlevel in scenario editor (r27151)
|
||||
- Feature: Make use of both rocky tile sets from the base graphics (r27117)
|
||||
- Change: Scale (non-custom) default window sizes according to GUI zoom (r27147)
|
||||
- Change: Make statusbar and chat-entry window use the same width as the toolbar (r27146)
|
||||
- Change: The chatbox-width setting now uses percent of screen width instead of pixels (r27144)
|
||||
- Change: [NewGRF] Interpret negative positions in industry layouts depending on GRF version (r27138)
|
||||
- Fix: [SDL, Windows] Right-mouse-button scrolling scrolled/jumped too far, when OpenTTD lagged during mouse event processing (r27167)
|
||||
- Fix: Toolbars were not invalidated when changing max-vehicles settings [FS#6204] (r27163)
|
||||
- Fix: Tile selection was drawn outside of map in some cases [FS#6208] (r27162)
|
||||
- Fix: Reimplement the viewport drawing algorithm [FS#6156] [FS#6206] (r27161)
|
||||
- Fix: Issues with smallmap and viewport coordinates and transformations (r27160, r27159, r27158)
|
||||
- Fix: Mark bridge middle tiles dirty when building/removing/changing bridges (r27157)
|
||||
- Fix: Rounding and unit-conversion inconsistencies in calls to MarkAllViewportsDirty (r27148)
|
||||
- Fix: Oilrig empty-tile checks were incorrect due to wrong TileIndexDiff->TileIndexDiffC conversion (r27137)
|
||||
- Fix: Misalignment in generate world window in case of small fonts (r27135)
|
||||
- Fix: Dragging of free wagons in depot failed with GUI zoom (r27133)
|
||||
- Fix: Reduce memory footprint of map array by shuffling its members [FS#6218] (r27132, r27126)
|
||||
- Fix: Dropdown- and tooltip-windows should not steal the focus (r27131)
|
||||
- Fix: [NewGRF] Action 7/9 condition 0A failed for present, but disabled, NewGRF (r27119)
|
||||
- Fix: Road vehicles could not reverse to be sent to depots when the following tile has the right type to run on, but could not be entered [FS#6183] (r27107)
|
||||
- Fix: Use the actual max speed of the vehicle in front when determining if a RV can overtake [FS#6176] (r27106)
|
||||
- Fix: grow_counter was not properly bounded by growth_rate, but by some other value used to calculate growth_rate [FS#6195] (r27105)
|
||||
- Fix: [Script] Support 64 bits integers in ScriptLists [FS#6194] (r27104)
|
||||
- Fix: [Script] Money values would end up wrong in strings when outside the bounds of a 32 bits integer [FS#6194] (r27102)
|
||||
|
||||
|
||||
1.5.0-beta1 (2014-12-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Support .txt.gz and -txt.xz changelog, readme and license files in basesets, NewGRFs, etc (r27035, r27034)
|
||||
- Feature: More height levels [FS#4126] (r27010)
|
||||
- Feature: Latin translation (r26993)
|
||||
- Feature: Add option to choose normal, double or quad-size interface (r26990)
|
||||
- Feature: [Script] Swap method for script lists (r26894)
|
||||
- Feature: [Script] ScriptStationList_Cargo for sorting cargo by from and via (r26893)
|
||||
- Feature: [Script] API for retrieving planned flow (r26892)
|
||||
- Feature: [CargoDist] Predict links for station-autorefitting vehicles (r26889)
|
||||
- Feature: Setting for limiting the height of bridges (r26882)
|
||||
- Feature: Make aircraft ascend/descend when they are too close to the ground or too far away (r26866)
|
||||
- Feature: Allow hiding of non-interesting engines in the GUI (r26805, r26804)
|
||||
- Feature: Vehicle sorting in autoreplace GUI [FS#1640] (r26800)
|
||||
- Feature: [NewGRF] Advanced visual effects with multiple effect sprites independent of spawning model (r26988, r26747)
|
||||
- Feature: Warn about missing industries after generating a map (r26729)
|
||||
- Feature: Upgrade currently active NewGRFs to newest installed version (r26613)
|
||||
- Feature: Save and load grfid and md5sum of NewGRFs in config file (r26611)
|
||||
- Feature: Select an editable preset name for saving (r26610)
|
||||
- Feature: Cancel cargo delivery from industries/houses to stations after about 21 months of not having picked up any of the cargo (r26582)
|
||||
- Feature: Give a warning when a plane's orders tell it to use a runway which is too short for it [FS#6009] (r26566)
|
||||
- Feature: [Script] Extended API for CargoDist (r26557)
|
||||
- Feature: Show measured order times in timetable GUI also when not timetabled (r26550)
|
||||
- Feature: Prompt for confirmation when deleting a vehicle group (r26455)
|
||||
- Feature: Hierarchical vehicle subgroups (r26450)
|
||||
- Feature: Allow more sound sleep for dedicated servers when there's nothing to do and nobody paying attention (r26449)
|
||||
- Feature: [NewGRF] Add vehicle modflag 1 (unloading in progress) (r26430)
|
||||
- Change: Improvements to the man page (r27091, r27012)
|
||||
- Change: Allow to set the granularity of the tooltip hover time in milliseconds instead of seconds. New default value is 250ms (r26815)
|
||||
- Change: Follow SI recommendation about spaces between numbers and units [FS#6086] (r26733)
|
||||
- Change: [CargoDist] Save locations instead of distances in link graphs to reduce size (r26646)
|
||||
- Change: [Squirrel] Make the internal integer for scripts always 64 bits, so scripts behave the same on 32 and 64 bit architectures and money can be represented properly (r26585, r26584)
|
||||
- Change: Reshuffle advanced settings tree (r26614, r26536)
|
||||
- Change: Add backend-independent config-file setting to disable 8bpp video modes, and disable 8bpp by default (r26522)
|
||||
- Fix: [OS/2] Compile again [FS#6186] (r27092)
|
||||
- Fix: Compilation with freetype2 version 2.5.4 and newer [FS#6185] (r27079)
|
||||
- Fix: Variable 47 used the carge translation table of the wrong GRF in case of callback 1D [FS#6182] (r27075)
|
||||
- Fix: Some lists did not use natural string sorting [FS#6172] (r27063)
|
||||
- Fix: Mercurial version detection failed if personal presets were configured (r27059)
|
||||
- Fix: [OSX] Don't require double-press from non-dead console hotkeys [FS#5812] (r27046)
|
||||
- Fix: Crash when having the vehicle list opened from a buoy or oil rig when the buoy/oil rig is removed (r27030)
|
||||
- Fix: Unit number was not always fully shown in depots [FS#6102] (r27014)
|
||||
- Fix: [CargoDist] Reserve cargo only after unloading finished or if the vehicle has the desired cargo already [FS#6110] (r26918)
|
||||
- Fix: [Squirrel] Loading a value saved as boolean caused it to be of type integer instead of boolean (r26785)
|
||||
- Fix: [Squirrel] Harden string handling (r26777)
|
||||
- Fix: [OSX] Implement more of the text editing API to prevent crashes and improve IME support [FS#5972] (r26758)
|
||||
- Fix: Incorrect saving of order backups [FS#6066] (r26700)
|
||||
- Fix: Ordering a vehicle to a competitor's rail waypoint displayed an error message. Ignore the click as is done for the other order types to competitor's stuff [FS#6059] (r26692)
|
||||
- Fix: [Script] Loading/parsing of info .nuts was done in the same VM, causing e.g. constants to break the loading of info of other scripts [FS#5973] (r26617)
|
||||
- Fix: [CargoDist] Improve estimation of link capacitites (r26549)
|
||||
- Remove: A bunch of archaic settings from the GUI (r26528, r26526, r26525)
|
||||
|
||||
|
||||
1.4.4 (2014-10-21)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.4.4-RC1 (2014-10-08)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Image widgets stored 32bit SpriteID in uint16 (r26971)
|
||||
- Fix: Owner of road depot road types were not properly changed upon bankruptcy [FS#6126] (r26955)
|
||||
- Fix: Compilation on HAIKU (r26922)
|
||||
- Fix: Crash when enabling 'Full animation' if multiplayer chat text is on screen [FS#6096] (r26919)
|
||||
- Fix: Height computation of game script text in town GUI did not consider margins [FS#6119] (r26859)
|
||||
- Fix: [Squirrel] Debian lintian issues (r26853)
|
||||
- Fix: Compilation of strgen on various platforms like Solaris (r26850)
|
||||
- Fix: Better display of refit information for articulated vehicles [FS#6113] (r26849, r26848)
|
||||
- Fix: Do not assign a next hop when returning cargo [FS#6110] (r26847)
|
||||
- Fix: The ok-button in the OSK for the signs list should just close the OSK [FS#6116] (r26827)
|
||||
|
||||
|
||||
1.4.3 (2014-09-23)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.4.3-RC2 (2014-09-14)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Crashes on joining a server with pending order backups [FS#6112] (r26819)
|
||||
- Fix: Crashes on start due to dereferencing the -1 index of the file names array of music files (r26809)
|
||||
|
||||
|
||||
1.4.3-RC1 (2014-09-07)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: TC_NO_SHADE did not work for 32bpp text rendering (r26792)
|
||||
- Fix: Loading a game with order backups leaked Orders and left unreachable items in the pool (r26787)
|
||||
- Fix: Buffer overrun in SQCompiler::Error (r26764)
|
||||
- Fix: Desync due to not always properly restoring game state from the savegame (r26753)
|
||||
- Fix: [Script] Crashes and infinite loops when using lists in item-descending order [FS#6085] (r26744)
|
||||
- Fix: Incorrect CFLAGS when enabling gprof profiling (r26737, r26735)
|
||||
- Fix: Do not reset the last selected airport or layout, unless it is really necessary [FS#6083] (r26732)
|
||||
- Fix: Use the normal search path to look for xdg-open at Unix [FS#6077] (r26724)
|
||||
- Fix: Properly check for cargo acceptance of houses [FS#5997] (r26723)
|
||||
|
||||
|
||||
1.4.2 (2014-08-16)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.4.2-RC2 (2014-08-03)
|
||||
------------------------------------------------------------------------
|
||||
- Change: Use awk instead of trying to convince cpp to preprocess nfo files (r26708)
|
||||
- Fix: CMD_CLEAR_ORDER_BACKUP should not be suppressed by pause modes (r26716)
|
||||
- Fix: [NewGRF] Parameters to SCC_NEWGRF_PUSH_WORD and SCC_NEWGRF_UNPRINT were not skipped during drawing (r26713)
|
||||
- Fix: [OSX] Compilation fails with some lzo2 versions, if __LP64__ is defined to 0 instead of checking whether it is defined [FS#6069] (r26709)
|
||||
- Fix: Wrong breakdown sound was played for ships [FS#6015] (r26706)
|
||||
- Fix: Integer overflows in acceleration code causing either too low acceleration or too high acceleration [FS#6067] (r26702)
|
||||
- Fix: Discard incorrectly saved order backups when clients join [FS#6066] (r26700)
|
||||
- Fix: Do not crash when trying to show an error about vehicle in a NewGRF and the NewGRF was not loaded at all (r26699)
|
||||
- Fix: Slovak uses space as group separator in numbers [FS#6064] (r26695)
|
||||
- Fix: Tighten parameter bound checks on GSCargoMonitor functions, and return -1 on out-of-bound parameters (r26685)
|
||||
|
||||
|
||||
1.4.2-RC1 (2014-07-03)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: CargoPacket::SourceStation() returns a StationID (r26660)
|
||||
- Fix: Days in dates are not represented by ordinal numbers in all languages [FS#6047] (r26657)
|
||||
- Fix: Production cheat cannot be allowed to be active in multiplayer for desync reasons, even when activated in singleplayer previously [FS#6044] (r26656)
|
||||
- Fix: Make sure an 'abs' is used that supports int64 when using 'abs' on those variables (r26651)
|
||||
- Fix: Support save/load chunk lengths of up to (1 << 32) - 1 [FS#6041] (r26650)
|
||||
- Fix: Incorrect usage of string commands in the base language [FS#6037] (r26642, r26640, r26639, r26632)
|
||||
- Fix: Segmentation fault when encountering a .obg/.obs/.obm with empty string/zero length MD5 checksums [FS#6038] (r26637)
|
||||
- Fix: The 'Load' button was not properly enabled/disabled for old savegames without NewGRF information (r26634)
|
||||
- Fix: If the video driver fails to supply a list of resolutions, display an error message [FS#6012] (r26629)
|
||||
|
||||
|
||||
1.4.1 (2014-06-02)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: First send packages about new company, then clients joining it to admin port [FS#6025] (r26616)
|
||||
|
123
config.lib
123
config.lib
@@ -526,10 +526,10 @@ check_params() {
|
||||
log 1 " PREPROCESSOR is only available for OSX"
|
||||
exit 1
|
||||
fi
|
||||
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
|
||||
# OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
|
||||
log 1 "configure: error: invalid option --os=$os"
|
||||
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
|
||||
log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
|
||||
exit 1
|
||||
fi
|
||||
# cpu_type can be either 32 or 64
|
||||
@@ -862,7 +862,7 @@ check_params() {
|
||||
endian="PREPROCESSOR"
|
||||
fi
|
||||
|
||||
log 1 "checking endianness... $endian"
|
||||
log 1 "checking endianess... $endian"
|
||||
|
||||
# Suppress language errors when there is a version defined, indicating a release
|
||||
# It just isn't pretty if any release produces warnings in the languages.
|
||||
@@ -1037,7 +1037,7 @@ check_params() {
|
||||
log 1 "checking revision... svn detection (tag)"
|
||||
elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
|
||||
log 1 "checking revision... git detection"
|
||||
elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then
|
||||
elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then
|
||||
log 1 "checking revision... hg detection"
|
||||
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
||||
log 1 "checking revision... source tarball"
|
||||
@@ -1054,7 +1054,7 @@ check_params() {
|
||||
fi
|
||||
|
||||
if [ "$doc_dir" = "1" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
doc_dir="share/doc/openttd"
|
||||
else
|
||||
doc_dir="$data_dir/docs"
|
||||
@@ -1064,7 +1064,7 @@ check_params() {
|
||||
fi
|
||||
|
||||
if [ "$icon_theme_dir" = "1" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
icon_theme_dir="share/icons/hicolor"
|
||||
else
|
||||
icon_theme_dir=""
|
||||
@@ -1098,7 +1098,7 @@ check_params() {
|
||||
|
||||
if [ "$man_dir" = "1" ]; then
|
||||
# add manpage on UNIX systems
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
|
||||
man_dir="share/man/man6"
|
||||
else
|
||||
man_dir=""
|
||||
@@ -1109,7 +1109,7 @@ check_params() {
|
||||
|
||||
if [ "$menu_dir" = "1" ]; then
|
||||
# add a freedesktop menu item only for some UNIX systems
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
|
||||
menu_dir="share/applications"
|
||||
else
|
||||
menu_dir=""
|
||||
@@ -1441,7 +1441,6 @@ make_cflags_and_ldflags() {
|
||||
make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
|
||||
|
||||
CFLAGS="$CFLAGS -D$os"
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
|
||||
|
||||
if [ "$enable_debug" = "0" ]; then
|
||||
# No debug, add default stuff
|
||||
@@ -1451,11 +1450,7 @@ make_cflags_and_ldflags() {
|
||||
LDFLAGS="$LDFLAGS -noixemul"
|
||||
fi
|
||||
|
||||
if [ "$enable_profiling" = "0" ]; then
|
||||
# -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
|
||||
CFLAGS="-fomit-frame-pointer $CFLAGS"
|
||||
fi
|
||||
CFLAGS="-O2 $CFLAGS"
|
||||
CFLAGS="-O2 -fomit-frame-pointer $CFLAGS"
|
||||
else
|
||||
OBJS_SUBDIR="debug"
|
||||
|
||||
@@ -1499,7 +1494,7 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
|
||||
if [ "$enable_profiling" != "0" ]; then
|
||||
CFLAGS="$CFLAGS -pg"
|
||||
CFLAGS="$CFLAGS -p"
|
||||
LDFLAGS="$LDFLAGS -pg"
|
||||
fi
|
||||
|
||||
@@ -1538,7 +1533,7 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
|
||||
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
|
||||
LIBS="$LIBS -lpthread"
|
||||
fi
|
||||
|
||||
@@ -1565,6 +1560,10 @@ make_cflags_and_ldflags() {
|
||||
LIBS="$LIBS -pthread"
|
||||
fi
|
||||
|
||||
if [ "$os" = "FREEBSD" ]; then
|
||||
LIBS="$LIBS -lpthread"
|
||||
fi
|
||||
|
||||
if [ "$os" = "OSX" ]; then
|
||||
LDFLAGS="$LDFLAGS -framework Cocoa"
|
||||
|
||||
@@ -1606,7 +1605,7 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
|
||||
# Most targets act like UNIX, just with some additions
|
||||
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
|
||||
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
|
||||
CFLAGS="$CFLAGS -DUNIX"
|
||||
fi
|
||||
# And others like Windows
|
||||
@@ -2264,54 +2263,52 @@ detect_awk() {
|
||||
|
||||
detect_os() {
|
||||
if [ "$os" = "DETECT" ]; then
|
||||
# Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
# Detect UNIX, OSX, FREEBSD, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
|
||||
|
||||
# Try first via dumpmachine, then via uname
|
||||
os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
|
||||
/linux/ { print "UNIX"; exit}
|
||||
/darwin/ { print "OSX"; exit}
|
||||
/freebsd/ { print "FREEBSD"; exit}
|
||||
/dragonfly/ { print "DRAGONFLY"; exit}
|
||||
/openbsd/ { print "OPENBSD"; exit}
|
||||
/netbsd/ { print "NETBSD"; exit}
|
||||
/hp-ux/ { print "HPUX"; exit}
|
||||
/morphos/ { print "MORPHOS"; exit}
|
||||
/beos/ { print "BEOS"; exit}
|
||||
/haiku/ { print "HAIKU"; exit}
|
||||
/sunos/ { print "SUNOS"; exit}
|
||||
/solaris/ { print "SUNOS"; exit}
|
||||
/cygwin/ { print "CYGWIN"; exit}
|
||||
/mingw/ { print "MINGW"; exit}
|
||||
/os2/ { print "OS2"; exit}
|
||||
/dos/ { print "DOS"; exit}
|
||||
/wince/ { print "WINCE"; exit}
|
||||
/psp/ { print "PSP"; exit}
|
||||
/linux/ { print "UNIX"; exit}
|
||||
/darwin/ { print "OSX"; exit}
|
||||
/freebsd/ { print "FREEBSD"; exit}
|
||||
/openbsd/ { print "OPENBSD"; exit}
|
||||
/netbsd/ { print "NETBSD"; exit}
|
||||
/hp-ux/ { print "HPUX"; exit}
|
||||
/morphos/ { print "MORPHOS"; exit}
|
||||
/beos/ { print "BEOS"; exit}
|
||||
/haiku/ { print "HAIKU"; exit}
|
||||
/sunos/ { print "SUNOS"; exit}
|
||||
/solaris/ { print "SUNOS"; exit}
|
||||
/cygwin/ { print "CYGWIN"; exit}
|
||||
/mingw/ { print "MINGW"; exit}
|
||||
/os2/ { print "OS2"; exit}
|
||||
/dos/ { print "DOS"; exit}
|
||||
/wince/ { print "WINCE"; exit}
|
||||
/psp/ { print "PSP"; exit}
|
||||
'`
|
||||
|
||||
if [ -z "$os" ]; then
|
||||
os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
|
||||
/linux/ { print "UNIX"; exit}
|
||||
/darwin/ { print "OSX"; exit}
|
||||
/freebsd/ { print "FREEBSD"; exit}
|
||||
/dragonfly/ { print "DRAGONFLY"; exit}
|
||||
/openbsd/ { print "OPENBSD"; exit}
|
||||
/netbsd/ { print "NETBSD"; exit}
|
||||
/hp-ux/ { print "HPUX"; exit}
|
||||
/morphos/ { print "MORPHOS"; exit}
|
||||
/beos/ { print "BEOS"; exit}
|
||||
/haiku/ { print "HAIKU"; exit}
|
||||
/sunos/ { print "SUNOS"; exit}
|
||||
/cygwin/ { print "CYGWIN"; exit}
|
||||
/mingw/ { print "MINGW"; exit}
|
||||
/os\/2/ { print "OS2"; exit}
|
||||
/gnu/ { print "UNIX"; exit}
|
||||
/linux/ { print "UNIX"; exit}
|
||||
/darwin/ { print "OSX"; exit}
|
||||
/freebsd/ { print "FREEBSD"; exit}
|
||||
/openbsd/ { print "OPENBSD"; exit}
|
||||
/netbsd/ { print "NETBSD"; exit}
|
||||
/hp-ux/ { print "HPUX"; exit}
|
||||
/morphos/ { print "MORPHOS"; exit}
|
||||
/beos/ { print "BEOS"; exit}
|
||||
/haiku/ { print "HAIKU"; exit}
|
||||
/sunos/ { print "SUNOS"; exit}
|
||||
/cygwin/ { print "CYGWIN"; exit}
|
||||
/mingw/ { print "MINGW"; exit}
|
||||
/os\/2/ { print "OS2"; exit}
|
||||
/gnu/ { print "UNIX"; exit}
|
||||
'`
|
||||
fi
|
||||
|
||||
if [ -z "$os" ]; then
|
||||
log 1 "detecting OS... none detected"
|
||||
log 1 "I couldn't detect your OS. Please use --os=OS to force one"
|
||||
log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
|
||||
log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -2940,7 +2937,7 @@ detect_icu() {
|
||||
# It was forced, so it should be found.
|
||||
if [ "$with_icu" != "1" ]; then
|
||||
log 1 "configure: error: icu-config couldn't be found"
|
||||
log 1 "configure: error: you supplied '$with_icu', but it seems invalid"
|
||||
log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -3181,9 +3178,9 @@ detect_grfcodec() {
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "985" ]; then
|
||||
log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
|
||||
log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled"
|
||||
else
|
||||
log 1 "checking grfcodec... not found"
|
||||
fi
|
||||
@@ -3223,9 +3220,9 @@ detect_nforenum() {
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "985" ]; then
|
||||
log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
|
||||
log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled"
|
||||
else
|
||||
log 1 "checking nforenum... not found"
|
||||
fi
|
||||
@@ -3590,9 +3587,9 @@ showhelp() {
|
||||
echo " --awk=AWK the awk to use in configure [awk]"
|
||||
echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
|
||||
echo " --os=OS the OS we are compiling for [DETECT]"
|
||||
echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
|
||||
echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
|
||||
echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
|
||||
echo " DETECT/UNIX/OSX/FREEBSD/OPENBSD/NETBSD/"
|
||||
echo " MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/MINGW/OS2/"
|
||||
echo " DOS/WINCE/PSP/HAIKU"
|
||||
echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
|
||||
echo ""
|
||||
echo "Paths:"
|
||||
|
@@ -106,7 +106,7 @@ Table of contents
|
||||
The important thing here is: The detection of the Desync is
|
||||
only an ultimate failure detection. It does not give any
|
||||
indication on when the Desync happened. The Desync may after
|
||||
all have occurred long ago, and just did not affect the checksum
|
||||
all have occured long ago, and just did not affect the checksum
|
||||
up to now. The checksum may have matched 10 times or more
|
||||
since the Desync happend, and only now the Desync has spiraled
|
||||
enough to finally affect the checksum. (There was once a desync
|
||||
@@ -194,7 +194,6 @@ Table of contents
|
||||
- Get the same version of OpenTTD as the original server was running.
|
||||
- Uncomment/enable the define 'DEBUG_DUMP_COMMANDS' in
|
||||
'src/network/network_func.h'.
|
||||
(DEBUG_FAILED_DUMP_COMMANDS is explained later)
|
||||
- Put the 'commands-out.log' into the root save folder, and rename
|
||||
it to 'commands.log'.
|
||||
- Run 'openttd -D -d desync=3 -g startsavegame.sav'.
|
||||
@@ -218,11 +217,6 @@ Table of contents
|
||||
the last dmp_cmds that reproduces the replay and the first one
|
||||
that fails.
|
||||
|
||||
If the replay does not succeed without mismatch, you can check the logs
|
||||
whether there were failed commands. Then you may try to replay with
|
||||
DEBUG_FAILED_DUMP_COMMANDS enabled. If the replay then fails, the
|
||||
command test-run of the failed command modified the game state.
|
||||
|
||||
If you have the original 'dmp_cmds_*.sav', you can also compare those
|
||||
savegames with your own ones from the replay. You can also comment/disable
|
||||
the 'NOT_REACHED' mentioned above, to get another 'dmp_cmds_*.sav' from
|
||||
|
@@ -15,60 +15,20 @@
|
||||
For a graphical representation of the tile-layout have a look at
|
||||
<a href="landscape_grid.html">Landscape grid</a> page.
|
||||
</p>
|
||||
<p>Nine attributes (counting "<span style="font-weight: bold;">type</span>" and
|
||||
"<span style="font-weight: bold;">height</span>") hold the informations about a tile.<BR>
|
||||
<p>Eight attributes (counting "<span style="font-weight: bold;">type_height</span>") hold the informations about a tile.<BR>
|
||||
These attributes are referred to as
|
||||
"<span style="font-weight: bold;">type</span>",
|
||||
"<span style="font-weight: bold;">height</span>",
|
||||
"<span style="font-weight: bold;">type_height</span>",
|
||||
"<span style="font-weight: bold;">m1</span>", "<span style="font-weight: bold;">m2</span>",
|
||||
"<span style="font-weight: bold;">m3</span>", "<span style="font-weight: bold;">m4</span>",
|
||||
"<span style="font-weight: bold;">m5</span>", "<span style="font-weight: bold;">m6</span>"
|
||||
and "<span style="font-weight: bold;">m7</span>".<br>
|
||||
The most important value is the class of a tile, stored in the upper 4 bits
|
||||
of the <span style="font-weight: bold;">type</span> attribute.
|
||||
of the <span style="font-weight: bold;">type_height</span> attribute. The lower 4 bits are used to encode the height and
|
||||
slope data.
|
||||
</p>
|
||||
|
||||
Frequently repeating patterns:
|
||||
<ul>
|
||||
<li><span style="font-weight: bold;">type</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a name="type"></a>
|
||||
Bits 7..4:
|
||||
<table border="1" style="width: 30em;">
|
||||
<tr bgcolor="#CCCCCC"><td colspan="2">The tile type.</td></tr>
|
||||
<tr><td style="width: 5em;"><tt>00</tt></td><td>Ground</td></tr>
|
||||
<tr><td><tt>01</tt></td><td>Railway tracks</td></tr>
|
||||
<tr><td><tt>02</tt></td><td>Roads</td></tr>
|
||||
<tr><td><tt>03</tt></td><td>Town building</td></tr>
|
||||
<tr><td><tt>04</tt></td><td>Trees</td></tr>
|
||||
<tr><td><tt>05</tt></td><td>Station tiles</td></tr>
|
||||
<tr><td><tt>06</tt></td><td>Water</td></tr>
|
||||
<tr><td><tt>07</tt></td><td>Void</td></tr>
|
||||
<tr><td><tt>08</tt></td><td>Industries</td></tr>
|
||||
<tr><td><tt>09</tt></td><td>Tunnel / bridge</td></tr>
|
||||
<tr><td><tt>0A</tt></td><td>Objects</td></tr>
|
||||
</table>
|
||||
</li>
|
||||
Bits 3..2:
|
||||
<table border="1" style="width: 30em;">
|
||||
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above.</td></tr>
|
||||
<tr><td style="width: 5em;"><tt>00</tt></td><td>no bridge</td></tr>
|
||||
<tr><td><tt>01</tt></td><td>Axis X (North-East)</td></tr>
|
||||
<tr><td><tt>02</tt></td><td>Axis Y (South-West)</td></tr>
|
||||
</table>
|
||||
<li>
|
||||
<a name="tropic_zone"></a>
|
||||
Bits 1..0:
|
||||
<table border="1" style="width: 30em;">
|
||||
<tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate. It contains the definition of the available zones</td></tr>
|
||||
<tr><td style="width: 5em;"><tt>00</tt></td><td>normal</td></tr>
|
||||
<tr><td><tt>01</tt></td><td>desert</td></tr>
|
||||
<tr><td><tt>02</tt></td><td>rain forest</td></tr>
|
||||
</table>
|
||||
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
|
||||
</li>
|
||||
</ul>
|
||||
<li><span style="font-weight: bold;">m1</span>
|
||||
<ul>
|
||||
<li>
|
||||
@@ -98,6 +58,32 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><span style="font-weight: bold;">m6</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a name="bridge_direction"></a>
|
||||
Bits 7..6:
|
||||
<table border="1" style="width: 30em;">
|
||||
<tr bgcolor="#CCCCCC"><td colspan="2">Presence and direction of bridge above, for tiles that support this.</td></tr>
|
||||
<tr><td style="width: 5em;"><tt>00</tt></td><td>no bridge</td></tr>
|
||||
<tr><td><tt>01</tt></td><td>Axis X (North-East)</td></tr>
|
||||
<tr><td><tt>02</tt></td><td>Axis Y (South-West)</td></tr>
|
||||
</table>
|
||||
Some tiles, such as houses do not support bridges over them and use these bits for other purposes.
|
||||
</li>
|
||||
<li>
|
||||
<a name="tropic_zone"></a>
|
||||
Bits 1..0:
|
||||
<table border="1" style="width: 30em;">
|
||||
<tr bgcolor="#CCCCCC"><td colspan="2">Only meaningfull in tropic climate. It contains the definition of the available zones</td></tr>
|
||||
<tr><td style="width: 5em;"><tt>00</tt></td><td>normal</td></tr>
|
||||
<tr><td><tt>01</tt></td><td>desert</td></tr>
|
||||
<tr><td><tt>02</tt></td><td>rain forest</td></tr>
|
||||
</table>
|
||||
In any other climate these 2 bits are theoretically free of use, however using them does not seem useful.
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><span style="font-weight: bold;">m7:</span><br>
|
||||
Animation frame/state. Used for houses, industries, objects and stations.
|
||||
</li>
|
||||
@@ -210,7 +196,9 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 4..2: type of hedge on NW border of the tile</li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -522,6 +510,8 @@
|
||||
<li>m5 bit 4: pbs reservation state</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -549,7 +539,6 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
|
||||
<li>m5 bits 7 clear: road or level-crossing
|
||||
<ul>
|
||||
<li>m6 bits 5..3:
|
||||
@@ -584,6 +573,7 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m3 bits 7..4: <a href="#OwnershipInfo">owner</a> of road type 1 (tram); OWNER_NONE (<tt>10</tt>) is stored as OWNER_TOWN (<tt>0F</tt>)
|
||||
<li>m5 bit 6 clear: road
|
||||
<ul>
|
||||
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
|
||||
@@ -673,9 +663,10 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -722,6 +713,7 @@
|
||||
<li>bits 7..2 : lift position (for houses type 04 and 05)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>bits 1..0 : tropic zone specifier</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>m7 :
|
||||
@@ -843,6 +835,7 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -976,6 +969,7 @@
|
||||
<li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy, waypoint)</li>
|
||||
<li>m6 bit 2: pbs reservation state for railway stations/waypoints</li>
|
||||
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road (road stops)</li>
|
||||
<li>m7 bits 7..6: present road types (road stops)</li>
|
||||
<li>m7: animation frame (railway stations/waypoints, airports)</li>
|
||||
@@ -1088,6 +1082,8 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1105,7 +1101,7 @@
|
||||
|
||||
<tr bgcolor="#CCCCCC">
|
||||
<td valign=top nowrap><strong><a name="Class8"><tt> 8</tt></a></strong></td>
|
||||
<td><strong>Industries </strong></td>
|
||||
<td><strong>Industry tile </strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign=top nowrap> </td>
|
||||
@@ -1429,6 +1425,7 @@
|
||||
</li>
|
||||
<li>m6 bits 5..3: random triggers (NewGRF)</li>
|
||||
<li>m6 bit 2: bit 8 of type (see m5)</li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
<li>m7: animation frame</li>
|
||||
</ul>
|
||||
</td>
|
||||
@@ -1579,6 +1576,8 @@
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of road</li>
|
||||
<li>m7 bit 5 set = on snow or desert</li>
|
||||
<li>m7 bits 7..6: present road types for road</li>
|
||||
@@ -1599,6 +1598,8 @@
|
||||
<li>m2: index into the array of objects, bits 0 to 15 (upper bits in m5)</li>
|
||||
<li>m3: random bits</li>
|
||||
<li>m5: index into the array of objects, bits 16 to 23 (lower bits in m2)</li>
|
||||
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
|
||||
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
|
||||
<li>m7: animation counter</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
@@ -28,14 +28,13 @@ the array so you can quickly see what is used and what is not.
|
||||
</ul>
|
||||
<p>
|
||||
<ul>
|
||||
<li><span style="font-weight: bold;">type</span> - 8 bits in size, tile class (bits 4..7), bridge (bits 2..3) tropic zone (bits 0..1, only valid in tropic climate)</li>
|
||||
<li><span style="font-weight: bold;">height</span> - 8 bits in size, stores tile height</li>
|
||||
<li><span style="font-weight: bold;">type_height</span> - 8 bits in size, stores tile height (lower 4 bits) and tile class (upper 4 bits)</li>
|
||||
<li><span style="font-weight: bold;">m1</span> - 8 bits in size, used to identify the owner of that tile (eg piece of rail, bridge, etc.)</li>
|
||||
<li><span style="font-weight: bold;">m2</span> - 16 bits in size, used to identify the index of the given tile (object) in the (object-)array</li>
|
||||
<li><span style="font-weight: bold;">m3</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m4</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m5</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m6</span> - 8 bits in size, is used for general storage</li>
|
||||
<li><span style="font-weight: bold;">m6</span> - 8 bits in size, special meaning : lower 2 bits only valid in tropic climate, upper 2 bits for bridges</li>
|
||||
<li><span style="font-weight: bold;">m7</span> - 8 bits in size, is used for general storage</li>
|
||||
</ul>
|
||||
|
||||
@@ -43,8 +42,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan=2>class</th>
|
||||
<th>type (8)</th>
|
||||
<th>height (8)</th>
|
||||
<th>type_height (8)</th>
|
||||
<th>m1 (8)</th>
|
||||
<th>m2 (16)</th>
|
||||
<th>m3 (8)</th>
|
||||
@@ -57,7 +55,6 @@ the array so you can quickly see what is used and what is not.
|
||||
<td colspan=2 class="caption">bits</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">FEDC BA98 7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
<td class="bits">7654 3210</td>
|
||||
@@ -69,75 +66,69 @@ the array so you can quickly see what is used and what is not.
|
||||
<td rowspan="2">0</td>
|
||||
<td class="caption">ground</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits">XXXX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
|
||||
<td class="bits">XX<span class="free">O</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">farmland</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XX<span class="free">OO</span></td>
|
||||
<td class="bits">XX<span class="free">O</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>1</td>
|
||||
<td class="caption">rail</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">rail with signals</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">depot</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">O</span>X <span class="free">OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>2</td>
|
||||
<td class="caption">road</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XXXX X<span class="free">O</span>XX</td>
|
||||
<td class="bits">XXX<span class="free">O</span> XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -145,11 +136,10 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX<span class="free"> OOO</span>X</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits">XXXX X<span class="free">O</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -157,50 +147,46 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXX<span class="free">O</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XXX<span class="free">O OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td class="caption">house</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXX<span class="abuse">X XXXX</span></td>
|
||||
<td class="bits"><span class="abuse">XXXX XX</span><span class="free">OO</span></td>
|
||||
<td class="bits"><span class="abuse">XXXX XX</span>XX</td>
|
||||
<td class="bits">XXXX <span class="abuse">XXXX</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td class="caption">trees</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~</span>XX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO O</span>XXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=7>5</td>
|
||||
<td class="caption">rail station</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">O</span>XXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -213,18 +199,16 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">road stop</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits">XX<span class="free">O</span>X XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -232,11 +216,10 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -244,11 +227,10 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -256,11 +238,10 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -268,74 +249,68 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">OOO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>6</td>
|
||||
<td class="caption">sea, shore</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">O</span>XXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">X<span class="option">~~</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">canal, river</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">shipdepot</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>8</td>
|
||||
<td class="caption">industry</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXX<span class="free">O</span> <span class="abuse">XXXX</span></td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>9</td>
|
||||
<td class="caption">tunnel entrance</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">X<span class="free">OO</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -346,21 +321,19 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>A</td>
|
||||
<td class="caption">objects</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">O</span>XXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
150
docs/openttd.6
150
docs/openttd.6
@@ -1,152 +1,112 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.Dd October 13, 2014
|
||||
.Dd May 31, 2011
|
||||
.Dt OPENTTD 6
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm openttd
|
||||
.Nd open source clone of the Microprose game \(lqTransport Tycoon Deluxe\(rq
|
||||
.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe"
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl efhx
|
||||
.Op Fl b Ar blitter
|
||||
.Op Fl c Ar config_file
|
||||
.Op Fl d Op Ar level | Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ...
|
||||
.Op Fl D Oo Ar host Oc Ns Op : Ns Ar port
|
||||
.Op Fl g Op Ar savegame
|
||||
.Op Fl d Ar [level | cat=lvl[,...]]
|
||||
.Op Fl D Ar [host][:port]
|
||||
.Op Fl g Ar [savegame]
|
||||
.Op Fl G Ar seed
|
||||
.Op Fl I Ar graphicsset
|
||||
.Op Fl l Ar host Ns Op : Ns Ar port
|
||||
.Op Fl l Ar host[:port]
|
||||
.Op Fl m Ar driver
|
||||
.Op Fl M Ar musicset
|
||||
.Op Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
|
||||
.Op Fl n Ar host[:port][#player]
|
||||
.Op Fl p Ar password
|
||||
.Op Fl P Ar password
|
||||
.Op Fl q Ar savegame
|
||||
.Op Fl r Ar width Ns x Ns Ar height
|
||||
.Op Fl r Ar widthxheight
|
||||
.Op Fl s Ar driver
|
||||
.Op Fl S Ar soundset
|
||||
.Op Fl t Ar year
|
||||
.Op Fl v Ar driver
|
||||
.Sh OPTIONS
|
||||
.Bl -tag -width "-n host[:port][#player]"
|
||||
.Bl -tag -width ".Fl n Ar host[:port][#player]"
|
||||
.It Fl b Ar blitter
|
||||
Select the blitter
|
||||
.Ar blitter ;
|
||||
see
|
||||
Set the blitter, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
for a full list
|
||||
.It Fl c Ar config_file
|
||||
Use
|
||||
.Ar config_file
|
||||
instead of
|
||||
.Pa openttd.cfg .
|
||||
Use 'config_file' instead of 'openttd.cfg'
|
||||
.It Fl d Ar [level]
|
||||
Set debug verbosity for all categories to
|
||||
.Ar level ,
|
||||
or 1 if omitted.
|
||||
.It Fl d Ar cat Ns = Ns Ar lvl Ns Op , Ns Ar ...
|
||||
Set debug verbosity to
|
||||
.Ar lvl
|
||||
for a specific category
|
||||
.Ar cat .
|
||||
.It Fl D Oo Ar host Oc Ns Op : Ns Ar port
|
||||
Start a dedicated server.
|
||||
.Pp
|
||||
Network debug level will be set to 6.
|
||||
If you want to change this, set
|
||||
.Ar level
|
||||
or 1 if omitted
|
||||
.It Fl d Ar cat=level[,...]
|
||||
Set debug verbosity for a specific category
|
||||
.It Fl D Ar [host][:port]
|
||||
Start a dedicated server. Sets network debug level to 6. If you want to change this, use
|
||||
.Fl d
|
||||
after setting
|
||||
.Fl D .
|
||||
after
|
||||
.Fl D
|
||||
.It Fl G Ar seed
|
||||
Seed the pseudo random number generator
|
||||
.It Fl e
|
||||
Start in world editor mode.
|
||||
Start in world editor mode
|
||||
.It Fl f
|
||||
Fork into background (dedicated server only, see
|
||||
.Fl D ) .
|
||||
.It Fl g Op Ar savegame
|
||||
.Fl D )
|
||||
.It Fl g Ar [savegame]
|
||||
Load
|
||||
.Ar savegame
|
||||
at start or start a new game if omitted.
|
||||
at start or start a new game if omitted. The
|
||||
.Ar savegame
|
||||
must be either an absolute path or one relative to the current path or one of
|
||||
the search paths.
|
||||
.It Fl G Ar seed
|
||||
Seed the pseudo random number generator with
|
||||
.Ar seed .
|
||||
must be either absolute or relative to the current path or one of the search paths.
|
||||
.It Fl h
|
||||
Display a summary of all options and list all the available AIs, blitters,
|
||||
sound, music and video drivers, graphics sets and sound sets.
|
||||
Display a summary of all options and lists all the available AIs, blitters, sound, music and video drivers, graphics sets and sound sets.
|
||||
.It Fl I Ar graphicsset
|
||||
Select the graphics set
|
||||
.Ar graphicsset ;
|
||||
see
|
||||
Set the graphics set, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
.It Fl l Ar host Ns Op : Ns Ar port
|
||||
Redirect
|
||||
.Fn DEBUG
|
||||
output; see
|
||||
.Fl D .
|
||||
for a full list
|
||||
.It Fl l Ar host[:port]
|
||||
Redirect DEBUG(), See
|
||||
.Fl D
|
||||
.It Fl m Ar driver
|
||||
Select the music driver
|
||||
.Ar driver ;
|
||||
see
|
||||
Set the music driver, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
for a full list
|
||||
.It Fl M Ar musicset
|
||||
Select the music set
|
||||
.Ar musicset ;
|
||||
see
|
||||
Set the music set, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
.It Fl n Ar host Ns Oo : Ns Ar port Oc Ns Op # Ns Ar player
|
||||
Join a network game, optionally specifying a port to connect to and player to
|
||||
play as.
|
||||
for a full list
|
||||
.It Fl n Ar host[:port][#player]
|
||||
Join a network game, optionally specify a port to connect to and player to play as
|
||||
.It Fl p Ar password
|
||||
Password used to join server.
|
||||
Only useful with
|
||||
.Fl n .
|
||||
Password used to join server. Only useful with
|
||||
.Fl n
|
||||
.It Fl P Ar password
|
||||
Password used to join company.
|
||||
Only useful with
|
||||
.Fl n .
|
||||
Password used to join company. Only useful with
|
||||
.Fl n
|
||||
.It Fl q Ar savegame
|
||||
Write some information about the specified savegame and exit.
|
||||
.It Fl r Ar width Ns x Ns Ar height
|
||||
Set the resolution to
|
||||
.Ar width
|
||||
\(mu
|
||||
.Ar height
|
||||
pixels.
|
||||
Write some information about the savegame and exit
|
||||
.It Fl r Ar widthxheight
|
||||
Set the resolution
|
||||
.It Fl s Ar driver
|
||||
Select the sound driver
|
||||
.Ar driver ;
|
||||
see
|
||||
Set the sound driver, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
for a full list
|
||||
.It Fl S Ar soundset
|
||||
Select the sound set
|
||||
.Ar soundset ;
|
||||
see
|
||||
Set the sound set, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
for a full list
|
||||
.It Fl t Ar year
|
||||
Set the starting year to
|
||||
.Ar year .
|
||||
Set the starting year
|
||||
.It Fl v Ar driver
|
||||
Select the video driver
|
||||
.Ar driver ;
|
||||
see
|
||||
Set the video driver, see
|
||||
.Fl h
|
||||
for a full list.
|
||||
for a full list
|
||||
.It Fl x
|
||||
Do not automatically save to config file on exit.
|
||||
Do not automatically save to config file on exit
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Lk https://wiki.openttd.org "Wiki"
|
||||
(includes community maintained manual),
|
||||
.Lk https://forum.openttd.org "Forum",
|
||||
.Lk https://www.openttd.org "News"
|
||||
http://wiki.openttd.org/, http://www.openttd.org
|
||||
.Sh HISTORY
|
||||
Transport Tycoon Deluxe was written by Chris Sawyer and published by Microprose.
|
||||
.Nm
|
||||
|
@@ -106,21 +106,21 @@ elif [ -d "$ROOT_DIR/.git" ]; then
|
||||
fi
|
||||
elif [ -d "$ROOT_DIR/.hg" ]; then
|
||||
# We are a hg checkout
|
||||
if [ -n "`HGPLAIN= hg status | grep -v '^?'`" ]; then
|
||||
if [ -n "`hg status | grep -v '^?'`" ]; then
|
||||
MODIFIED="2"
|
||||
fi
|
||||
HASH=`LC_ALL=C HGPLAIN= hg id -i | cut -c1-12`
|
||||
HASH=`LC_ALL=C hg id -i | cut -c1-12`
|
||||
REV="h`echo $HASH | cut -c1-8`"
|
||||
BRANCH="`HGPLAIN= hg branch | sed 's@^default$@@'`"
|
||||
TAG="`HGPLAIN= hg id -t | grep -v 'tip$'`"
|
||||
BRANCH="`hg branch | sed 's@^default$@@'`"
|
||||
TAG="`hg id -t | grep -v 'tip$'`"
|
||||
if [ -n "$TAG" ]; then
|
||||
BRANCH=""
|
||||
REV="$TAG"
|
||||
fi
|
||||
REV_NR=`LC_ALL=C HGPLAIN= hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"`
|
||||
REV_NR=`LC_ALL=C hg log -f -k "(svn r" -l 1 --template "{desc|firstline}\n" | grep "^(svn r[0-9]*)" | sed "s@.*(svn r\([0-9]*\)).*@\1@"`
|
||||
if [ -z "$REV_NR" ]; then
|
||||
# No rev? Maybe it is a custom hgsubversion clone
|
||||
REV_NR=`LC_ALL=C HGPLAIN= hg parent --template="{svnrev}"`
|
||||
REV_NR=`LC_ALL=C hg parent --template="{svnrev}"`
|
||||
fi
|
||||
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
|
||||
# We are an exported source bundle
|
||||
|
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2015-12-01
|
||||
Release version: 1.5.3
|
||||
Last updated: 2014-06-02
|
||||
Release version: 1.4.1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@@ -1,32 +0,0 @@
|
||||
# $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/>.
|
||||
|
||||
BEGIN {
|
||||
# Very basic variant function; barely any error checking.
|
||||
# Just use the first argument as the file to start from when assembling everything
|
||||
path = ARGV[1];
|
||||
gsub("[^/\\\\]*$", "", path);
|
||||
assemble(ARGV[1]);
|
||||
}
|
||||
|
||||
# Recursive function for assembling by means of resolving the #includes.
|
||||
function assemble(filename) {
|
||||
while ((getline < filename) > 0) {
|
||||
if (NF == 2 && $1 == "#include" ) {
|
||||
# Remove the quotes.
|
||||
gsub("[\"'<>]", "", $2);
|
||||
assemble(path $2);
|
||||
} else {
|
||||
print $0;
|
||||
}
|
||||
}
|
||||
|
||||
if (close(filename) < 0) {
|
||||
print "Could not open " filename > "/dev/stderr";
|
||||
exit -1;
|
||||
}
|
||||
}
|
@@ -104,4 +104,3 @@
|
||||
#include "rivers/tropic.nfo"
|
||||
#include "rivers/toyland.nfo"
|
||||
#include "tunnel_portals.nfo"
|
||||
#include "palette.nfo"
|
||||
|
@@ -1,20 +0,0 @@
|
||||
//
|
||||
// $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/>.
|
||||
//
|
||||
|
||||
-1 * 0 0C "All black palette"
|
||||
-1 * 0 05 18 01
|
||||
-1 * 0 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
|
||||
01
|
@@ -9,4 +9,4 @@ Exec=!!TTD!!
|
||||
Terminal=false
|
||||
Categories=!!MENU_GROUP!!
|
||||
Comment=A clone of Transport Tycoon Deluxe
|
||||
Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo;
|
||||
Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo
|
||||
|
@@ -1,111 +1,3 @@
|
||||
openttd (1.5.3-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.3
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 01 Dec 2015 21:00:00 +0100
|
||||
|
||||
openttd (1.5.3~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.3-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 01 Nov 2015 14:00:00 +0100
|
||||
|
||||
openttd (1.5.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 01 Sep 2015 21:00:00 +0200
|
||||
|
||||
openttd (1.5.2~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.2-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 01 Aug 2015 13:00:00 +0200
|
||||
|
||||
openttd (1.5.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Mon, 01 Jun 2015 21:00:00 +0200
|
||||
|
||||
openttd (1.5.1~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.1-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Fri, 08 May 2015 21:00:00 +0200
|
||||
|
||||
openttd (1.5.0-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.0
|
||||
|
||||
-- OpenTTD <info@openttd.org> Wed, 01 Apr 2015 21:00:00 +0200
|
||||
|
||||
openttd (1.5.0~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.0-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Wed, 18 Mar 2015 21:00:00 +0100
|
||||
|
||||
openttd (1.5.0~beta2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.0-beta2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 24 Feb 2015 21:00:00 +0100
|
||||
|
||||
openttd (1.5.0~beta1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.0-beta1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Wed, 24 Dec 2014 21:00:00 +0100
|
||||
|
||||
openttd (1.4.4-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.4
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 21 Oct 2014 21:00:00 +0200
|
||||
|
||||
openttd (1.4.4~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.4-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Wed, 08 Oct 2014 19:00:00 +0200
|
||||
|
||||
openttd (1.4.3-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.3
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 23 Sep 2014 21:00:00 +0200
|
||||
|
||||
openttd (1.4.3~RC2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.3-RC2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 14 Sep 2014 19:00:00 +0200
|
||||
|
||||
openttd (1.4.3~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.3-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 07 Sep 2014 19:00:00 +0200
|
||||
|
||||
openttd (1.4.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 16 Aug 2014 21:00:00 +0200
|
||||
|
||||
openttd (1.4.2~RC2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.2-RC2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 03 Aug 2014 18:00:00 +0200
|
||||
|
||||
openttd (1.4.2~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.2-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Thu, 03 Jul 2014 21:00:00 +0200
|
||||
|
||||
openttd (1.4.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.4.1
|
||||
|
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.5.0
|
||||
set OPENTTD_VERSION=1.4.0
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=1.2.0
|
||||
|
@@ -17,9 +17,9 @@
|
||||
#
|
||||
|
||||
Name: openttd
|
||||
Version: 1.5.beta1
|
||||
Version: 1.3.beta2
|
||||
Release: 0
|
||||
%define srcver 1.5.0-beta1
|
||||
%define srcver 1.3.0-beta2
|
||||
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
|
||||
License: GPL-2.0
|
||||
Group: Amusements/Games/Strategy/Other
|
||||
|
@@ -1,8 +1,8 @@
|
||||
# Version numbers to update
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 5
|
||||
!define APPV_MAINT 3
|
||||
!define APPV_BUILD 1
|
||||
!define APPV_MINOR 4
|
||||
!define APPV_MAINT 1
|
||||
!define APPV_BUILD 2
|
||||
!define APPV_EXTRA ""
|
||||
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
|
@@ -77,7 +77,7 @@ safety_check() {
|
||||
done
|
||||
}
|
||||
|
||||
grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //g' | sort > tmp.headers.source.list
|
||||
grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h\|../objs/settings/table/settings.h' | sed 's/ //' | sort > tmp.headers.source.list
|
||||
find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src
|
||||
if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then
|
||||
echo "The following headers are missing in source.list and not in /src/ or vice versa."
|
||||
|
@@ -227,12 +227,6 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\korean.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\latin.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating latin language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\latin.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\latvian.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating latvian language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
|
@@ -97,9 +97,6 @@
|
||||
<CustomBuild Include="..\src\lang\korean.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\latin.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\latvian.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
|
@@ -513,21 +513,6 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\latin.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating latin language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\latin.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\latvian.txt"
|
||||
>
|
||||
|
@@ -514,21 +514,6 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\latin.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating latin language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\latin.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\latvian.txt"
|
||||
>
|
||||
|
@@ -311,7 +311,6 @@
|
||||
<ClCompile Include="..\src\debug.cpp" />
|
||||
<ClCompile Include="..\src\dedicated.cpp" />
|
||||
<ClCompile Include="..\src\depot.cpp" />
|
||||
<ClCompile Include="..\src\disaster_vehicle.cpp" />
|
||||
<ClCompile Include="..\src\driver.cpp" />
|
||||
<ClCompile Include="..\src\economy.cpp" />
|
||||
<ClCompile Include="..\src\effectvehicle.cpp" />
|
||||
@@ -438,7 +437,6 @@
|
||||
<ClInclude Include="..\src\depot_type.h" />
|
||||
<ClInclude Include="..\src\direction_func.h" />
|
||||
<ClInclude Include="..\src\direction_type.h" />
|
||||
<ClInclude Include="..\src\disaster_vehicle.h" />
|
||||
<ClInclude Include="..\src\music\dmusic.h" />
|
||||
<ClInclude Include="..\src\driver.h" />
|
||||
<ClInclude Include="..\src\economy_base.h" />
|
||||
@@ -570,7 +568,6 @@
|
||||
<ClInclude Include="..\src\road_type.h" />
|
||||
<ClInclude Include="..\src\roadstop_base.h" />
|
||||
<ClInclude Include="..\src\roadveh.h" />
|
||||
<ClInclude Include="..\src\safeguards.h" />
|
||||
<ClInclude Include="..\src\screenshot.h" />
|
||||
<ClInclude Include="..\src\sdl.h" />
|
||||
<ClInclude Include="..\src\sound\sdl_s.h" />
|
||||
@@ -807,6 +804,7 @@
|
||||
<ClCompile Include="..\src\clear_cmd.cpp" />
|
||||
<ClCompile Include="..\src\company_cmd.cpp" />
|
||||
<ClCompile Include="..\src\depot_cmd.cpp" />
|
||||
<ClCompile Include="..\src\disaster_cmd.cpp" />
|
||||
<ClCompile Include="..\src\group_cmd.cpp" />
|
||||
<ClCompile Include="..\src\industry_cmd.cpp" />
|
||||
<ClCompile Include="..\src\misc_cmd.cpp" />
|
||||
@@ -883,7 +881,6 @@
|
||||
<ClInclude Include="..\src\table\elrail_data.h" />
|
||||
<ClInclude Include="..\src\table\engines.h" />
|
||||
<ClInclude Include="..\src\table\genland.h" />
|
||||
<ClInclude Include="..\src\table\heightmap_colours.h" />
|
||||
<ClInclude Include="..\src\table\industry_land.h" />
|
||||
<ClInclude Include="..\src\table\landscape_sprite.h" />
|
||||
<ClInclude Include="..\src\table\newgrf_debug_data.h" />
|
||||
@@ -953,8 +950,13 @@
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqpcheader.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstate.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdblob.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdio.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdsystem.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqtable.h" />
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\squirrel.h" />
|
||||
|
@@ -162,9 +162,6 @@
|
||||
<ClCompile Include="..\src\depot.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\disaster_vehicle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\driver.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
@@ -543,9 +540,6 @@
|
||||
<ClInclude Include="..\src\direction_type.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\disaster_vehicle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\music\dmusic.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -939,9 +933,6 @@
|
||||
<ClInclude Include="..\src\roadveh.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\safeguards.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\screenshot.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -1650,6 +1641,9 @@
|
||||
<ClCompile Include="..\src\depot_cmd.cpp">
|
||||
<Filter>Command handlers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\disaster_cmd.cpp">
|
||||
<Filter>Command handlers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\group_cmd.cpp">
|
||||
<Filter>Command handlers</Filter>
|
||||
</ClCompile>
|
||||
@@ -1878,9 +1872,6 @@
|
||||
<ClInclude Include="..\src\table\genland.h">
|
||||
<Filter>Tables</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\table\heightmap_colours.h">
|
||||
<Filter>Tables</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\table\industry_land.h">
|
||||
<Filter>Tables</Filter>
|
||||
</ClInclude>
|
||||
@@ -2088,12 +2079,27 @@
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdaux.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdblob.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdio.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdmath.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdstring.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\include\sqstdsystem.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\3rdparty\squirrel\squirrel\sqstring.h">
|
||||
<Filter>Squirrel headers</Filter>
|
||||
</ClInclude>
|
||||
|
@@ -514,10 +514,6 @@
|
||||
RelativePath=".\..\src\depot.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_vehicle.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\driver.cpp"
|
||||
>
|
||||
@@ -1026,10 +1022,6 @@
|
||||
RelativePath=".\..\src\direction_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_vehicle.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\music\dmusic.h"
|
||||
>
|
||||
@@ -1554,10 +1546,6 @@
|
||||
RelativePath=".\..\src\roadveh.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\safeguards.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\screenshot.h"
|
||||
>
|
||||
@@ -2518,6 +2506,10 @@
|
||||
RelativePath=".\..\src\depot_cmd.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_cmd.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\group_cmd.cpp"
|
||||
>
|
||||
@@ -2830,10 +2822,6 @@
|
||||
RelativePath=".\..\src\table\genland.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\heightmap_colours.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\industry_land.h"
|
||||
>
|
||||
@@ -3126,14 +3114,34 @@
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdblob.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdio.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdsystem.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h"
|
||||
>
|
||||
|
@@ -511,10 +511,6 @@
|
||||
RelativePath=".\..\src\depot.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_vehicle.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\driver.cpp"
|
||||
>
|
||||
@@ -1023,10 +1019,6 @@
|
||||
RelativePath=".\..\src\direction_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_vehicle.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\music\dmusic.h"
|
||||
>
|
||||
@@ -1551,10 +1543,6 @@
|
||||
RelativePath=".\..\src\roadveh.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\safeguards.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\screenshot.h"
|
||||
>
|
||||
@@ -2515,6 +2503,10 @@
|
||||
RelativePath=".\..\src\depot_cmd.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\disaster_cmd.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\group_cmd.cpp"
|
||||
>
|
||||
@@ -2827,10 +2819,6 @@
|
||||
RelativePath=".\..\src\table\genland.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\heightmap_colours.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\industry_land.h"
|
||||
>
|
||||
@@ -3123,14 +3111,34 @@
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdaux.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdblob.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdblobimpl.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdio.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdmath.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\sqstdlib\sqstdstream.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdstring.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\include\sqstdsystem.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\3rdparty\squirrel\squirrel\sqstring.h"
|
||||
>
|
||||
|
72
readme.txt
72
readme.txt
@@ -1,5 +1,5 @@
|
||||
Last updated: 2015-12-01
|
||||
Release version: 1.5.3
|
||||
Last updated: 2014-06-02
|
||||
Release version: 1.4.1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -661,12 +661,6 @@ The md5 implementation in src/3rdparty/md5 is licensed under the Zlib
|
||||
license. See the comments in the source files in src/3rdparty/md5 for
|
||||
the complete license text.
|
||||
|
||||
The implementations of Posix getaddrinfo and getnameinfo for OS/2 in
|
||||
src/3rdparty/os2 are distributed partly under the GNU Lesser General Public
|
||||
License 2.1, and partly under the (3-clause) BSD license. The exact licensing
|
||||
terms can be found in src/3rdparty/os2/getaddrinfo.c resp.
|
||||
src/3rdparty/os2/getnameinfo.c.
|
||||
|
||||
The exe2coff implementation in os/dos/exe2coff is available under the
|
||||
GPL, with a number of additional terms. See os/dos/exe2coff/copying and
|
||||
os/dos/exe2coff/copying.dj for the exact licensing terms.
|
||||
@@ -680,47 +674,46 @@ http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip
|
||||
X.X) Credits
|
||||
---- -------
|
||||
The OpenTTD team (in alphabetical order):
|
||||
Albert Hofkamp (Alberth) - GUI expert (since 0.7)
|
||||
Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)
|
||||
Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)
|
||||
Christoph Elsenhans (frosch) - General coding (since 0.6)
|
||||
Loïc Guilloux (glx) - Windows Expert (since 0.4.5)
|
||||
Michael Lutz (michi_cc) - Path based signals (since 0.7)
|
||||
Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)
|
||||
Peter Nelson (peter1138) - Spiritual descendant from newGRF gods (since 0.4.5)
|
||||
Ingo von Borstel (planetmaker) - General coding, Support (since 1.1)
|
||||
Remko Bijker (Rubidium) - Lead coder and way more (since 0.4.5)
|
||||
José Soler (Terkhen) - General coding (since 1.0)
|
||||
Leif Linse (Zuu) - AI/Game Script (since 1.2)
|
||||
Albert Hofkamp (Alberth) - GUI expert
|
||||
Jean-François Claeys (Belugas) - GUI, newindustries and more
|
||||
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework
|
||||
Ulf Hermann (fonsinchen) - Cargo Distribution
|
||||
Christoph Elsenhans (frosch) - General coding
|
||||
Loïc Guilloux (glx) - Windows Expert
|
||||
Michael Lutz (michi_cc) - Path based signals
|
||||
Owen Rudge (orudge) - Forum host, OS/2 port
|
||||
Peter Nelson (peter1138) - Spiritual descendant from newGRF gods
|
||||
Ingo von Borstel (planetmaker) - Support
|
||||
Remko Bijker (Rubidium) - Lead coder and way more
|
||||
Zdeněk Sojka (SmatZ) - Bug finder and fixer
|
||||
José Soler (Terkhen) - General coding
|
||||
Thijs Marinussen (Yexo) - AI Framework
|
||||
Leif Linse (Zuu) - AI/Game Script
|
||||
|
||||
Inactive Developers:
|
||||
Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
|
||||
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7)
|
||||
Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
|
||||
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
|
||||
Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
|
||||
Attila Bán (MiHaMiX) - WebTranslator 1 and 2 (0.3 - 0.5)
|
||||
Zdeněk Sojka (SmatZ) - Bug finder and fixer (0.6 - 1.3)
|
||||
Christoph Mallon (Tron) - Programmer, code correctness police (0.3 - 0.5)
|
||||
Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
|
||||
Thijs Marinussen (Yexo) - AI Framework, General (0.6 - 1.3)
|
||||
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles
|
||||
Victor Fischer (Celestar) - Programming everywhere you need him to
|
||||
Tamás Faragó (Darkvater) - Ex-Lead coder
|
||||
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
|
||||
Jonathan Coome (Maedhros) - High priest of the NewGRF Temple
|
||||
Attila Bán (MiHaMiX) - WebTranslator 1 and 2
|
||||
Christoph Mallon (Tron) - Programmer, code correctness police
|
||||
|
||||
Retired Developers:
|
||||
Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
|
||||
Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
|
||||
Emil Djupfeld (egladil) - MacOSX port (0.4 - 0.6)
|
||||
Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
|
||||
Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
|
||||
Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
|
||||
Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
|
||||
Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
|
||||
Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
|
||||
Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)
|
||||
Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)
|
||||
Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)
|
||||
Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker
|
||||
Patric Stout (TrueBrain) - NoProgrammer (0.3 - 1.2), sys op (active)
|
||||
|
||||
Thanks to:
|
||||
Josef Drexler - For his great work on TTDPatch.
|
||||
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
|
||||
Petr Baudiš (pasky) - Many patches, newgrf support, etc.
|
||||
Simon Sasburg (HackyKid) - For the many bugfixes he has blessed us with
|
||||
Stefan Meißner (sign_de) - For his work on the console
|
||||
Mike Ragsdale - OpenTTD installer
|
||||
Cian Duffy (MYOB) - BeOS port / manual writing
|
||||
Christian Rosentreter (tokai) - MorphOS / AmigaOS port
|
||||
Richard Kempton (RichK67) - Additional airports, initial TGP implementation
|
||||
Alberto Demichelis - Squirrel scripting language
|
||||
@@ -729,6 +722,7 @@ Thanks to:
|
||||
George - Canal graphics
|
||||
Andrew Parkhouse (andythenorth) - River graphics
|
||||
David Dallaston (Pikka) - Tram tracks
|
||||
Fleashosio - Titlegame
|
||||
All Translators - For their support to make OpenTTD a truly international game
|
||||
Bug Reporters - Thanks for all bug reports
|
||||
Chris Sawyer - For an amazing game!
|
||||
|
19
source.list
19
source.list
@@ -19,7 +19,6 @@ date.cpp
|
||||
debug.cpp
|
||||
dedicated.cpp
|
||||
depot.cpp
|
||||
disaster_vehicle.cpp
|
||||
driver.cpp
|
||||
economy.cpp
|
||||
effectvehicle.cpp
|
||||
@@ -99,10 +98,6 @@ townname.cpp
|
||||
#else
|
||||
#if OS2
|
||||
os/os2/os2.cpp
|
||||
3rdparty/os2/getaddrinfo.c
|
||||
3rdparty/os2/getaddrinfo.h
|
||||
3rdparty/os2/getnameinfo.c
|
||||
3rdparty/os2/getnameinfo.h
|
||||
#else
|
||||
#if OSX
|
||||
os/macosx/crashlog_osx.cpp
|
||||
@@ -177,7 +172,6 @@ depot_map.h
|
||||
depot_type.h
|
||||
direction_func.h
|
||||
direction_type.h
|
||||
disaster_vehicle.h
|
||||
music/dmusic.h
|
||||
driver.h
|
||||
economy_base.h
|
||||
@@ -309,7 +303,6 @@ road_internal.h
|
||||
road_type.h
|
||||
roadstop_base.h
|
||||
roadveh.h
|
||||
safeguards.h
|
||||
screenshot.h
|
||||
sdl.h
|
||||
sound/sdl_s.h
|
||||
@@ -569,6 +562,7 @@ autoreplace_cmd.cpp
|
||||
clear_cmd.cpp
|
||||
company_cmd.cpp
|
||||
depot_cmd.cpp
|
||||
disaster_cmd.cpp
|
||||
group_cmd.cpp
|
||||
industry_cmd.cpp
|
||||
misc_cmd.cpp
|
||||
@@ -649,7 +643,6 @@ table/control_codes.h
|
||||
table/elrail_data.h
|
||||
table/engines.h
|
||||
table/genland.h
|
||||
table/heightmap_colours.h
|
||||
table/industry_land.h
|
||||
table/landscape_sprite.h
|
||||
table/newgrf_debug_data.h
|
||||
@@ -727,8 +720,13 @@ script/squirrel_std.hpp
|
||||
3rdparty/squirrel/squirrel/sqpcheader.h
|
||||
3rdparty/squirrel/squirrel/sqstate.h
|
||||
3rdparty/squirrel/include/sqstdaux.h
|
||||
3rdparty/squirrel/include/sqstdblob.h
|
||||
3rdparty/squirrel/sqstdlib/sqstdblobimpl.h
|
||||
3rdparty/squirrel/include/sqstdio.h
|
||||
3rdparty/squirrel/include/sqstdmath.h
|
||||
3rdparty/squirrel/sqstdlib/sqstdstream.h
|
||||
3rdparty/squirrel/include/sqstdstring.h
|
||||
3rdparty/squirrel/include/sqstdsystem.h
|
||||
3rdparty/squirrel/squirrel/sqstring.h
|
||||
3rdparty/squirrel/squirrel/sqtable.h
|
||||
3rdparty/squirrel/include/squirrel.h
|
||||
@@ -1110,10 +1108,7 @@ music/null_m.cpp
|
||||
#else
|
||||
#if DOS
|
||||
#else
|
||||
#if MORPHOS
|
||||
#else
|
||||
music/extmidi.cpp
|
||||
#end
|
||||
music/extmidi.cpp
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
|
2
src/3rdparty/md5/md5.cpp
vendored
2
src/3rdparty/md5/md5.cpp
vendored
@@ -60,8 +60,6 @@
|
||||
#include "../../core/endian_func.hpp"
|
||||
#include "md5.h"
|
||||
|
||||
#include "../../safeguards.h"
|
||||
|
||||
#define T_MASK ((uint32)~0)
|
||||
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
|
||||
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
|
||||
|
299
src/3rdparty/os2/getaddrinfo.c
vendored
299
src/3rdparty/os2/getaddrinfo.c
vendored
@@ -1,299 +0,0 @@
|
||||
/*
|
||||
* This file is part of libESMTP, a library for submission of RFC 2822
|
||||
* formatted electronic mail messages using the SMTP protocol described
|
||||
* in RFC 2821.
|
||||
*
|
||||
* Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* An emulation of the RFC 2553 / Posix getaddrinfo resolver interface.
|
||||
*/
|
||||
|
||||
#if !HAVE_GETADDRINFO
|
||||
|
||||
/* Need to turn off Posix features in glibc to build this */
|
||||
#undef _POSIX_C_SOURCE
|
||||
#undef _XOPEN_SOURCE
|
||||
|
||||
#include "getaddrinfo.h"
|
||||
//#include "compat/inet_pton.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
|
||||
static struct addrinfo *
|
||||
dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen) {
|
||||
struct addrinfo *ret;
|
||||
|
||||
ret = malloc (sizeof (struct addrinfo));
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
memcpy (ret, info, sizeof (struct addrinfo));
|
||||
ret->ai_addr = malloc (addrlen);
|
||||
if (ret->ai_addr == NULL) {
|
||||
free (ret);
|
||||
return NULL;
|
||||
}
|
||||
memcpy (ret->ai_addr, addr, addrlen);
|
||||
ret->ai_addrlen = addrlen;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
getaddrinfo (const char *nodename, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **res)
|
||||
{
|
||||
struct hostent *hp;
|
||||
struct servent *servent;
|
||||
const char *socktype;
|
||||
int port;
|
||||
struct addrinfo hint, result;
|
||||
struct addrinfo *ai, *sai, *eai;
|
||||
char **addrs;
|
||||
|
||||
if (servname == NULL && nodename == NULL)
|
||||
return EAI_NONAME;
|
||||
|
||||
memset (&result, 0, sizeof result);
|
||||
|
||||
/* default for hints */
|
||||
if (hints == NULL) {
|
||||
memset (&hint, 0, sizeof hint);
|
||||
hint.ai_family = PF_UNSPEC;
|
||||
hints = &hint;
|
||||
}
|
||||
|
||||
if (servname == NULL)
|
||||
port = 0;
|
||||
else {
|
||||
/* check for tcp or udp sockets only */
|
||||
if (hints->ai_socktype == SOCK_STREAM)
|
||||
socktype = "tcp";
|
||||
else if (hints->ai_socktype == SOCK_DGRAM)
|
||||
socktype = "udp";
|
||||
else
|
||||
return EAI_SERVICE;
|
||||
result.ai_socktype = hints->ai_socktype;
|
||||
|
||||
/* Note: maintain port in host byte order to make debugging easier */
|
||||
if (isdigit (*servname))
|
||||
port = strtol (servname, NULL, 10);
|
||||
else if ((servent = getservbyname (servname, socktype)) != NULL)
|
||||
port = ntohs (servent->s_port);
|
||||
else
|
||||
return EAI_NONAME;
|
||||
}
|
||||
|
||||
/* if nodename == NULL refer to the local host for a client or any
|
||||
for a server */
|
||||
if (nodename == NULL) {
|
||||
struct sockaddr_in sin;
|
||||
|
||||
/* check protocol family is PF_UNSPEC or PF_INET - could try harder
|
||||
for IPv6 but that's more code than I'm prepared to write */
|
||||
if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
|
||||
result.ai_family = AF_INET;
|
||||
else
|
||||
return EAI_FAMILY;
|
||||
|
||||
sin.sin_family = result.ai_family;
|
||||
sin.sin_port = htons (port);
|
||||
if (hints->ai_flags & AI_PASSIVE)
|
||||
sin.sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
else
|
||||
sin.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
|
||||
/* Duplicate result and addr and return */
|
||||
*res = dup_addrinfo (&result, &sin, sizeof sin);
|
||||
return (*res == NULL) ? EAI_MEMORY : 0;
|
||||
}
|
||||
|
||||
/* If AI_NUMERIC is specified, use inet_pton to translate numbers and
|
||||
dots notation. */
|
||||
if (hints->ai_flags & AI_NUMERICHOST) {
|
||||
struct sockaddr_in sin;
|
||||
|
||||
/* check protocol family is PF_UNSPEC or PF_INET */
|
||||
if (hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET)
|
||||
result.ai_family = AF_INET;
|
||||
else
|
||||
return EAI_FAMILY;
|
||||
|
||||
sin.sin_family = result.ai_family;
|
||||
sin.sin_port = htons (port);
|
||||
if (inet_pton(result.ai_family, nodename, &sin.sin_addr)==0)
|
||||
return EAI_NONAME;
|
||||
sin.sin_addr.s_addr = inet_addr (nodename);
|
||||
/* Duplicate result and addr and return */
|
||||
*res = dup_addrinfo (&result, &sin, sizeof sin);
|
||||
return (*res == NULL) ? EAI_MEMORY : 0;
|
||||
}
|
||||
|
||||
#if HAVE_H_ERRNO
|
||||
h_errno = 0;
|
||||
#endif
|
||||
errno = 0;
|
||||
hp = gethostbyname(nodename);
|
||||
if (hp == NULL) {
|
||||
#ifdef EAI_SYSTEM
|
||||
if (errno != 0) {
|
||||
return EAI_SYSTEM;
|
||||
}
|
||||
#endif
|
||||
switch (h_errno) {
|
||||
case HOST_NOT_FOUND:
|
||||
return EAI_NODATA;
|
||||
case NO_DATA:
|
||||
return EAI_NODATA;
|
||||
#if defined(NO_ADDRESS) && NO_ADDRESS != NO_DATA
|
||||
case NO_ADDRESS:
|
||||
return EAI_NODATA;
|
||||
#endif
|
||||
case NO_RECOVERY:
|
||||
return EAI_FAIL;
|
||||
case TRY_AGAIN:
|
||||
return EAI_AGAIN;
|
||||
default:
|
||||
return EAI_FAIL;
|
||||
}
|
||||
return EAI_FAIL;
|
||||
}
|
||||
|
||||
/* Check that the address family is acceptable.
|
||||
*/
|
||||
switch (hp->h_addrtype) {
|
||||
case AF_INET:
|
||||
if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET))
|
||||
return EAI_FAMILY;
|
||||
break;
|
||||
#ifndef __OS2__
|
||||
case AF_INET6:
|
||||
if (!(hints->ai_family == PF_UNSPEC || hints->ai_family == PF_INET6))
|
||||
return EAI_FAMILY;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return EAI_FAMILY;
|
||||
}
|
||||
|
||||
/* For each element pointed to by hp, create an element in the
|
||||
result linked list. */
|
||||
sai = eai = NULL;
|
||||
for (addrs = hp->h_addr_list; *addrs != NULL; addrs++) {
|
||||
struct sockaddr sa;
|
||||
size_t addrlen;
|
||||
|
||||
if (hp->h_length < 1)
|
||||
continue;
|
||||
sa.sa_family = hp->h_addrtype;
|
||||
switch (hp->h_addrtype) {
|
||||
case AF_INET:
|
||||
((struct sockaddr_in *) &sa)->sin_port = htons (port);
|
||||
memcpy (&((struct sockaddr_in *) &sa)->sin_addr,
|
||||
*addrs, hp->h_length);
|
||||
addrlen = sizeof (struct sockaddr_in);
|
||||
break;
|
||||
#ifndef __OS2__
|
||||
case AF_INET6:
|
||||
#if SIN6_LEN
|
||||
((struct sockaddr_in6 *) &sa)->sin6_len = hp->h_length;
|
||||
#endif
|
||||
((struct sockaddr_in6 *) &sa)->sin6_port = htons (port);
|
||||
memcpy (&((struct sockaddr_in6 *) &sa)->sin6_addr,
|
||||
*addrs, hp->h_length);
|
||||
addrlen = sizeof (struct sockaddr_in6);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
result.ai_family = hp->h_addrtype;
|
||||
ai = dup_addrinfo (&result, &sa, addrlen);
|
||||
if (ai == NULL) {
|
||||
freeaddrinfo (sai);
|
||||
return EAI_MEMORY;
|
||||
}
|
||||
if (sai == NULL)
|
||||
sai = ai;
|
||||
else
|
||||
eai->ai_next = ai;
|
||||
eai = ai;
|
||||
}
|
||||
|
||||
if (sai == NULL) {
|
||||
return EAI_NODATA;
|
||||
}
|
||||
|
||||
if (hints->ai_flags & AI_CANONNAME) {
|
||||
sai->ai_canonname = malloc (strlen (hp->h_name) + 1);
|
||||
if (sai->ai_canonname == NULL) {
|
||||
freeaddrinfo (sai);
|
||||
return EAI_MEMORY;
|
||||
}
|
||||
strcpy (sai->ai_canonname, hp->h_name);
|
||||
}
|
||||
|
||||
*res = sai;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
freeaddrinfo (struct addrinfo *ai)
|
||||
{
|
||||
struct addrinfo *next;
|
||||
|
||||
while (ai != NULL) {
|
||||
next = ai->ai_next;
|
||||
if (ai->ai_canonname != NULL)
|
||||
free (ai->ai_canonname);
|
||||
if (ai->ai_addr != NULL)
|
||||
free (ai->ai_addr);
|
||||
free (ai);
|
||||
ai = next;
|
||||
}
|
||||
}
|
||||
|
||||
const char *
|
||||
gai_strerror (int ecode)
|
||||
{
|
||||
static const char *eai_descr[] = {
|
||||
"no error",
|
||||
"address family for nodename not supported", /* EAI_ADDRFAMILY */
|
||||
"temporary failure in name resolution", /* EAI_AGAIN */
|
||||
"invalid value for ai_flags", /* EAI_BADFLAGS */
|
||||
"non-recoverable failure in name resolution", /* EAI_FAIL */
|
||||
"ai_family not supported", /* EAI_FAMILY */
|
||||
"memory allocation failure", /* EAI_MEMORY */
|
||||
"no address associated with nodename", /* EAI_NODATA */
|
||||
"nodename nor servname provided, or not known", /* EAI_NONAME */
|
||||
"servname not supported for ai_socktype", /* EAI_SERVICE */
|
||||
"ai_socktype not supported", /* EAI_SOCKTYPE */
|
||||
"system error returned in errno", /* EAI_SYSTEM */
|
||||
"argument buffer overflow", /* EAI_OVERFLOW */
|
||||
};
|
||||
|
||||
if (ecode < 0 || ecode > (int) (sizeof eai_descr/ sizeof eai_descr[0]))
|
||||
return "unknown error";
|
||||
return eai_descr[ecode];
|
||||
}
|
||||
|
||||
#endif /* HAVE_GETADDRINFO */
|
101
src/3rdparty/os2/getaddrinfo.h
vendored
101
src/3rdparty/os2/getaddrinfo.h
vendored
@@ -1,101 +0,0 @@
|
||||
#ifndef _getaddrinfo_h
|
||||
#define _getaddrinfo_h
|
||||
|
||||
/*
|
||||
* Shamelessly duplicated from the fetchmail public sources
|
||||
* for use by the Squid Project under GNU Public License.
|
||||
*
|
||||
* Update/Maintenance History:
|
||||
*
|
||||
* 15-Aug-2007 : Copied from fetchmail 6.3.8
|
||||
* - added protection around libray headers
|
||||
*
|
||||
* 16-Aug-2007 : Altered configure checks
|
||||
* Un-hacked slightly to use system gethostbyname()
|
||||
*
|
||||
* Original License and code follows.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is part of libESMTP, a library for submission of RFC 2822
|
||||
* formatted electronic mail messages using the SMTP protocol described
|
||||
* in RFC 2821.
|
||||
*
|
||||
* Copyright (C) 2001,2002 Brian Stafford <brian@stafford.uklinux.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* Structure and prototypes taken from RFC 2553 */
|
||||
|
||||
/* SG 23/09/2007:
|
||||
On Windows the following definitions are already available, may be that
|
||||
this could be needed on some other platform */
|
||||
typedef int socklen_t;
|
||||
|
||||
struct addrinfo {
|
||||
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
|
||||
int ai_family; /* PF_xxx */
|
||||
int ai_socktype; /* SOCK_xxx */
|
||||
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
|
||||
socklen_t ai_addrlen; /* length of ai_addr */
|
||||
char *ai_canonname; /* canonical name for nodename */
|
||||
struct sockaddr *ai_addr; /* binary address */
|
||||
struct addrinfo *ai_next; /* next structure in linked list */
|
||||
};
|
||||
|
||||
/* Supposed to be defined in <netdb.h> */
|
||||
#define AI_ADDRCONFIG 0
|
||||
#define AI_PASSIVE 1 /* Socket address is intended for `bind'. */
|
||||
#define AI_CANONNAME 2 /* Request for canonical name. */
|
||||
#define AI_NUMERICHOST 4 /* Don't use name resolution. */
|
||||
|
||||
/* Supposed to be defined in <netdb.h> */
|
||||
#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */
|
||||
#define EAI_AGAIN 2 /* temporary failure in name resolution */
|
||||
#define EAI_BADFLAGS 3 /* invalid value for ai_flags */
|
||||
#define EAI_FAIL 4 /* non-recoverable failure in name resolution */
|
||||
#define EAI_FAMILY 5 /* ai_family not supported */
|
||||
#define EAI_MEMORY 6 /* memory allocation failure */
|
||||
#define EAI_NODATA 7 /* no address associated with nodename */
|
||||
#define EAI_NONAME 8 /* nodename nor servname provided, or not known */
|
||||
#define EAI_SERVICE 9 /* servname not supported for ai_socktype */
|
||||
#define EAI_SOCKTYPE 10 /* ai_socktype not supported */
|
||||
|
||||
#ifndef EAI_SYSTEM
|
||||
/* Not defined on mingw32. */
|
||||
#define EAI_SYSTEM 11 /* System error returned in `errno'. */
|
||||
#endif
|
||||
#ifndef EAI_OVERFLOW
|
||||
/* Not defined on mingw32. */
|
||||
#define EAI_OVERFLOW 12 /* Argument buffer overflow. */
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/* RFC 2553 / Posix resolver */
|
||||
int getaddrinfo (const char *nodename, const char *servname,
|
||||
const struct addrinfo *hints, struct addrinfo **res);
|
||||
/* Free addrinfo structure and associated storage */
|
||||
void freeaddrinfo (struct addrinfo *ai);
|
||||
|
||||
/* Convert error return from getaddrinfo() to string */
|
||||
const char *gai_strerror (int code);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _getaddrinfo_h */
|
367
src/3rdparty/os2/getnameinfo.c
vendored
367
src/3rdparty/os2/getnameinfo.c
vendored
@@ -1,367 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the project nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Issues to be discussed:
|
||||
* - RFC2553 says that we should raise error on short buffer. X/Open says
|
||||
* we need to truncate the result. We obey RFC2553 (and X/Open should be
|
||||
* modified). ipngwg rough consensus seems to follow RFC2553. RFC3493 says
|
||||
* nothing about it, but defines a new error code EAI_OVERFLOW which seems
|
||||
* to be intended the code for this case.
|
||||
* - What is "local" in NI_NOFQDN? (see comments in the code)
|
||||
* - NI_NAMEREQD and NI_NUMERICHOST conflict with each other.
|
||||
* - (KAME extension) always attach textual scopeid (fe80::1%lo0), if
|
||||
* sin6_scope_id is filled - standardization status?
|
||||
* - what should we do if we should do getservbyport("sctp")?
|
||||
*/
|
||||
|
||||
/*
|
||||
* Considerations about thread-safeness
|
||||
* The code in this file is thread-safe, and so the thread-safeness of
|
||||
* getnameinfo() depends on the property of backend functions.
|
||||
* - getservbyport() is not thread safe for most systems we are targeting.
|
||||
* - getipnodebyaddr() is thread safe. However, many resolver libraries
|
||||
* used in the function are not thread safe.
|
||||
* - gethostbyaddr() is usually not thread safe.
|
||||
*/
|
||||
|
||||
#if !HAVE_GETNAMEINFO
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <arpa/nameser.h>
|
||||
#include <netdb.h>
|
||||
#include <resolv.h>
|
||||
#include <string.h>
|
||||
#include <stddef.h>
|
||||
#include <errno.h>
|
||||
#include <inttypes.h>
|
||||
#include "getaddrinfo.h"
|
||||
#include "getnameinfo.h"
|
||||
|
||||
static const struct afd {
|
||||
int a_af;
|
||||
int a_addrlen;
|
||||
int a_socklen;
|
||||
int a_off;
|
||||
int a_portoff;
|
||||
} afdl [] = {
|
||||
#if INET6
|
||||
{PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
|
||||
offsetof(struct sockaddr_in6, sin6_addr),
|
||||
offsetof(struct sockaddr_in6, sin6_port)},
|
||||
#endif
|
||||
{PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in),
|
||||
offsetof(struct sockaddr_in, sin_addr),
|
||||
offsetof(struct sockaddr_in, sin_port)},
|
||||
{0, 0, 0, 0, 0},
|
||||
};
|
||||
|
||||
#if INET6
|
||||
static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *,
|
||||
size_t, int));
|
||||
static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int));
|
||||
#endif
|
||||
|
||||
int
|
||||
getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
|
||||
const struct sockaddr *sa;
|
||||
socklen_t salen;
|
||||
char *host;
|
||||
size_t hostlen;
|
||||
char *serv;
|
||||
size_t servlen;
|
||||
int flags;
|
||||
{
|
||||
const struct afd *afd;
|
||||
struct servent *sp;
|
||||
struct hostent *hp;
|
||||
unsigned short port;
|
||||
int family, i;
|
||||
const char *addr;
|
||||
uint32_t v4a;
|
||||
char numserv[512];
|
||||
|
||||
if (sa == NULL)
|
||||
return EAI_FAIL;
|
||||
|
||||
#if HAVE_SA_LEN /*XXX*/
|
||||
if (sa->sa_len != salen)
|
||||
return EAI_FAIL;
|
||||
#endif
|
||||
|
||||
family = sa->sa_family;
|
||||
for (i = 0; afdl[i].a_af; i++)
|
||||
if (afdl[i].a_af == family) {
|
||||
afd = &afdl[i];
|
||||
goto found;
|
||||
}
|
||||
return EAI_FAMILY;
|
||||
|
||||
found:
|
||||
if (salen != afd->a_socklen)
|
||||
return EAI_FAIL;
|
||||
|
||||
/* network byte order */
|
||||
memcpy(&port, (const char *)sa + afd->a_portoff, sizeof(port));
|
||||
addr = (const char *)sa + afd->a_off;
|
||||
|
||||
if (serv == NULL || servlen == 0) {
|
||||
/*
|
||||
* do nothing in this case.
|
||||
* in case you are wondering if "&&" is more correct than
|
||||
* "||" here: RFC3493 says that serv == NULL OR servlen == 0
|
||||
* means that the caller does not want the result.
|
||||
*/
|
||||
} else {
|
||||
if (flags & NI_NUMERICSERV)
|
||||
sp = NULL;
|
||||
else {
|
||||
sp = getservbyport(port,
|
||||
(flags & NI_DGRAM) ? "udp" : "tcp");
|
||||
}
|
||||
if (sp) {
|
||||
if (strlen(sp->s_name) + 1 > servlen)
|
||||
return EAI_OVERFLOW;
|
||||
strncpy(serv, sp->s_name, servlen);
|
||||
} else {
|
||||
snprintf(numserv, sizeof(numserv), "%u", ntohs(port));
|
||||
if (strlen(numserv) + 1 > servlen)
|
||||
return EAI_OVERFLOW;
|
||||
strncpy(serv, numserv, servlen);
|
||||
}
|
||||
}
|
||||
|
||||
switch (sa->sa_family) {
|
||||
case AF_INET:
|
||||
v4a = (uint32_t)
|
||||
ntohl(((const struct sockaddr_in *)sa)->sin_addr.s_addr);
|
||||
if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
|
||||
flags |= NI_NUMERICHOST;
|
||||
v4a >>= IN_CLASSA_NSHIFT;
|
||||
if (v4a == 0)
|
||||
flags |= NI_NUMERICHOST;
|
||||
break;
|
||||
#if INET6
|
||||
case AF_INET6: {
|
||||
const struct sockaddr_in6 *sin6;
|
||||
sin6 = (const struct sockaddr_in6 *)sa;
|
||||
switch (sin6->sin6_addr.s6_addr[0]) {
|
||||
case 0x00:
|
||||
if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr))
|
||||
;
|
||||
else if (IN6_IS_ADDR_LOOPBACK(&sin6->sin6_addr))
|
||||
;
|
||||
else
|
||||
flags |= NI_NUMERICHOST;
|
||||
break;
|
||||
default:
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
||||
flags |= NI_NUMERICHOST;
|
||||
else if (IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr))
|
||||
flags |= NI_NUMERICHOST;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
if (host == NULL || hostlen == 0) {
|
||||
/*
|
||||
* do nothing in this case.
|
||||
* in case you are wondering if "&&" is more correct than
|
||||
* "||" here: RFC3493 says that host == NULL or hostlen == 0
|
||||
* means that the caller does not want the result.
|
||||
*/
|
||||
} else if (flags & NI_NUMERICHOST) {
|
||||
/* NUMERICHOST and NAMEREQD conflicts with each other */
|
||||
if (flags & NI_NAMEREQD)
|
||||
return EAI_NONAME;
|
||||
|
||||
goto numeric;
|
||||
} else {
|
||||
#if USE_GETIPNODEBY
|
||||
int h_error = 0;
|
||||
hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error);
|
||||
#else
|
||||
hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
|
||||
#if 0 // getnameinfo.c:161:9: error: variable 'h_error' set but not used
|
||||
#if HAVE_H_ERRNO
|
||||
h_error = h_errno;
|
||||
#else
|
||||
h_error = EINVAL;
|
||||
#endif
|
||||
#endif /* 0 */
|
||||
#endif
|
||||
|
||||
if (hp) {
|
||||
#if 0
|
||||
if (flags & NI_NOFQDN) {
|
||||
/*
|
||||
* According to RFC3493 section 6.2, NI_NOFQDN
|
||||
* means "node name portion of the FQDN shall
|
||||
* be returned for local hosts." The following
|
||||
* code tries to implement it by returning the
|
||||
* first label (the part before the first
|
||||
* period) of the FQDN. However, it is not
|
||||
* clear if this always makes sense, since the
|
||||
* given address may be outside of "local
|
||||
* hosts." Due to the unclear description, we
|
||||
* disable the code in this implementation.
|
||||
*/
|
||||
char *p;
|
||||
p = strchr(hp->h_name, '.');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
}
|
||||
#endif
|
||||
if (strlen(hp->h_name) + 1 > hostlen) {
|
||||
#if USE_GETIPNODEBY
|
||||
freehostent(hp);
|
||||
#endif
|
||||
return EAI_OVERFLOW;
|
||||
}
|
||||
strncpy(host, hp->h_name, hostlen);
|
||||
#if USE_GETIPNODEBY
|
||||
freehostent(hp);
|
||||
#endif
|
||||
} else {
|
||||
if (flags & NI_NAMEREQD)
|
||||
return EAI_NONAME;
|
||||
|
||||
numeric:
|
||||
switch (afd->a_af) {
|
||||
#if INET6
|
||||
case AF_INET6: {
|
||||
int error;
|
||||
|
||||
if ((error = ip6_parsenumeric(sa, addr, host,
|
||||
hostlen,
|
||||
flags)) != 0)
|
||||
return(error);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
if (inet_ntop(afd->a_af, addr, host,
|
||||
hostlen) == NULL)
|
||||
return EAI_SYSTEM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
#if INET6
|
||||
static int
|
||||
ip6_parsenumeric(sa, addr, host, hostlen, flags)
|
||||
const struct sockaddr *sa;
|
||||
const char *addr;
|
||||
char *host;
|
||||
size_t hostlen;
|
||||
int flags;
|
||||
{
|
||||
int numaddrlen;
|
||||
char numaddr[512];
|
||||
|
||||
if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr)) == NULL)
|
||||
return EAI_SYSTEM;
|
||||
|
||||
numaddrlen = strlen(numaddr);
|
||||
if (numaddrlen + 1 > hostlen) /* don't forget terminator */
|
||||
return EAI_OVERFLOW;
|
||||
strncpy(host, numaddr, hostlen);
|
||||
|
||||
if (((const struct sockaddr_in6 *)sa)->sin6_scope_id) {
|
||||
char zonebuf[SQUIDHOSTNAMELEN];
|
||||
int zonelen;
|
||||
|
||||
zonelen = ip6_sa2str(
|
||||
(const struct sockaddr_in6 *)(const void *)sa,
|
||||
zonebuf, sizeof(zonebuf), flags);
|
||||
if (zonelen < 0)
|
||||
return EAI_OVERFLOW;
|
||||
if (zonelen + 1 + numaddrlen + 1 > hostlen)
|
||||
return EAI_OVERFLOW;
|
||||
|
||||
/* construct <numeric-addr><delim><zoneid> */
|
||||
memcpy(host + numaddrlen + 1, zonebuf,
|
||||
(size_t)zonelen);
|
||||
host[numaddrlen] = SCOPE_DELIMITER;
|
||||
host[numaddrlen + 1 + zonelen] = '\0';
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
ip6_sa2str(sa6, buf, bufsiz, flags)
|
||||
const struct sockaddr_in6 *sa6;
|
||||
char *buf;
|
||||
size_t bufsiz;
|
||||
int flags;
|
||||
{
|
||||
unsigned int ifindex;
|
||||
const struct in6_addr *a6;
|
||||
int n;
|
||||
|
||||
ifindex = (unsigned int)sa6->sin6_scope_id;
|
||||
a6 = &sa6->sin6_addr;
|
||||
|
||||
#if NI_NUMERICSCOPE
|
||||
if ((flags & NI_NUMERICSCOPE) != 0) {
|
||||
n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
|
||||
if (n < 0 || n >= bufsiz)
|
||||
return -1;
|
||||
else
|
||||
return n;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* if_indextoname() does not take buffer size. not a good api... */
|
||||
if ((IN6_IS_ADDR_LINKLOCAL(a6) || IN6_IS_ADDR_MC_LINKLOCAL(a6) ||
|
||||
IN6_IS_ADDR_MC_NODELOCAL(a6)) && bufsiz >= IF_NAMESIZE) {
|
||||
char *p = if_indextoname(ifindex, buf);
|
||||
if (p)
|
||||
return (strlen(p));
|
||||
}
|
||||
|
||||
/* last resort */
|
||||
n = snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id);
|
||||
if (n < 0 || n >= bufsiz)
|
||||
return -1;
|
||||
else
|
||||
return n;
|
||||
}
|
||||
#endif /* INET6 */
|
||||
#endif
|
29
src/3rdparty/os2/getnameinfo.h
vendored
29
src/3rdparty/os2/getnameinfo.h
vendored
@@ -1,29 +0,0 @@
|
||||
#ifndef _getnameinfo_h
|
||||
#define _getnameinfo_h
|
||||
/*
|
||||
* Reconstructed from KAME getnameinfo.c (in lib/)
|
||||
*/
|
||||
|
||||
/* getnameinfo flags */
|
||||
#define NI_NOFQDN 0x0001
|
||||
#define NI_NUMERICHOST 0x0002 /* return numeric form of address */
|
||||
#define NI_NAMEREQD 0x0004 /* request DNS name */
|
||||
#define NI_NUMERICSERV 0x0008
|
||||
#define NI_DGRAM 0x0010
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/* RFC 2553 / Posix resolver */
|
||||
int getnameinfo(const struct sockaddr *sa,
|
||||
socklen_t salen,
|
||||
char *host,
|
||||
size_t hostlen,
|
||||
char *serv,
|
||||
size_t servlen,
|
||||
int flags );
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _getnameinfo_h */
|
41
src/3rdparty/squirrel/COMPILE
vendored
Normal file
41
src/3rdparty/squirrel/COMPILE
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
Squirrel 2.2.4 stable
|
||||
--------------------------------------------------------
|
||||
What is in this distribution?
|
||||
|
||||
squirrel
|
||||
static library implementing the compiler and interpreter of the language
|
||||
|
||||
sqstdlib
|
||||
the standard utility libraries
|
||||
|
||||
sq
|
||||
stand alone interpreter
|
||||
|
||||
doc
|
||||
The manual
|
||||
|
||||
etc
|
||||
a minimalistic embedding sample
|
||||
|
||||
samples
|
||||
samples programs
|
||||
|
||||
|
||||
HOW TO COMPILE
|
||||
---------------------------------------------------------
|
||||
GCC USERS
|
||||
.........................................................
|
||||
There is a very simple makefile that compiles all libraries and exes
|
||||
from the root of the project run 'make'
|
||||
|
||||
for 32 bits systems
|
||||
|
||||
$ make
|
||||
|
||||
for 64 bits systems
|
||||
|
||||
$ make sq64
|
||||
|
||||
VISUAL C++ USERS
|
||||
.........................................................
|
||||
Open squirrel.dsw from the root project directory and build(dho!)
|
357
src/3rdparty/squirrel/HISTORY
vendored
Normal file
357
src/3rdparty/squirrel/HISTORY
vendored
Normal file
@@ -0,0 +1,357 @@
|
||||
***version 2.2.5 stable***
|
||||
-sq_getsize() now returns userdatasize for classes and instances
|
||||
-added parameter 'isstatic' to _newmember metamethod(thx G.Meyer)
|
||||
-now array.sort() is implemented with heapsort
|
||||
-added SQUIRREL_VERSION_NUMBER preprocessor definition
|
||||
-now floats in scientific notation also accept numbers with no '.' (eg. 1e+6 or 1e6)
|
||||
-fixed some compiler warning
|
||||
-fixed a minor compiler bug
|
||||
-fixed some bugs when SQUSEDOUBLE is used in 32bits systems
|
||||
-fixed bug in GC
|
||||
|
||||
***2009-11-15 ***
|
||||
***version 2.2.4 stable***
|
||||
-fixed bug in functions with default parameters
|
||||
|
||||
***2009-06-30 ***
|
||||
***version 2.2.3 stable***
|
||||
-added sq_getfunctioninfo
|
||||
-added compile time flag SQUSEDOUBLE to use double precision floats
|
||||
-added global slot _floatsize_ int the base lib to recognize single precision and double precision builds
|
||||
-sq_wakeupvm can now resume the vm with an exception
|
||||
-added sqstd_format
|
||||
-generators can now be instantiated by calling sq_call() or closure.call()
|
||||
-fixed a bug in sqstd_printcallstack(thx takayuki_h)
|
||||
-fixed modulo by zero(thx jup)
|
||||
-fixed negative enums and constants
|
||||
-fixed generator crash bug if invoked as tail call (thx Mr.Accident)
|
||||
-fixed some minor bug
|
||||
|
||||
***2008-09-24 ***
|
||||
***version 2.2.2 stable***
|
||||
-fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident)
|
||||
-fixed coroutine error propagation
|
||||
-fixed lingering return value from native function (thx Tom Leonard)
|
||||
-fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard)
|
||||
-fixed some minor api bug
|
||||
-added sq_arrayremove() and sq_arrayinsert()
|
||||
|
||||
***2008-05-16 ***
|
||||
***version 2.2.1 stable***
|
||||
-fixed a tailcall bug
|
||||
|
||||
***2008-02-17 ***
|
||||
***version 2.2 stable ***
|
||||
-added _newslot metamethod in classes
|
||||
-added enums added constants
|
||||
-added sq_pushconsttable, sq_setconsttable
|
||||
-added default param
|
||||
-added octal literals(thx Dinosaur)
|
||||
-fixed debug hook, 'calls' and 'returns' are properly notified in the same number.
|
||||
-fixed a coroutine bug
|
||||
|
||||
***2007-07-29 ***
|
||||
***version 2.1.2 stable***
|
||||
-new behaviour for generators iteration using foreach
|
||||
now when a generator is iterated by foreach the value returned by a 'return val' statement
|
||||
will terminate the iteration but will not be returned as foreach iteration
|
||||
-added sq_setclassudsize()
|
||||
-added sq_clear()
|
||||
-added table.clear(), array.clear()
|
||||
-fixed sq_cmp() (thx jyuill)
|
||||
-fixed minor bugs
|
||||
|
||||
***2006-08-21 ***
|
||||
***version 2.1.1 stable***
|
||||
-vm refactoring
|
||||
-optimized internal function memory layout
|
||||
-new global symbol _version_ (is the version string)
|
||||
-code size optimization for float literals(on 32bits float builts)
|
||||
-now the raw ref API(sq_addref etc...) is fully reentrant.
|
||||
-fixed a bug in sq_getdelegate() now pushes null if the object doesn't have a delegate(thx MatzeB)
|
||||
-improved C reference performances in NO_GARBAGE_COLLECTOR builds
|
||||
-sq_getlocal() now enumerates also outer values.
|
||||
-fixed regexp library for GCC users.
|
||||
|
||||
***2006-03-19 ***
|
||||
***version 2.1 stable***
|
||||
-added static class fields, new keyword static
|
||||
-added 64bits architecture support
|
||||
-added global slot _intsize_ int the base lib to recognize 32bits and 64bits builds
|
||||
-added functions with fixed environment, closure.bindenv() built-in function
|
||||
-all types except userdata and null implement the tostring() method
|
||||
-string concatenation now invokes metamethod _tostring
|
||||
-new metamethods for class objects _newmember and _inherited
|
||||
-sq_call() sq_resume() sq_wakeupvm() have a new signature
|
||||
-new C referencing implementation(scales more with the amount of references)
|
||||
-refactored hash table
|
||||
-new api functions sq_newslot(),sq_tobool(),sq_getbase(), sq_instanceof(), sq_bindenv()
|
||||
-the api func sq_createslot was deprecated but still supported in form of C macro on top of sq_newslot
|
||||
-sq_setreleasehook() now also works for classes
|
||||
-stream.readstr() and stream.writestr() have been deprecated(this affects file and blob)
|
||||
-fixed squirrel.h undeclared api calls
|
||||
-fixed few minor bugs
|
||||
-SQChar is now defined as wchar_t
|
||||
-removed warning when building with -Wall -pedantic for GCC users
|
||||
-added new std io function writeclosuretofile()
|
||||
-added new std string functions strip(),rstrip(),lstrip() and split()
|
||||
-regular expressions operators (+,*) now have more POSIX greedyness behaviour
|
||||
-class constructors are now invoked as normal functions
|
||||
|
||||
***2005-10-02 ***
|
||||
***version 2.0.5 stable***
|
||||
-fixed some 64bits incompatibilities (thx sarge)
|
||||
-fixed minor bug in the stdlib format() function (thx Rick)
|
||||
-fixed a bug in dofile() that was preventing to compile empty files
|
||||
-added new API sq_poptop() & sq_getfreevariable()
|
||||
-some performance improvements
|
||||
|
||||
***2005-08-14 ***
|
||||
***version 2.0.4 stable***
|
||||
-weak references and related API calls
|
||||
-added sq_objtobool()
|
||||
-class instances memory policies improved(1 mem allocation for the whole instance)
|
||||
-typetags are now declared as SQUserPointer instead of unsigned int
|
||||
-first pass for 64bits compatibility
|
||||
-fixed minor bug in the stdio stream
|
||||
-fixed a bug in format()
|
||||
-fixed bug in string.tointeger() and string.tofloat()
|
||||
|
||||
***2005-06-24 ***
|
||||
***version 2.0.3 stable***
|
||||
-dofile() and loadfile() in the iolib now can decode ASCII, UTF8 files UCS2 big-endian and little-endian
|
||||
-sq_setparamscheck() : now typemesk can check for null
|
||||
-added string escape sequence \xhhhh
|
||||
-fixed some C++ standard incompatibilities
|
||||
|
||||
***2005-05-15 ***
|
||||
***version 2.0.2 stable***
|
||||
-performances improvements (expecially for GCC users)
|
||||
-removed all dependencies from C++ exception handling
|
||||
-various bugfixes
|
||||
|
||||
***2005-04-12 ***
|
||||
***version 2.0.1 stable***
|
||||
-various bugfixes
|
||||
-sq_setparamscheck() now allows spaces in the typemask
|
||||
|
||||
***2005-04-03 ***
|
||||
***version 2.0 stable***
|
||||
-added API sq_gettypetag()
|
||||
-added built-in function to the bool type(tointeger, tostring etc...)
|
||||
|
||||
***2005-02-27 ***
|
||||
***version 2.0 release candidate 1(RC 1)***
|
||||
-added API sq_reseterror()
|
||||
-modified sq_release()
|
||||
-now class instances can be cloned
|
||||
-various bufixes
|
||||
|
||||
***2005-01-26 ***
|
||||
***version 2.0 beta 1***
|
||||
-added bool type
|
||||
-class properties can be redefined in a derived class
|
||||
-added ops *= /= and %=
|
||||
-new syntax for class attributes declaration </ and /> instead of ( and )
|
||||
-increased the max number of literals per function from 65535 to 16777215
|
||||
-now free variables have proper lexical scoping
|
||||
-added API sq_createinstance(), sq_pushbool(), sq_getbool()
|
||||
-added built-in function type()
|
||||
-added built-in function obj.rawin(key) in table,class and instance
|
||||
-sq_rawget() and sq_rawset() now work also on classes and instances
|
||||
-the VM no longer uses C++ exception handling (more suitable for embedded devices)
|
||||
-various bufixes
|
||||
|
||||
***2004-12-21 ***
|
||||
***version 2.0 alpha 2***
|
||||
-globals scoping changed, now if :: is omitted the VM automatically falls back on the root table
|
||||
-various bufixes
|
||||
-added class level attributes
|
||||
|
||||
***2004-12-12 ***
|
||||
***version 2.0 alpha 1***
|
||||
-codebase branch from version 1.x
|
||||
-added classes
|
||||
-added functions with variable number of parameters(vargc & vargv and the ...)
|
||||
-0 and 0.0 are now considered 'false' by all conditional statements(if,while,for,?,do-while)
|
||||
-added new api functions sq_newclass() sq_setinstanceup() sq_getinstanceup() sq_getattributes() sq_setattributes()
|
||||
-modified api sq_settypetag()
|
||||
|
||||
***2004-11-01 ***
|
||||
***version 1.0 stable***
|
||||
-fixed some minor bug
|
||||
-improoved operator 'delete' performances
|
||||
-added scientific notation for float numbers( eg. 2.e16 or 2.e-2)
|
||||
|
||||
***2004-08-30 ***
|
||||
***version 1.0 release candidate 2(RC 2)***
|
||||
-fixed bug in the vm(thx Pierre Renaux)
|
||||
-fixed bug in the optimizer(thx Pierre Renaux)
|
||||
-fixed some bug in the documentation(thx JD)
|
||||
-added new api functions for raw object handling
|
||||
-removed nested multiline comments
|
||||
-reduced memory footprint in C references
|
||||
|
||||
***2004-08-23 ***
|
||||
***version 1.0 release candidate 1(RC 1)***
|
||||
-fixed division by zero
|
||||
-the 'in' operator and obj.rawget() do not query the default delegate anymore
|
||||
-added function sq_getprintfunc()
|
||||
-added new standard library 'auxlib'(implements default error handlers)
|
||||
|
||||
***2004-07-12 ***
|
||||
***version 1.0 beta 4***
|
||||
-fixed a bug in the integer.tochar() built-in method
|
||||
-fixed unary minus operator
|
||||
-fixed bug in dofile()
|
||||
-fixed inconsistency between != and == operators(on float/integer comparison)
|
||||
-added javascript style unsigned right shift operator '>>>'
|
||||
-added array(size) constructor built-in function
|
||||
-array.resize(size,[fill]) built-in function accepts an optional 'fill' value
|
||||
-improved debug API, added sq_getclosureinfo() and sq_setnativeclosurename()
|
||||
|
||||
***2004-05-23 ***
|
||||
***version 1.0 beta 3***
|
||||
-minor vm bug fixes
|
||||
-string allocation is now faster
|
||||
-tables and array memory usage is now less conservative(they shrink)
|
||||
-added regular expression routines in the standard library
|
||||
-The 'c' expression now accepts only 1 character(thx irbrian)
|
||||
-multiline strings <[ ]> have been substituted with C# style verbatim strings (eg. @"string")
|
||||
-added new keyword 'parent' for accessing the delegate of tables and unserdata
|
||||
-The metamethod '_clone' has been renamed '_cloned'
|
||||
-the _delslot metamethod's behaviour and prototype have been changed
|
||||
-new default function in the integer and float object 'tochar()'
|
||||
-the built-in function chcode2string has been removed
|
||||
-the default method [table].getdelegate() has been removed
|
||||
-new api sq_rawdeleteslot()
|
||||
-new table built-in method rawdelete(key)
|
||||
-the dynamic mudule loading has been removed from the standard distribution
|
||||
-some optimizations in the VM
|
||||
|
||||
***2004-04-21 ***
|
||||
***version 1.0 beta 2***
|
||||
-minor compiler/parser bug fixes
|
||||
-sq_newclosure has a different prototype, the "paramscheck" of paramter has been moved to the new function sq_setparamscheck()
|
||||
-sq_setparamscheck allows to add automatic parameters type checking in native closures
|
||||
-sq_compile() lost the lineinfo parameter
|
||||
-new api sq_enabledebuginfo() globally sets compiler's debug info generation
|
||||
-added consistency check on bytecode serialization
|
||||
-fixed += operator, now works on strings like +
|
||||
-added global slot in the base lib _charsize_ to recognize unicode builds from ascii builds runtime
|
||||
-added registry table
|
||||
-new api call sq_pushregistrytable()
|
||||
-added type tag to the userdata type sq_settypetag()
|
||||
-sq_getuserdata now queries the userdata typetag
|
||||
-the built in function collect_garbage() as been renamed collectgarbage() for consistency reasons
|
||||
-new standard libraries(sqlibs are now obsolete)
|
||||
|
||||
***2004-02-20 ***
|
||||
***version 1.0 beta 1***
|
||||
-fixed a bug in the compiler (thanks Martin Kofler)
|
||||
-fixed bug in the switch case statement
|
||||
-fixed the _unm metamethod
|
||||
-fixed minor bugs in the API
|
||||
-fixed automatic stack resizing
|
||||
-first beta version
|
||||
first pass code clean up in the VM and base lib
|
||||
first pass code coverege test has been done on VM and built-in lib
|
||||
-new VM creation API sq_open() sq_close() (sq_newvm and sq_releasevm are now obsolete)
|
||||
-new api allows to specifiy a "print" function to output text(sq_printfunc)
|
||||
-added some small optimizations
|
||||
-new cooperative multi-threading capabilities in the base library(coroutines), VMs are now a built in type("thread")
|
||||
-new built in functions have been added for manipulating the new "thread" type
|
||||
-friend virtual machines share the same root table, error handler and debug hook by default
|
||||
-new compile time options
|
||||
|
||||
***2004-01-19 ***
|
||||
***version 0.9 alpha***
|
||||
-fixed a garbage collection bug
|
||||
-fixed some API bugs(thanks to Joshua Jensen)
|
||||
-fixed tail calls (in the version 0.8 the tail call optimization was erroneously disabled)
|
||||
-new function parameters semantic, now passing a wrong number of parameters generates an exception
|
||||
-native closures have now a built in parameter number checking
|
||||
-sq_rawget and sq_rawset now work also on arrays
|
||||
-sq_getsize now woks also on userdata
|
||||
-the userdata release hook prototype is changed(now passes the size of the userdata)
|
||||
-the lexer reader function now returns an integer instead of a char that allows better error checking on the input(thx Joshua Jensen)
|
||||
-faster compiler
|
||||
-try/catch blocks do not cause any runtime memory allocation anymore
|
||||
|
||||
***2003-12-06 ***
|
||||
***version 0.8 alpha***
|
||||
-fixed a bug that was preventing to have callable userdata throught the metamethod _call
|
||||
-fixed a garbage collection bug
|
||||
-fixed == operator now can compare correctly different types
|
||||
-new built in method getstackinfos(level)
|
||||
-improoved line informations precision for the debug hook
|
||||
-new api call sq_compilebuffer()
|
||||
-new built-in api function compilestring()
|
||||
-new syntactic sugar for function declarations inside tables
|
||||
-the debug API has been finalized
|
||||
|
||||
***2003-11-17 ***
|
||||
***version 0.7 alpha***
|
||||
-fixed critical bug SQInteger the tail call system
|
||||
-fixed bug in the continue statement code generation
|
||||
-fixed func call param issue(thanks to Rewoonenco Andrew)
|
||||
-added _delslot metamethod(thanks to Rewoonenco Andrew)
|
||||
-new multiline string expression ( delimited by <[ and ]> )
|
||||
-normal strings ("") do not allow embedded new line anymore
|
||||
-reduced vm memory footprint(C refs are shared between friend VMs)
|
||||
-new api method sq_deleteslot()
|
||||
-new debug hook event 'r' is triggered when a function returns
|
||||
|
||||
***2003-11-04 ***
|
||||
***version 0.6 alpha***
|
||||
-fixed switch statement(was executing the default case after a break)
|
||||
-sq_call() doesn't pop the closure (just the params)
|
||||
-the vm execution can be suspended from the C API anytime (micro-threads)
|
||||
-new api calls sq_suspendvm() sq_wakeupvm() sq_getvmstate() and sq_reservestack()
|
||||
|
||||
***2003-10-13 ***
|
||||
***version 0.5 alpha***
|
||||
-fixed some minor bug
|
||||
-tested with non ASCII identifiers in unicode mode(I've tried chinese chars)
|
||||
-added built-in function string.find()
|
||||
-the built-in function array.sort() optionally accepts a cmp(a,b) function
|
||||
-the debug hook function now has a new prototype debug_hook(event_type,sourcefile,line,functionname)
|
||||
-fixed some debug info imprecision
|
||||
|
||||
***2003-10-01 ***
|
||||
***version 0.4 alpha***
|
||||
-faster VM
|
||||
-sq_call will pop arguments and closure also in case of failure
|
||||
-fixed a bug in sq_remove
|
||||
-now the VM detects delegation cycles(and throws an exception)
|
||||
-new operators ++ and --
|
||||
-new operator ',' comma operator
|
||||
-fixed some expression precedence issue
|
||||
-fixed bug in sq_arraypop
|
||||
|
||||
***2003-09-15 ***
|
||||
***version 0.3 alpha***
|
||||
-fixed a bug in array::insert()
|
||||
-optional Unicode core(define SQUNICODE or _UNICODE on Win32)
|
||||
-sq_compiler uses a new reader function SQLEXREADFUNC
|
||||
-the debug hook passes 'l' instead of 'line' for line callbacks
|
||||
and 'c' instead of 'call' for call callbacks
|
||||
-new array.extend() bulit-in function
|
||||
-new API sq_clone()
|
||||
|
||||
***2003-09-10 ***
|
||||
***version 0.2 pre-alpha***
|
||||
-new completely reentrant VM (sq_open and sq_close are now obsolete)
|
||||
-sq_newvm() has a new prototype
|
||||
-allocators are now global and linked in the VM
|
||||
-_newslot meta method added
|
||||
-rawset creates a slot if doesn't exists
|
||||
-the compiler error callback pass the vm handle(thanks Pierre Renaux)
|
||||
-sq_setforeignptr() sq_getforeingptr() are now public
|
||||
-sq_resume() now is possible to resume generators from C
|
||||
-sq_getlasterror() retrieve the last thrown error
|
||||
-improved docs
|
||||
|
||||
***2003-09-06 ***
|
||||
***version 0.1 pre-alpha***
|
||||
first release
|
23
src/3rdparty/squirrel/Makefile
vendored
Normal file
23
src/3rdparty/squirrel/Makefile
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
SQUIRREL=.
|
||||
MAKE=make
|
||||
|
||||
sq32:
|
||||
cd squirrel; $(MAKE)
|
||||
cd sqstdlib; $(MAKE)
|
||||
cd sq; $(MAKE)
|
||||
|
||||
sqprof:
|
||||
cd squirrel; $(MAKE) sqprof
|
||||
cd sqstdlib; $(MAKE) sqprof
|
||||
cd sq; $(MAKE) sqprof
|
||||
|
||||
sq64:
|
||||
cd squirrel; $(MAKE) sq64
|
||||
cd sqstdlib; $(MAKE) sq64
|
||||
cd sq; $(MAKE) sq64
|
||||
|
||||
clean:
|
||||
$(MAKE) -C squirrel clean
|
||||
$(MAKE) -C sqstdlib clean
|
||||
$(MAKE) -C sq clean
|
22
src/3rdparty/squirrel/README
vendored
Normal file
22
src/3rdparty/squirrel/README
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
The programming language SQUIRREL 2.2.5 stable
|
||||
|
||||
--------------------------------------------------
|
||||
The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and
|
||||
Linux(Slackware 9.0 on Intel x86, Fedora Core 4 on AMD x64).
|
||||
|
||||
Has been tested with the following compilers:
|
||||
MS Visual C++ 6.0,7.0,7.1 and 8.0 (32 and 64bits)
|
||||
MinGW gcc 3.2 (mingw special 20020817-1)
|
||||
Cygnus gcc 3.2
|
||||
Linux gcc 3.2.3
|
||||
Linux gcc 4.0.0 (x86 64bits)
|
||||
|
||||
|
||||
Feedback and suggestions are appreciated
|
||||
project page - http://www.squirrel-lang.org
|
||||
community forums - http://www.squirrel-lang.org/Forums
|
||||
wiki - http://wiki.squirrel-lang.org
|
||||
author - alberto@demichelis.net
|
||||
|
||||
END OF README
|
||||
|
BIN
src/3rdparty/squirrel/doc/sqstdlib2.chm
vendored
Normal file
BIN
src/3rdparty/squirrel/doc/sqstdlib2.chm
vendored
Normal file
Binary file not shown.
1714
src/3rdparty/squirrel/doc/sqstdlib2.pdf
vendored
Normal file
1714
src/3rdparty/squirrel/doc/sqstdlib2.pdf
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
src/3rdparty/squirrel/doc/squirrel2.chm
vendored
Normal file
BIN
src/3rdparty/squirrel/doc/squirrel2.chm
vendored
Normal file
Binary file not shown.
6426
src/3rdparty/squirrel/doc/squirrel2.pdf
vendored
Normal file
6426
src/3rdparty/squirrel/doc/squirrel2.pdf
vendored
Normal file
File diff suppressed because it is too large
Load Diff
63
src/3rdparty/squirrel/etc/minimal.c
vendored
Normal file
63
src/3rdparty/squirrel/etc/minimal.c
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <squirrel.h>
|
||||
#include <sqstdio.h>
|
||||
#include <sqstdaux.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma comment (lib ,"squirrel.lib")
|
||||
#pragma comment (lib ,"sqstdlib.lib")
|
||||
#endif
|
||||
|
||||
#ifdef SQUNICODE
|
||||
#define scvprintf vwprintf
|
||||
#else
|
||||
#define scvprintf vprintf
|
||||
#endif
|
||||
|
||||
void printfunc(HSQUIRRELVM v, const SQChar *s, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
va_start(arglist, s);
|
||||
scvprintf(s, arglist);
|
||||
va_end(arglist);
|
||||
}
|
||||
|
||||
void call_foo(HSQUIRRELVM v, int n,float f,const SQChar *s)
|
||||
{
|
||||
SQInteger top = sq_gettop(v); //saves the stack size before the call
|
||||
sq_pushroottable(v); //pushes the global table
|
||||
sq_pushstring(v,_SC("foo"),-1);
|
||||
if(SQ_SUCCEEDED(sq_get(v,-2))) { //gets the field 'foo' from the global table
|
||||
sq_pushroottable(v); //push the 'this' (in this case is the global table)
|
||||
sq_pushinteger(v,n);
|
||||
sq_pushfloat(v,f);
|
||||
sq_pushstring(v,s,-1);
|
||||
sq_call(v,4,SQFalse,SQTrue); //calls the function
|
||||
}
|
||||
sq_settop(v,top); //restores the original stack size
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
HSQUIRRELVM v;
|
||||
v = sq_open(1024); // creates a VM with initial stack size 1024
|
||||
|
||||
//sq_pushroottable(v); //push the root table were to register the lib function
|
||||
//sqstd_register_iolib(v);
|
||||
sqstd_seterrorhandlers(v); //registers the default error handlers
|
||||
|
||||
sq_setprintfunc(v, printfunc); //sets the print function
|
||||
|
||||
sq_pushroottable(v); //push the root table(were the globals of the script will be stored)
|
||||
if(SQ_SUCCEEDED(sqstd_dofile(v, _SC("test.nut"), SQFalse, SQTrue))) // also prints syntax errors if any
|
||||
{
|
||||
call_foo(v,1,2.5,_SC("teststring"));
|
||||
}
|
||||
|
||||
sq_pop(v,1); //pops the root table
|
||||
sq_close(v);
|
||||
|
||||
return 0;
|
||||
}
|
4
src/3rdparty/squirrel/etc/test.nut
vendored
Normal file
4
src/3rdparty/squirrel/etc/test.nut
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
function foo(i, f, s)
|
||||
{
|
||||
print("Called foo(), i="+i+", f="+f+", s='"+s+"'\n");
|
||||
}
|
12
src/3rdparty/squirrel/include/sqstdaux.h
vendored
12
src/3rdparty/squirrel/include/sqstdaux.h
vendored
@@ -2,7 +2,15 @@
|
||||
#ifndef _SQSTD_AUXLIB_H_
|
||||
#define _SQSTD_AUXLIB_H_
|
||||
|
||||
void sqstd_seterrorhandlers(HSQUIRRELVM v);
|
||||
void sqstd_printcallstack(HSQUIRRELVM v);
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /* _SQSTD_AUXLIB_H_ */
|
||||
|
20
src/3rdparty/squirrel/include/sqstdblob.h
vendored
Normal file
20
src/3rdparty/squirrel/include/sqstdblob.h
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTDBLOB_H_
|
||||
#define _SQSTDBLOB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size);
|
||||
SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr);
|
||||
SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTDBLOB_H_*/
|
||||
|
54
src/3rdparty/squirrel/include/sqstdio.h
vendored
Normal file
54
src/3rdparty/squirrel/include/sqstdio.h
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTDIO_H_
|
||||
#define _SQSTDIO_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#define SQSTD_STREAM_TYPE_TAG 0x80000000
|
||||
|
||||
struct SQStream {
|
||||
virtual ~SQStream() {}
|
||||
virtual SQInteger Read(void *buffer, SQInteger size) = 0;
|
||||
virtual SQInteger Write(void *buffer, SQInteger size) = 0;
|
||||
virtual SQInteger Flush() = 0;
|
||||
virtual SQInteger Tell() = 0;
|
||||
virtual SQInteger Len() = 0;
|
||||
virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0;
|
||||
virtual bool IsValid() = 0;
|
||||
virtual bool EOS() = 0;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SQ_SEEK_CUR 0
|
||||
#define SQ_SEEK_END 1
|
||||
#define SQ_SEEK_SET 2
|
||||
|
||||
typedef void* SQFILE;
|
||||
|
||||
SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *);
|
||||
SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger);
|
||||
SQUIRREL_API SQInteger sqstd_ftell(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fflush(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_fclose(SQFILE);
|
||||
SQUIRREL_API SQInteger sqstd_feof(SQFILE);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own);
|
||||
SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file);
|
||||
|
||||
//compiler helpers
|
||||
SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror);
|
||||
SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror);
|
||||
SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename);
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTDIO_H_*/
|
||||
|
10
src/3rdparty/squirrel/include/sqstdmath.h
vendored
10
src/3rdparty/squirrel/include/sqstdmath.h
vendored
@@ -2,6 +2,14 @@
|
||||
#ifndef _SQSTD_MATH_H_
|
||||
#define _SQSTD_MATH_H_
|
||||
|
||||
SQRESULT sqstd_register_mathlib(HSQUIRRELVM v);
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTD_MATH_H_*/
|
||||
|
26
src/3rdparty/squirrel/include/sqstdstring.h
vendored
26
src/3rdparty/squirrel/include/sqstdstring.h
vendored
@@ -2,6 +2,10 @@
|
||||
#ifndef _SQSTD_STRING_H_
|
||||
#define _SQSTD_STRING_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned int SQRexBool;
|
||||
typedef struct SQRex SQRex;
|
||||
|
||||
@@ -10,16 +14,20 @@ typedef struct {
|
||||
SQInteger len;
|
||||
} SQRexMatch;
|
||||
|
||||
SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error);
|
||||
void sqstd_rex_free(SQRex *exp);
|
||||
SQBool sqstd_rex_match(SQRex* exp,const SQChar* text);
|
||||
SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end);
|
||||
SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end);
|
||||
SQInteger sqstd_rex_getsubexpcount(SQRex* exp);
|
||||
SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp);
|
||||
SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error);
|
||||
SQUIRREL_API void sqstd_rex_free(SQRex *exp);
|
||||
SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text);
|
||||
SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end);
|
||||
SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end);
|
||||
SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp);
|
||||
SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp);
|
||||
|
||||
SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output);
|
||||
SQUIRREL_API SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen,SQChar **output);
|
||||
|
||||
SQRESULT sqstd_register_stringlib(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQSTD_STRING_H_*/
|
||||
|
15
src/3rdparty/squirrel/include/sqstdsystem.h
vendored
Normal file
15
src/3rdparty/squirrel/include/sqstdsystem.h
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/* see copyright notice in squirrel.h */
|
||||
#ifndef _SQSTD_SYSTEMLIB_H_
|
||||
#define _SQSTD_SYSTEMLIB_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /* _SQSTD_SYSTEMLIB_H_ */
|
431
src/3rdparty/squirrel/include/squirrel.h
vendored
431
src/3rdparty/squirrel/include/squirrel.h
vendored
@@ -1,41 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2011 Alberto Demichelis
|
||||
*
|
||||
* This software is provided 'as-is', without any
|
||||
* express or implied warranty. In no event will the
|
||||
* authors be held liable for any damages arising from
|
||||
* the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software
|
||||
* for any purpose, including commercial applications,
|
||||
* and to alter it and redistribute it freely, subject
|
||||
* to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be
|
||||
* misrepresented; you must not claim that
|
||||
* you wrote the original software. If you
|
||||
* use this software in a product, an
|
||||
* acknowledgment in the product
|
||||
* documentation would be appreciated but is
|
||||
* not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly
|
||||
* marked as such, and must not be
|
||||
* misrepresented as being the original
|
||||
* software.
|
||||
*
|
||||
* 3. This notice may not be removed or
|
||||
* altered from any source distribution.
|
||||
*/
|
||||
Copyright (c) 2003-2011 Alberto Demichelis
|
||||
|
||||
This software is provided 'as-is', without any
|
||||
express or implied warranty. In no event will the
|
||||
authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software
|
||||
for any purpose, including commercial applications,
|
||||
and to alter it and redistribute it freely, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be
|
||||
misrepresented; you must not claim that
|
||||
you wrote the original software. If you
|
||||
use this software in a product, an
|
||||
acknowledgment in the product
|
||||
documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly
|
||||
marked as such, and must not be
|
||||
misrepresented as being the original
|
||||
software.
|
||||
|
||||
3. This notice may not be removed or
|
||||
altered from any source distribution.
|
||||
|
||||
*/
|
||||
#ifndef _SQUIRREL_H_
|
||||
#define _SQUIRREL_H_
|
||||
|
||||
#include "../../../string_type.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define inline __forceinline
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
#if defined(_MSC_VER) && _MSC_VER >= 1400 // MSVC 2005 safety checks
|
||||
# pragma warning(disable: 4996) // '_wfopen' was declared deprecated
|
||||
# define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
|
||||
# define _CRT_NON_CONFORMING_SWPRINTFS // another deprecated stuff
|
||||
#endif /* _MSC_VER >= 1400 */
|
||||
|
||||
#ifndef SQUIRREL_API
|
||||
#define SQUIRREL_API extern
|
||||
#endif
|
||||
|
||||
#if (defined(_WIN64) || defined(_LP64))
|
||||
#ifndef _SQ64
|
||||
#define _SQ64
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _SQ64
|
||||
#ifdef _MSC_VER
|
||||
typedef __int64 SQInteger;
|
||||
typedef unsigned __int64 SQUnsignedInteger;
|
||||
typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/
|
||||
#elif defined(_WIN32)
|
||||
typedef long long SQInteger;
|
||||
typedef unsigned long long SQUnsignedInteger;
|
||||
typedef unsigned long long SQHash; /*should be the same size of a pointer*/
|
||||
#else
|
||||
typedef long SQInteger;
|
||||
typedef unsigned long SQUnsignedInteger;
|
||||
typedef unsigned long SQHash; /*should be the same size of a pointer*/
|
||||
#endif
|
||||
typedef int SQInt32;
|
||||
#else
|
||||
typedef int SQInteger;
|
||||
typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/
|
||||
typedef unsigned int SQUnsignedInteger;
|
||||
typedef unsigned int SQHash; /*should be the same size of a pointer*/
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SQUSEDOUBLE
|
||||
@@ -44,8 +84,17 @@ typedef double SQFloat;
|
||||
typedef float SQFloat;
|
||||
#endif
|
||||
|
||||
#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64)
|
||||
#ifdef _MSC_VER
|
||||
typedef __int64 SQRawObjectVal; //must be 64bits
|
||||
#else
|
||||
typedef long long SQRawObjectVal; //must be 64bits
|
||||
#endif
|
||||
#define SQ_OBJECT_RAWINIT() { _unVal.raw = 0; }
|
||||
#else
|
||||
typedef SQUnsignedInteger SQRawObjectVal; //is 32 bits on 32 bits builds and 64 bits otherwise
|
||||
#define SQ_OBJECT_RAWINIT()
|
||||
#endif
|
||||
|
||||
typedef void* SQUserPointer;
|
||||
typedef SQUnsignedInteger SQBool;
|
||||
@@ -68,12 +117,78 @@ struct SQClass;
|
||||
struct SQInstance;
|
||||
struct SQDelegable;
|
||||
|
||||
typedef char SQChar;
|
||||
#define MAX_CHAR 0xFFFF
|
||||
#ifdef _UNICODE
|
||||
#define SQUNICODE
|
||||
#endif
|
||||
|
||||
#define SQUIRREL_VERSION "Squirrel 2.2.5 stable - With custom OpenTTD modifications"
|
||||
#define SQUIRREL_COPYRIGHT "Copyright (C) 2003-2010 Alberto Demichelis"
|
||||
#define SQUIRREL_AUTHOR "Alberto Demichelis"
|
||||
#ifdef SQUNICODE
|
||||
#if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8
|
||||
|
||||
#ifndef _WCHAR_T_DEFINED //this is if the compiler considers wchar_t as native type
|
||||
typedef unsigned short wchar_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef wchar_t SQChar;
|
||||
#define _SC(a) L##a
|
||||
#define scstrcmp wcscmp
|
||||
#define scsprintf swprintf
|
||||
#define scsnprintf _snwprintf
|
||||
#define scstrlen wcslen
|
||||
#define scstrtod wcstod
|
||||
#define scstrtol wcstol
|
||||
#define scatoi _wtoi
|
||||
#define scstrtoul wcstoul
|
||||
#define scvsprintf vswprintf
|
||||
#define scstrstr wcsstr
|
||||
#define scisspace iswspace
|
||||
#define scisdigit iswdigit
|
||||
#define scisxdigit iswxdigit
|
||||
#define scisalpha iswalpha
|
||||
#define sciscntrl iswcntrl
|
||||
#define scisalnum iswalnum
|
||||
#define scprintf wprintf
|
||||
#define scfprintf fwprintf
|
||||
#define scvprintf vwprintf
|
||||
#define scvfprintf vfwprintf
|
||||
#define scvsnprintf _vsnwprintf
|
||||
#define scstrdup _wcsdup
|
||||
#define scstrrchr wcsrchr
|
||||
#define scstrcat wcscat
|
||||
#define MAX_CHAR 0xFFFF
|
||||
#else
|
||||
typedef char SQChar;
|
||||
#define _SC(a) a
|
||||
#define scstrcmp strcmp
|
||||
#define scsprintf sprintf
|
||||
#define scsnprintf snprintf
|
||||
#define scstrlen strlen
|
||||
#define scstrtod strtod
|
||||
#define scstrtol strtol
|
||||
#define scatoi atoi
|
||||
#define scstrtoul strtoul
|
||||
#define scvsprintf vsprintf
|
||||
#define scstrstr strstr
|
||||
#define scisspace isspace
|
||||
#define scisdigit isdigit
|
||||
#define scisxdigit isxdigit
|
||||
#define sciscntrl iscntrl
|
||||
#define scisalpha isalpha
|
||||
#define scisalnum isalnum
|
||||
#define scprintf printf
|
||||
#define scfprintf fprintf
|
||||
#define scvprintf vprintf
|
||||
#define scvfprintf vfprintf
|
||||
#define scvsnprintf vsnprintf
|
||||
#define scstrdup strdup
|
||||
#define scstrrchr strrchr
|
||||
#define scstrcat strcat
|
||||
#define MAX_CHAR 0xFFFF
|
||||
#endif
|
||||
|
||||
#define SQUIRREL_VERSION _SC("Squirrel 2.2.5 stable - With custom OpenTTD modifications")
|
||||
#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2010 Alberto Demichelis")
|
||||
#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
|
||||
#define SQUIRREL_VERSION_NUMBER 225
|
||||
|
||||
#define SQ_VMSTATE_IDLE 0
|
||||
@@ -179,7 +294,7 @@ typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...);
|
||||
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||
typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
|
||||
|
||||
typedef WChar (*SQLEXREADFUNC)(SQUserPointer);
|
||||
typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer);
|
||||
|
||||
typedef struct tagSQRegFunction{
|
||||
const SQChar *name;
|
||||
@@ -196,147 +311,147 @@ typedef struct tagSQFunctionInfo {
|
||||
|
||||
|
||||
/*vm*/
|
||||
bool sq_can_suspend(HSQUIRRELVM v);
|
||||
HSQUIRRELVM sq_open(SQInteger initialstacksize);
|
||||
HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);
|
||||
void sq_seterrorhandler(HSQUIRRELVM v);
|
||||
void sq_close(HSQUIRRELVM v);
|
||||
void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);
|
||||
SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
|
||||
void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);
|
||||
SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);
|
||||
SQRESULT sq_suspendvm(HSQUIRRELVM v);
|
||||
bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1);
|
||||
bool sq_resumeerror(HSQUIRRELVM v);
|
||||
SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror);
|
||||
SQInteger sq_getvmstate(HSQUIRRELVM v);
|
||||
void sq_decreaseops(HSQUIRRELVM v, int amount);
|
||||
SQUIRREL_API bool sq_can_suspend(HSQUIRRELVM v);
|
||||
SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);
|
||||
SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);
|
||||
SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_close(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);
|
||||
SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);
|
||||
SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);
|
||||
SQUIRREL_API bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1);
|
||||
SQUIRREL_API bool sq_resumeerror(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror);
|
||||
SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_decreaseops(HSQUIRRELVM v, int amount);
|
||||
|
||||
/*compiler*/
|
||||
SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
|
||||
SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
|
||||
void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
|
||||
void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
|
||||
void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
|
||||
SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
|
||||
SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
|
||||
SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
|
||||
SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
|
||||
SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
|
||||
|
||||
/*stack operations*/
|
||||
void sq_push(HSQUIRRELVM v,SQInteger idx);
|
||||
void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop);
|
||||
void sq_poptop(HSQUIRRELVM v);
|
||||
void sq_remove(HSQUIRRELVM v,SQInteger idx);
|
||||
SQInteger sq_gettop(HSQUIRRELVM v);
|
||||
void sq_settop(HSQUIRRELVM v,SQInteger newtop);
|
||||
void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);
|
||||
SQInteger sq_cmp(HSQUIRRELVM v);
|
||||
void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);
|
||||
SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop);
|
||||
SQUIRREL_API void sq_poptop(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop);
|
||||
SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);
|
||||
SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);
|
||||
|
||||
/*object creation handling*/
|
||||
SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);
|
||||
void sq_newtable(HSQUIRRELVM v);
|
||||
void sq_newarray(HSQUIRRELVM v,SQInteger size);
|
||||
void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
|
||||
SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);
|
||||
SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);
|
||||
void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);
|
||||
void sq_pushfloat(HSQUIRRELVM v,SQFloat f);
|
||||
void sq_pushinteger(HSQUIRRELVM v,SQInteger n);
|
||||
void sq_pushbool(HSQUIRRELVM v,SQBool b);
|
||||
void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
|
||||
void sq_pushnull(HSQUIRRELVM v);
|
||||
SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);
|
||||
SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
|
||||
SQBool sq_instanceof(HSQUIRRELVM v);
|
||||
void sq_tostring(HSQUIRRELVM v,SQInteger idx);
|
||||
void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
|
||||
SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
|
||||
SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
|
||||
SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
|
||||
SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
|
||||
SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread);
|
||||
SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
|
||||
SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
|
||||
SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
|
||||
SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
|
||||
void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
|
||||
SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);
|
||||
SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi);
|
||||
SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);
|
||||
SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);
|
||||
SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
|
||||
SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
|
||||
SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize);
|
||||
SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase);
|
||||
SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);
|
||||
void sq_weakref(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);
|
||||
SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);
|
||||
SQUIRREL_API void sq_newtable(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size);
|
||||
SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
|
||||
SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);
|
||||
SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);
|
||||
SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f);
|
||||
SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n);
|
||||
SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b);
|
||||
SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
|
||||
SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
|
||||
SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
|
||||
SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
|
||||
SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
|
||||
SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
|
||||
SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread);
|
||||
SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
|
||||
SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
|
||||
SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
|
||||
SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
|
||||
SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
|
||||
SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);
|
||||
SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi);
|
||||
SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);
|
||||
SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);
|
||||
SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
|
||||
SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
|
||||
SQUIRREL_API SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize);
|
||||
SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase);
|
||||
SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);
|
||||
|
||||
/*object manipulation*/
|
||||
void sq_pushroottable(HSQUIRRELVM v);
|
||||
void sq_pushregistrytable(HSQUIRRELVM v);
|
||||
void sq_pushconsttable(HSQUIRRELVM v);
|
||||
SQRESULT sq_setroottable(HSQUIRRELVM v);
|
||||
SQRESULT sq_setconsttable(HSQUIRRELVM v);
|
||||
SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
|
||||
SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
|
||||
SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx);
|
||||
SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos);
|
||||
SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);
|
||||
SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_pushconsttable(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_setconsttable(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
|
||||
SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
|
||||
SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
|
||||
SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx);
|
||||
SQUIRREL_API SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos);
|
||||
SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);
|
||||
SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx);
|
||||
|
||||
/*calls*/
|
||||
SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1);
|
||||
SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
|
||||
const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
|
||||
const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);
|
||||
void sq_reseterror(HSQUIRRELVM v);
|
||||
void sq_getlasterror(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1);
|
||||
SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
|
||||
SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
|
||||
SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
|
||||
SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);
|
||||
SQUIRREL_API void sq_reseterror(HSQUIRRELVM v);
|
||||
SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);
|
||||
|
||||
/*raw object handling*/
|
||||
SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
|
||||
void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);
|
||||
void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
void sq_resetobject(HSQOBJECT *po);
|
||||
const SQChar *sq_objtostring(HSQOBJECT *o);
|
||||
SQBool sq_objtobool(HSQOBJECT *o);
|
||||
SQInteger sq_objtointeger(HSQOBJECT *o);
|
||||
SQFloat sq_objtofloat(HSQOBJECT *o);
|
||||
SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);
|
||||
SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
|
||||
SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);
|
||||
SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);
|
||||
SQUIRREL_API void sq_resetobject(HSQOBJECT *po);
|
||||
SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);
|
||||
SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o);
|
||||
SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o);
|
||||
SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o);
|
||||
SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);
|
||||
|
||||
/*GC*/
|
||||
SQInteger sq_collectgarbage(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v);
|
||||
|
||||
/*serialization*/
|
||||
SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
|
||||
SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
|
||||
SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
|
||||
SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
|
||||
|
||||
/*mem allocation*/
|
||||
void *sq_malloc(SQUnsignedInteger size);
|
||||
void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
|
||||
void sq_free(void *p,SQUnsignedInteger size);
|
||||
SQUIRREL_API void *sq_malloc(SQUnsignedInteger size);
|
||||
SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
|
||||
SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
|
||||
|
||||
/*debug*/
|
||||
SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
|
||||
void sq_setdebughook(HSQUIRRELVM v);
|
||||
SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
|
||||
SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
|
||||
|
||||
/*UTILITY MACRO*/
|
||||
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
|
||||
@@ -368,4 +483,8 @@ void sq_setdebughook(HSQUIRRELVM v);
|
||||
#define SQ_FAILED(res) (res<0)
|
||||
#define SQ_SUCCEEDED(res) (res>=0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*_SQUIRREL_H_*/
|
||||
|
23
src/3rdparty/squirrel/samples/ackermann.nut
vendored
Normal file
23
src/3rdparty/squirrel/samples/ackermann.nut
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
*
|
||||
* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/)
|
||||
*
|
||||
*/
|
||||
|
||||
function Ack(M, N) {
|
||||
if (M == 0) return( N + 1 );
|
||||
if (N == 0) return( Ack(M - 1, 1) );
|
||||
return( Ack(M - 1, Ack(M, (N - 1))) );
|
||||
}
|
||||
|
||||
local n;
|
||||
|
||||
if(ARGS.len()!=0) {
|
||||
n = ARGS[0].tointeger();
|
||||
if(n < 1) n = 1;
|
||||
} else {
|
||||
n = 1;
|
||||
}
|
||||
print("n="+n+"\n");
|
||||
print("Ack(3,"+ n+ "):"+ Ack(3, n));
|
||||
|
28
src/3rdparty/squirrel/samples/array.nut
vendored
Normal file
28
src/3rdparty/squirrel/samples/array.nut
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
*
|
||||
* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/)
|
||||
*
|
||||
*/
|
||||
local n, i, k;
|
||||
|
||||
if(ARGS.len()!=0) {
|
||||
n = ARGS[0].tointeger();
|
||||
if(n < 1) n = 1;
|
||||
} else {
|
||||
n = 1;
|
||||
}
|
||||
|
||||
local x = []; x.resize(n);
|
||||
local y = []; y.resize(n);
|
||||
|
||||
for (i = 0; i < n; i+=1) {
|
||||
x[i] = i + 1;
|
||||
y[i] = 0;
|
||||
}
|
||||
|
||||
for (k = 0 ; k < n; k+=1) {
|
||||
for (i = n-1; i >= 0; i-=1) {
|
||||
y[i] = y[i]+ x[i];
|
||||
}
|
||||
}
|
||||
print(y[0].tostring()+" "+y[n-1]);
|
49
src/3rdparty/squirrel/samples/class.nut
vendored
Normal file
49
src/3rdparty/squirrel/samples/class.nut
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
class BaseVector {
|
||||
constructor(...)
|
||||
{
|
||||
if(vargc >= 3) {
|
||||
x = vargv[0];
|
||||
y = vargv[1];
|
||||
z = vargv[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
z = 0;
|
||||
}
|
||||
|
||||
class Vector3 extends BaseVector {
|
||||
function _add(other)
|
||||
{
|
||||
if(other instanceof this.getclass())
|
||||
return ::Vector3(x+other.x,y+other.y,z+other.z);
|
||||
else
|
||||
throw "wrong parameter";
|
||||
}
|
||||
function Print()
|
||||
{
|
||||
::print(x+","+y+","+z+"\n");
|
||||
}
|
||||
}
|
||||
|
||||
local v0 = Vector3(1,2,3)
|
||||
local v1 = Vector3(11,12,13)
|
||||
local v2 = v0 + v1;
|
||||
v2.Print();
|
||||
|
||||
FakeNamespace <- {
|
||||
Utils = {}
|
||||
}
|
||||
|
||||
class FakeNamespace.Utils.SuperClass {
|
||||
constructor()
|
||||
{
|
||||
::print("FakeNamespace.Utils.SuperClass")
|
||||
}
|
||||
}
|
||||
|
||||
local testy = FakeNamespace.Utils.SuperClass();
|
35
src/3rdparty/squirrel/samples/classattributes.nut
vendored
Normal file
35
src/3rdparty/squirrel/samples/classattributes.nut
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
class Foo {
|
||||
//constructor
|
||||
constructor(a)
|
||||
{
|
||||
testy = ["stuff",1,2,3];
|
||||
}
|
||||
//attributes of PrintTesty
|
||||
</ test = "freakin attribute"/>
|
||||
function PrintTesty()
|
||||
{
|
||||
foreach(i,val in testy)
|
||||
{
|
||||
::print("idx = "+i+" = "+val+" \n");
|
||||
}
|
||||
}
|
||||
//attributes of testy
|
||||
</ flippy = 10 , second = [1,2,3] />
|
||||
testy = null;
|
||||
|
||||
}
|
||||
|
||||
foreach(member,val in Foo)
|
||||
{
|
||||
::print(member+"\n");
|
||||
local attr;
|
||||
if((attr = Foo.getattributes(member)) != null) {
|
||||
foreach(i,v in attr)
|
||||
{
|
||||
::print("\t"+i+" = "+(typeof v)+"\n");
|
||||
}
|
||||
}
|
||||
else {
|
||||
::print("\t<no attributes>\n")
|
||||
}
|
||||
}
|
25
src/3rdparty/squirrel/samples/coroutines.nut
vendored
Normal file
25
src/3rdparty/squirrel/samples/coroutines.nut
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
function coroutine_test(a,b)
|
||||
{
|
||||
::print(a+" "+b+"\n");
|
||||
local ret = ::suspend("suspend 1");
|
||||
::print("the coroutine says "+ret+"\n");
|
||||
ret = ::suspend("suspend 2");
|
||||
::print("the coroutine says "+ret+"\n");
|
||||
ret = ::suspend("suspend 3");
|
||||
::print("the coroutine says "+ret+"\n");
|
||||
return "I'm done"
|
||||
}
|
||||
|
||||
local coro = ::newthread(coroutine_test);
|
||||
|
||||
local susparam = coro.call("test","coroutine"); //starts the coroutine
|
||||
|
||||
local i = 1;
|
||||
do
|
||||
{
|
||||
::print("suspend passed ["+susparam+"]\n")
|
||||
susparam = coro.wakeup("ciao "+i);
|
||||
++i;
|
||||
}while(coro.getstatus()=="suspended")
|
||||
|
||||
::print("return passed ["+susparam+"]\n")
|
52
src/3rdparty/squirrel/samples/delegation.nut
vendored
Normal file
52
src/3rdparty/squirrel/samples/delegation.nut
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
PEntity <- {
|
||||
name="noname"
|
||||
pos={x=0,y=0,z=0}
|
||||
type="entity"
|
||||
//methamethod
|
||||
_typeof=function()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
function PEntity::PrintPos()
|
||||
{
|
||||
::print("x="+pos.x+" y="+pos.y+" z="+pos.z+"\n");
|
||||
}
|
||||
|
||||
function PEntity::new(name,pos)
|
||||
{
|
||||
local newentity=clone ::PEntity;
|
||||
if(name)
|
||||
newentity.name=name;
|
||||
if(pos)
|
||||
newentity.pos=pos;
|
||||
return newentity;
|
||||
}
|
||||
|
||||
PPlayer <- {
|
||||
model="warrior.mdl"
|
||||
weapon="fist"
|
||||
health=100
|
||||
armor=0
|
||||
//overrides the parent type
|
||||
type="player"
|
||||
}
|
||||
|
||||
function PPlayer::new(name,pos)
|
||||
{
|
||||
local newplayer=delegate ::PEntity.new(name,pos) : clone ::PPlayer;
|
||||
return newplayer;
|
||||
}
|
||||
|
||||
local player=PPlayer.new("godzilla",{x=10,y=20,z=30});
|
||||
|
||||
::print("PLAYER NAME"+player.name+"\n");
|
||||
::print("ENTITY TYPE"+typeof player+"\n");
|
||||
|
||||
player.PrintPos();
|
||||
|
||||
player.pos.x=123;
|
||||
|
||||
player.PrintPos();
|
15
src/3rdparty/squirrel/samples/fibonacci.nut
vendored
Normal file
15
src/3rdparty/squirrel/samples/fibonacci.nut
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
*
|
||||
* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/)
|
||||
*
|
||||
*/
|
||||
|
||||
function fib(n)
|
||||
{
|
||||
if (n < 2) return 1
|
||||
return fib(n-2) + fib(n-1)
|
||||
}
|
||||
|
||||
local n = ARGS.len()!=0?ARGS[0].tointeger():1
|
||||
|
||||
print(fib(n)+"\n")
|
33
src/3rdparty/squirrel/samples/flow.nut
vendored
Normal file
33
src/3rdparty/squirrel/samples/flow.nut
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
function min(x,y)
|
||||
return x<y?x:y;
|
||||
|
||||
function max(x,y)
|
||||
return x>y?x:y;
|
||||
|
||||
if(min(100,200)>max(50,20))
|
||||
print("I'm useless statement just to show up the if/else\n");
|
||||
else
|
||||
print("squirrel!!\n");
|
||||
|
||||
print("\n")
|
||||
|
||||
function typy(obj)
|
||||
{
|
||||
switch(typeof obj)
|
||||
{
|
||||
case "integer":
|
||||
case "float":
|
||||
return "is a number";
|
||||
case "table":
|
||||
case "array":
|
||||
return "is a container";
|
||||
default:
|
||||
return "is other stuff"
|
||||
}
|
||||
}
|
||||
|
||||
local a=1,b={},c=function(a,b){return a+b;}
|
||||
|
||||
print("a "+typy(a)+"\n");
|
||||
print("b "+typy(b)+"\n");
|
||||
print("c "+typy(c)+"\n");
|
42
src/3rdparty/squirrel/samples/generators.nut
vendored
Normal file
42
src/3rdparty/squirrel/samples/generators.nut
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
*Random number function from The Great Computer Language shootout
|
||||
*converted to a generator func
|
||||
*/
|
||||
|
||||
function gen_random(max) {
|
||||
local last=42
|
||||
local IM = 139968;
|
||||
local IA = 3877;
|
||||
local IC = 29573;
|
||||
for(;;){ //loops forever
|
||||
yield (max * (last = (last * IA + IC) % IM) / IM);
|
||||
}
|
||||
}
|
||||
|
||||
local randtor=gen_random(100);
|
||||
|
||||
print("RAND NUMBERS \n")
|
||||
|
||||
for(local i=0;i<10;i+=1)
|
||||
print(">"+resume randtor+"\n");
|
||||
|
||||
print("FIBONACCI \n")
|
||||
function fiboz(n)
|
||||
{
|
||||
local prev=0;
|
||||
local curr=1;
|
||||
yield 1;
|
||||
|
||||
for(local i=0;i<n-1;i+=1)
|
||||
{
|
||||
local res=prev+curr;
|
||||
prev=curr;
|
||||
yield curr=res;
|
||||
}
|
||||
return prev+curr;
|
||||
}
|
||||
|
||||
foreach(val in fiboz(10))
|
||||
{
|
||||
::print(">"+val+"\n");
|
||||
}
|
1
src/3rdparty/squirrel/samples/hello.nut
vendored
Normal file
1
src/3rdparty/squirrel/samples/hello.nut
vendored
Normal file
@@ -0,0 +1 @@
|
||||
print("Hello World!")
|
39
src/3rdparty/squirrel/samples/list.nut
vendored
Normal file
39
src/3rdparty/squirrel/samples/list.nut
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/*translation of the list test from The Great Computer Language Shootout
|
||||
*/
|
||||
|
||||
function compare_arr(a1,a2)
|
||||
{
|
||||
foreach(i,val in a1)
|
||||
if(val!=a2[i])return null;
|
||||
return 1;
|
||||
}
|
||||
|
||||
function test()
|
||||
{
|
||||
local size=10000
|
||||
local l1=[]; l1.resize(size);
|
||||
for(local i=0;i<size;i+=1) l1[i]=i;
|
||||
local l2=clone l1;
|
||||
local l3=[]
|
||||
|
||||
l2.reverse();
|
||||
while(l2.len()>0)
|
||||
l3.append(l2.pop());
|
||||
while(l3.len()>0)
|
||||
l2.append(l3.pop());
|
||||
l1.reverse();
|
||||
|
||||
if(compare_arr(l1,l2))
|
||||
return l1.len();
|
||||
return null;
|
||||
}
|
||||
|
||||
local n = ARGS.len()!=0?ARGS[0].tointeger():1
|
||||
for(local i=0;i<n;i+=1)
|
||||
if(!test())
|
||||
{
|
||||
print("failed");
|
||||
return;
|
||||
}
|
||||
|
||||
print("oki doki");
|
32
src/3rdparty/squirrel/samples/loops.nut
vendored
Normal file
32
src/3rdparty/squirrel/samples/loops.nut
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
local arr=["one","two","three"]
|
||||
|
||||
::print("FOREACH\n");
|
||||
|
||||
foreach(i,val in arr)
|
||||
{
|
||||
::print("index ["+i+"]="+val+"\n");
|
||||
}
|
||||
|
||||
::print("FOR\n");
|
||||
|
||||
for(local i=0;i<arr.len();i+=1)
|
||||
{
|
||||
::print("index ["+i+"]="+arr[i]+"\n");
|
||||
}
|
||||
|
||||
::print("WHILE\n");
|
||||
|
||||
local i=0;
|
||||
while(i<arr.len())
|
||||
{
|
||||
::print("index ["+i+"]="+arr[i]+"\n");
|
||||
i+=1;
|
||||
}
|
||||
::print("DO WHILE\n");
|
||||
|
||||
local i=0;
|
||||
do
|
||||
{
|
||||
::print("index ["+i+"]="+arr[i]+"\n");
|
||||
i+=1;
|
||||
}while(i<arr.len());
|
44
src/3rdparty/squirrel/samples/matrix.nut
vendored
Normal file
44
src/3rdparty/squirrel/samples/matrix.nut
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Original Javascript version by David Hedbor(http://www.bagley.org/~doug/shootout/)
|
||||
*
|
||||
*/
|
||||
local SIZE=30;
|
||||
|
||||
function mkmatrix(rows, cols) {
|
||||
local i, j, count = 1;
|
||||
local m = []; m.resize(rows);
|
||||
for (i = 0; i < rows; i+=1) {
|
||||
m[i] = [];m[i].resize(cols)
|
||||
for (j = 0; j < cols; j+=1) {
|
||||
m[i][j] = count+=1;
|
||||
}
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
function mmult(rows, cols, m1, m2, m3) {
|
||||
local i, j, k, val;
|
||||
for (i = 0; i < rows; i+=1) {
|
||||
for (j = 0; j < cols; j+=1) {
|
||||
val = 0;
|
||||
for (k = 0; k < cols; k+=1) {
|
||||
val += m1[i][k] * m2[k][j];
|
||||
}
|
||||
m3[i][j] = val;
|
||||
}
|
||||
}
|
||||
return m3;
|
||||
}
|
||||
|
||||
local n = ARGS.len()!=0?ARGS[0].tointeger():1
|
||||
|
||||
local m1 = mkmatrix(SIZE, SIZE);
|
||||
local m2 = mkmatrix(SIZE, SIZE);
|
||||
local mm = mkmatrix(SIZE, SIZE);
|
||||
|
||||
for (local i = 0; i < n; i+=1) {
|
||||
mmult(SIZE, SIZE, m1, m2, mm);
|
||||
}
|
||||
|
||||
print(mm[0][0]+" "+mm[2][3]+" "+mm[3][2]+" "+mm[4][4]);
|
115
src/3rdparty/squirrel/samples/metamethods.nut
vendored
Normal file
115
src/3rdparty/squirrel/samples/metamethods.nut
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
local base_vec={
|
||||
function _add(n)
|
||||
{
|
||||
return {
|
||||
x=x+n.x,
|
||||
y=y+n.y,
|
||||
z=z+n.z,
|
||||
}
|
||||
}
|
||||
function _sub(n)
|
||||
{
|
||||
return {
|
||||
x=x-n.x,
|
||||
y=y-n.y,
|
||||
z=z-n.z,
|
||||
}
|
||||
}
|
||||
function _div(n)
|
||||
{
|
||||
return {
|
||||
x=x/n.x,
|
||||
y=y/n.y,
|
||||
z=z/n.z,
|
||||
}
|
||||
}
|
||||
function _mul(n)
|
||||
{
|
||||
return {
|
||||
x=x*n.x,
|
||||
y=y*n.y,
|
||||
z=z*n.z,
|
||||
}
|
||||
}
|
||||
function _modulo(n)
|
||||
{
|
||||
return {
|
||||
x=x%n,
|
||||
y=y%n,
|
||||
z=z%n,
|
||||
}
|
||||
}
|
||||
function _typeof() {return "vector";}
|
||||
function _get(key)
|
||||
{
|
||||
if(key==100)
|
||||
{
|
||||
return test_field;
|
||||
}
|
||||
},
|
||||
function _set(key,val)
|
||||
{
|
||||
::print("key = "+key+"\n");
|
||||
::print("val = "+val+"\n")
|
||||
if(key==100)
|
||||
{
|
||||
return test_field=val;
|
||||
}
|
||||
}
|
||||
test_field="nothing"
|
||||
}
|
||||
|
||||
function vector(_x,_y,_z):(base_vec)
|
||||
{
|
||||
return delegate base_vec : {x=_x,y=_y,z=_z }
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
local v1=vector(1.5,2.5,3.5);
|
||||
local v2=vector(1.5,2.5,3.5);
|
||||
|
||||
local r=v1+v2;
|
||||
|
||||
|
||||
foreach(i,val in r)
|
||||
{
|
||||
print(i+" = "+val+"\n");
|
||||
}
|
||||
|
||||
r=v1*v2;
|
||||
|
||||
foreach(i,val in r)
|
||||
{
|
||||
print(i+" = "+val+"\n");
|
||||
}
|
||||
|
||||
r=v1/v2;
|
||||
|
||||
foreach(i,val in r)
|
||||
{
|
||||
print(i+" = "+val+"\n");
|
||||
}
|
||||
|
||||
r=v1-v2;
|
||||
|
||||
foreach(i,val in r)
|
||||
{
|
||||
print(i+" = "+val+"\n");
|
||||
}
|
||||
|
||||
r=v1%2;
|
||||
|
||||
foreach(i,val in r)
|
||||
{
|
||||
print(i+" = "+val+"\n");
|
||||
}
|
||||
|
||||
print(v1[100]+"\n");
|
||||
v1[100]="set SUCCEEDED";
|
||||
print(v1[100]+"\n");
|
||||
|
||||
if(typeof v1=="vector")
|
||||
print("<SUCCEEDED>\n");
|
||||
else
|
||||
print("<FAILED>\n");
|
61
src/3rdparty/squirrel/samples/methcall.nut
vendored
Normal file
61
src/3rdparty/squirrel/samples/methcall.nut
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
/*translation of the methcall test from The Great Computer Language Shootout
|
||||
*/
|
||||
|
||||
Toggle <- {
|
||||
bool=null
|
||||
}
|
||||
|
||||
function Toggle::value() {
|
||||
return bool;
|
||||
}
|
||||
|
||||
function Toggle::activate() {
|
||||
bool = !bool;
|
||||
return this;
|
||||
}
|
||||
|
||||
function Toggle::new(startstate) {
|
||||
local newo=clone this;
|
||||
newo.bool = startstate;
|
||||
return newo;
|
||||
}
|
||||
|
||||
NthToggle <- {
|
||||
count_max=null
|
||||
count=0
|
||||
}
|
||||
|
||||
function NthToggle::new(start_state,max_counter)
|
||||
{
|
||||
local newo=delegate ::Toggle.new(start_state) : clone this;
|
||||
newo.count_max <- max_counter
|
||||
return newo;
|
||||
}
|
||||
|
||||
function NthToggle::activate ()
|
||||
{
|
||||
count+=1
|
||||
if (count >= count_max) {
|
||||
bool = !bool;
|
||||
count = 0;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
local n = ARGS.len()!=0?ARGS[0].tointeger():1
|
||||
|
||||
local val = 1;
|
||||
local toggle = Toggle.new(val);
|
||||
for (local i=0; i<n; i+=1) {
|
||||
val = toggle.activate().value();
|
||||
|
||||
}
|
||||
print(toggle.value() ? "true\n" : "false\n");
|
||||
|
||||
val = 1;
|
||||
local ntoggle = NthToggle.new(val, 3);
|
||||
for (local i=0; i<n; i+=1) {
|
||||
val = ntoggle.activate().value();
|
||||
}
|
||||
print(ntoggle.value() ? "true\n" : "false\n");
|
24
src/3rdparty/squirrel/samples/tailstate.nut
vendored
Normal file
24
src/3rdparty/squirrel/samples/tailstate.nut
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
function state1()
|
||||
{
|
||||
::suspend("state1");
|
||||
return state2();
|
||||
}
|
||||
|
||||
function state2()
|
||||
{
|
||||
::suspend("state2");
|
||||
return state3();
|
||||
}
|
||||
|
||||
function state3()
|
||||
{
|
||||
::suspend("state3");
|
||||
return state1();
|
||||
}
|
||||
|
||||
local statethread = ::newthread(state1)
|
||||
|
||||
::print(statethread.call()+"\n");
|
||||
|
||||
for(local i = 0; i < 10000; i++)
|
||||
::print(statethread.wakeup()+"\n");
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user