Merge branch 'master' into heavy-resources
|
@ -562,6 +562,7 @@ if(APPLE)
|
||||||
src/platform/C4FileMonitorMac.mm
|
src/platform/C4FileMonitorMac.mm
|
||||||
src/platform/C4AppDelegate.h
|
src/platform/C4AppDelegate.h
|
||||||
src/platform/C4AppDelegate.mm
|
src/platform/C4AppDelegate.mm
|
||||||
|
src/platform/StdSchedulerMac.mm
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
list(APPEND OC_SYSTEM_SOURCES
|
list(APPEND OC_SYSTEM_SOURCES
|
||||||
|
@ -977,6 +978,8 @@ add_executable(c4group
|
||||||
|
|
||||||
add_executable(netpuncher EXCLUDE_FROM_ALL
|
add_executable(netpuncher EXCLUDE_FROM_ALL
|
||||||
src/platform/StdScheduler.cpp
|
src/platform/StdScheduler.cpp
|
||||||
|
src/platform/StdSchedulerWin32.cpp
|
||||||
|
src/platform/StdSchedulerPoll.cpp
|
||||||
src/netpuncher/main.cpp
|
src/netpuncher/main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1006,6 +1009,8 @@ src/platform/StdFile.h
|
||||||
src/platform/StdRegistry.cpp
|
src/platform/StdRegistry.cpp
|
||||||
src/platform/StdRegistry.h
|
src/platform/StdRegistry.h
|
||||||
src/platform/StdScheduler.cpp
|
src/platform/StdScheduler.cpp
|
||||||
|
src/platform/StdSchedulerWin32.cpp
|
||||||
|
src/platform/StdSchedulerPoll.cpp
|
||||||
src/platform/StdScheduler.h
|
src/platform/StdScheduler.h
|
||||||
src/platform/C4TimeMilliseconds.cpp
|
src/platform/C4TimeMilliseconds.cpp
|
||||||
src/platform/C4TimeMilliseconds.h
|
src/platform/C4TimeMilliseconds.h
|
||||||
|
@ -1418,10 +1423,6 @@ endif()
|
||||||
############################################################################
|
############################################################################
|
||||||
# installation
|
# installation
|
||||||
############################################################################
|
############################################################################
|
||||||
# Install the icon into share/icons/hicolor/48x48/apps/openclonk.png. Do this by
|
|
||||||
# extracting the correct size from oc.ico. Currently this is layer 2 - let's
|
|
||||||
# hope that it stays this way.
|
|
||||||
|
|
||||||
# Don't allow installation for WITH_AUTOMATIC_UPDATE because otherwise
|
# Don't allow installation for WITH_AUTOMATIC_UPDATE because otherwise
|
||||||
# the installed binary wouldn't find its game data in the system data path.
|
# the installed binary wouldn't find its game data in the system data path.
|
||||||
IF(WITH_AUTOMATIC_UPDATE)
|
IF(WITH_AUTOMATIC_UPDATE)
|
||||||
|
@ -1438,21 +1439,37 @@ install(
|
||||||
)"
|
)"
|
||||||
)
|
)
|
||||||
|
|
||||||
FIND_PACKAGE(ImageMagick COMPONENTS convert)
|
add_custom_target(icon32 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png)
|
||||||
if(ImageMagick_convert_FOUND)
|
add_custom_target(icon64 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png)
|
||||||
add_custom_command(
|
add_custom_target(icon128 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png)
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/openclonk.png
|
add_custom_target(icon256 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png)
|
||||||
COMMAND "${ImageMagick_convert_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc.ico[2]" "${CMAKE_CURRENT_BINARY_DIR}/openclonk.png"
|
add_custom_target(icon512 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png)
|
||||||
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc.ico
|
add_dependencies(data icon32 icon64 icon128 icon256 icon512)
|
||||||
VERBATIM
|
install(
|
||||||
)
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc32.png
|
||||||
add_custom_target(icon DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/openclonk.png)
|
DESTINATION share/icons/hicolor/32x32/apps
|
||||||
add_dependencies(data icon)
|
RENAME openclonk.png
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/openclonk.png
|
install(
|
||||||
DESTINATION share/icons/hicolor/48x48/apps
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc64.png
|
||||||
)
|
DESTINATION share/icons/hicolor/64x64/apps
|
||||||
endif()
|
RENAME openclonk.png
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc128.png
|
||||||
|
DESTINATION share/icons/hicolor/128x128/apps
|
||||||
|
RENAME openclonk.png
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc256.png
|
||||||
|
DESTINATION share/icons/hicolor/256x256/apps
|
||||||
|
RENAME openclonk.png
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/res/oc512.png
|
||||||
|
DESTINATION share/icons/hicolor/512x512/apps
|
||||||
|
RENAME openclonk.png
|
||||||
|
)
|
||||||
|
|
||||||
set(OC_C4GROUPS
|
set(OC_C4GROUPS
|
||||||
Graphics.ocg
|
Graphics.ocg
|
||||||
|
|
27
Credits.txt
|
@ -1,25 +1,30 @@
|
||||||
<Engine and Tools>
|
<Engine and Tools>
|
||||||
Armin Burgmeier (Clonk-Karl)
|
Armin Burgmeier (Clonk-Karl)
|
||||||
Günther Brammer (Günther)
|
Günther Brammer (Günther)
|
||||||
Nicolas Hake (Isilkor)
|
|
||||||
Sven Eberhardt (Sven2)
|
Sven Eberhardt (Sven2)
|
||||||
|
Nicolas Hake (Isilkor)
|
||||||
Martin Plicht (Mortimer)
|
Martin Plicht (Mortimer)
|
||||||
Peter Wortmann (PeterW)
|
Peter Wortmann (PeterW)
|
||||||
Julius Michaelis (Caesar)
|
Julius Michaelis (Caesar)
|
||||||
|
|
||||||
|
<Scripting and Content>
|
||||||
|
Maikel de Vries (Maikel)
|
||||||
|
David Dormagen (Zapper)
|
||||||
|
Felix Wagner (Clonkonaut)
|
||||||
|
Bernhard Bonigl (Boni)
|
||||||
|
|
||||||
<Art and Content>
|
<Art and Content>
|
||||||
Charles Spurrill (Ringwaul)
|
Charles Spurrill (Ringwaul)
|
||||||
Richard Gerum (Randrian)
|
Richard Gerum (Randrian)
|
||||||
Timo Stabbert (Mimmo)
|
Timo Stabbert (Mimmo)
|
||||||
|
Matthias Rottländer (Matthi)
|
||||||
|
Felix Riese (Fungiform)
|
||||||
|
Florian Graier (Nachtfalter)
|
||||||
|
|
||||||
<Scripting and Content>
|
<Coordination>
|
||||||
Maikel de Vries (Maikel)
|
|
||||||
Bernhard Bonigl (Boni)
|
|
||||||
Felix Wagner (Clonkonaut)
|
|
||||||
David Dormagen (Zapper)
|
|
||||||
|
|
||||||
<Coordination, Administration>
|
|
||||||
Tobias Zwick (Newton)
|
Tobias Zwick (Newton)
|
||||||
|
|
||||||
<Thanks to Contributors>
|
<Special Thanks to Contributors>
|
||||||
Benjamin Herr (Loriel), Matthias Rottländer (Matthi), Felix Riese (Fungiform), Manuel Riecke (MrBeast), Benedict Etzel (B_E), Carl-Philip Hänsch (Carli), Alexander Semeniuk (AlteredARMOR), Florian Graier (Nachtfalter), Daniel Theuke (ST-DDT), Asmageddon, Merten Ehmig (Pluto), Mark Haßelbusch (Marky), Luchs, Peewee, Lauri Niskanen (Ape), Dominik Bayerl (Kanibal), Faby, Checkmaty, Gurkenglas, Clonkine, mizipzor, mixi, Pyrit, grgecko, Koronis, RedWolf Design GmbH and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.
|
Benjamin Herr (Loriel), Benedict Etzel (B_E), Oliver Schneider (ker), Philipp Kern (pkern), Carl-Philip Hänsch (Carli), Manuel Rieke (MrBeast), Alexander Semeniuk (AlteredARMOR), Merten Ehmig (Pluto) Daniel Theuke (ST-DDT), Asmageddon, Faby, Russel, Peewee, Tim Blume (End), Andriel, Gurkenglas, Pyrit, Luchs, grgecko, Dominik Bayerl (Kannibal), Lauri Niskanen (Ape), Clonkine, Checkmaty, Sven-Hendrik Haase, Johannes Nixdorf (mixi), Stan, Koronis, mizipzor, Mark Haßelbusch (Marky), Sebastian Rühl and TomyLobo.
|
||||||
|
|
||||||
|
Also, big thanks to RedWolf Design GmbH and all those who contributed to previous Clonk titles for the passion they put into the game and for agreeing to make Clonk open source.
|
|
@ -11,15 +11,15 @@ SET(C4ENGINENAME "OpenClonk")
|
||||||
SET(C4ENGINENICK "openclonk")
|
SET(C4ENGINENICK "openclonk")
|
||||||
SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}")
|
SET(C4ENGINEID "${C4PROJECT_TLD}.${C4PROJECT_DOMAIN}.${C4ENGINENICK}")
|
||||||
|
|
||||||
SET(C4XVER1 5)
|
SET(C4XVER1 4)
|
||||||
SET(C4XVER2 3)
|
SET(C4XVER2 0)
|
||||||
SET(C4XVER3 90)
|
SET(C4XVER3 0)
|
||||||
|
|
||||||
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
# C4VERSIONBUILDNAME should be witty and somewhat frequently changing
|
||||||
# for alpha and beta releases, and meaningful and stable for stable releases.
|
# for alpha and beta releases, and meaningful and stable for stable releases.
|
||||||
# Both variables need to start with a space if they aren't empty.
|
# Both variables need to start with a space if they aren't empty.
|
||||||
SET(C4VERSIONBUILDNAME " Beyond the Rocks")
|
SET(C4VERSIONBUILDNAME " Beyond the Rocks")
|
||||||
SET(C4VERSIONEXTRA " Delta")
|
SET(C4VERSIONEXTRA "")
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
# Get revision from Git
|
# Get revision from Git
|
||||||
|
|
|
@ -101,7 +101,7 @@ global func FxIntFillChestsStart(object target, effect, int temporary)
|
||||||
{
|
{
|
||||||
if(temporary) return 1;
|
if(temporary) return 1;
|
||||||
var chests = FindObjects(Find_ID(Chest));
|
var chests = FindObjects(Find_ID(Chest));
|
||||||
var w_list = [Bow, Musket, Shield, Sword, Club, Javelin, Bow, Musket, Shield, Sword, Club, Javelin, DynamiteBox];
|
var w_list = [Bow, Musket, Shield, Sword, Club, GrenadeLauncher, Bow, Musket, Shield, Sword, Club, GrenadeLauncher, DynamiteBox];
|
||||||
|
|
||||||
for(var chest in chests)
|
for(var chest in chests)
|
||||||
for(var i=0; i<4; ++i)
|
for(var i=0; i<4; ++i)
|
||||||
|
@ -113,7 +113,7 @@ global func FxIntFillChestsTimer()
|
||||||
{
|
{
|
||||||
SetTemperature(100);
|
SetTemperature(100);
|
||||||
var chest = FindObjects(Find_ID(Chest), Sort_Random())[0];
|
var chest = FindObjects(Find_ID(Chest), Sort_Random())[0];
|
||||||
var w_list = [Boompack, IronBomb, Loam, Firestone, Bow, Musket, Sword, Javelin];
|
var w_list = [Boompack, IronBomb, IronBomb, Firestone, Bow, Musket, Sword, Javelin];
|
||||||
|
|
||||||
if (chest->ContentsCount() < 5)
|
if (chest->ContentsCount() < 5)
|
||||||
chest->CreateChestContents(w_list[Random(GetLength(w_list))]);
|
chest->CreateChestContents(w_list[Random(GetLength(w_list))]);
|
||||||
|
|
Before Width: | Height: | Size: 622 KiB After Width: | Height: | Size: 296 KiB |
|
@ -6,9 +6,9 @@ Friction=75
|
||||||
BlastFree=1
|
BlastFree=1
|
||||||
DigFree=1
|
DigFree=1
|
||||||
Dig2Object=Firestone
|
Dig2Object=Firestone
|
||||||
Dig2ObjectRatio=80
|
Dig2ObjectRatio=100
|
||||||
Blast2Object=Firestone
|
Blast2Object=Firestone
|
||||||
Blast2ObjectRatio=80
|
Blast2ObjectRatio=115
|
||||||
MaxAirSpeed=100
|
MaxAirSpeed=100
|
||||||
MaxSlide=1
|
MaxSlide=1
|
||||||
Placement=40
|
Placement=40
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
# Static Map Material/Texture Table
|
# Static Map Material/Texture Table
|
||||||
# Index +128 for underground materials
|
# Index +128 for underground materials
|
||||||
|
|
||||||
|
1=Vehicle-none
|
||||||
|
|
||||||
10=Tunnel-tunnel
|
10=Tunnel-tunnel
|
||||||
12=Tunnel-brickback
|
12=Tunnel-brickback
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
#include Library_Flag
|
#include Library_Flag
|
||||||
|
|
||||||
|
local DefaultFlagRadius = 250;
|
||||||
|
|
||||||
protected func Initialize()
|
protected func Initialize()
|
||||||
{
|
{
|
||||||
SetCategory(C4D_StaticBack);
|
SetCategory(C4D_StaticBack);
|
||||||
|
@ -13,3 +15,11 @@ protected func Initialize()
|
||||||
|
|
||||||
local Name = "$Name$";
|
local Name = "$Name$";
|
||||||
local Description = "$Description$";
|
local Description = "$Description$";
|
||||||
|
|
||||||
|
global func CheckConstructionSite(structure_id, x,y)
|
||||||
|
{
|
||||||
|
// Construction check: May not construct in power crystal range
|
||||||
|
if (!inherited(structure_id, x,y, ...)) return false;
|
||||||
|
if (FindObject(Find_ID(PowerCrystals), Find_Distance(PowerCrystals.DefaultFlagRadius, x,y))) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
@ -102,9 +102,6 @@ func InitializeObjects()
|
||||||
|
|
||||||
CreateObject(Tree_Coniferous, 300, 134);
|
CreateObject(Tree_Coniferous, 300, 134);
|
||||||
|
|
||||||
var LargeCaveMushroom0092 = CreateObject(LargeCaveMushroom, 114, 394);
|
|
||||||
LargeCaveMushroom0092->SetCon(40);
|
|
||||||
LargeCaveMushroom0092->SetClrModulation(0xffd1dedc);
|
|
||||||
var LargeCaveMushroom0096 = CreateObject(LargeCaveMushroom, 144, 513);
|
var LargeCaveMushroom0096 = CreateObject(LargeCaveMushroom, 144, 513);
|
||||||
LargeCaveMushroom0096->SetCon(60);
|
LargeCaveMushroom0096->SetCon(60);
|
||||||
LargeCaveMushroom0096->SetClrModulation(0xff788cc8);
|
LargeCaveMushroom0096->SetClrModulation(0xff788cc8);
|
||||||
|
@ -185,7 +182,7 @@ func InitializeObjects()
|
||||||
var Clonk0242 = CreateObject(Clonk, 149, 387);
|
var Clonk0242 = CreateObject(Clonk, 149, 387);
|
||||||
Clonk0242->SetColor(0xff78f03c);
|
Clonk0242->SetColor(0xff78f03c);
|
||||||
Clonk0242->SetDir(DIR_Left);
|
Clonk0242->SetDir(DIR_Left);
|
||||||
var Clonk0248 = CreateObject(Clonk, 80, 367);
|
var Clonk0248 = CreateObject(Clonk, 80, 387);
|
||||||
Clonk0248->SetDir(DIR_Right);
|
Clonk0248->SetDir(DIR_Right);
|
||||||
Clonk0248->SetColor(0xfff078f0);
|
Clonk0248->SetColor(0xfff078f0);
|
||||||
var Clonk0254 = CreateObject(Clonk, 520, 553);
|
var Clonk0254 = CreateObject(Clonk, 520, 553);
|
||||||
|
|
|
@ -14,7 +14,7 @@ func DoInit(int first_player)
|
||||||
|
|
||||||
elevator->CreateShaft(240);
|
elevator->CreateShaft(240);
|
||||||
elevator->SetOwner(first_player);
|
elevator->SetOwner(first_player);
|
||||||
elevator.case->SetPosition(elevator.case->GetX(), elevator.case->GetY()+210);
|
elevator.case->SetPosition(elevator.case->GetX(), elevator.case->GetY()+190);
|
||||||
// Create the start buildings: 2 x flag, windmill, armory, cabin
|
// Create the start buildings: 2 x flag, windmill, armory, cabin
|
||||||
CreateObject(Flagpole, 193*8, 43*8, first_player);
|
CreateObject(Flagpole, 193*8, 43*8, first_player);
|
||||||
CreateObject(Flagpole, 221*8, 46*8, first_player);
|
CreateObject(Flagpole, 221*8, 46*8, first_player);
|
||||||
|
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
@ -0,0 +1,311 @@
|
||||||
|
/* Automatically created objects file */
|
||||||
|
|
||||||
|
func InitializeObjects()
|
||||||
|
{
|
||||||
|
CreateObject(Grass, 792, 656);
|
||||||
|
CreateObject(Grass, 647, 614);
|
||||||
|
CreateObject(Grass, 656, 618);
|
||||||
|
CreateObject(Grass, 176, 533);
|
||||||
|
CreateObject(Grass, 86, 502);
|
||||||
|
CreateObject(Grass, 164, 529);
|
||||||
|
CreateObject(Grass, 248, 571);
|
||||||
|
CreateObject(Grass, 254, 575);
|
||||||
|
CreateObject(Grass, 207, 548);
|
||||||
|
CreateObject(Grass, 241, 568);
|
||||||
|
CreateObject(Grass, 224, 558);
|
||||||
|
CreateObject(Grass, 169, 533);
|
||||||
|
CreateObject(Grass, 199, 541);
|
||||||
|
CreateObject(Grass, 215, 550);
|
||||||
|
CreateObject(Grass, 222, 554);
|
||||||
|
CreateObject(Grass, 10, 498);
|
||||||
|
CreateObject(Grass, 3, 501);
|
||||||
|
|
||||||
|
CreateObject(Trunk, 1117, 546);
|
||||||
|
var Trunk0019 = CreateObject(Trunk, 1100, 555);
|
||||||
|
Trunk0019->SetCon(80);
|
||||||
|
var Trunk0020 = CreateObject(Trunk, 1363, 543);
|
||||||
|
Trunk0020->SetCon(65);
|
||||||
|
var Trunk0021 = CreateObject(Trunk, 1236, 561);
|
||||||
|
Trunk0021->SetCon(40);
|
||||||
|
CreateObject(Trunk, 983, 593);
|
||||||
|
CreateObject(Trunk, 1050, 574);
|
||||||
|
|
||||||
|
var Rank0024 = CreateObject(Rank, 1105, 503);
|
||||||
|
Rank0024->SetR(-140);
|
||||||
|
Rank0024->SetPosition(1105, 503);
|
||||||
|
var Rank0025 = CreateObject(Rank, 1415, 280);
|
||||||
|
Rank0025->SetR(176);
|
||||||
|
Rank0025->SetPosition(1415, 280);
|
||||||
|
var Rank0026 = CreateObject(Rank, 1509, 289);
|
||||||
|
Rank0026->SetR(-165);
|
||||||
|
Rank0026->SetPosition(1509, 289);
|
||||||
|
var Rank0027 = CreateObject(Rank, 1557, 314);
|
||||||
|
Rank0027->SetR(-159);
|
||||||
|
Rank0027->SetPosition(1557, 314);
|
||||||
|
var Rank0028 = CreateObject(Rank, 1315, 293);
|
||||||
|
Rank0028->SetR(-173);
|
||||||
|
Rank0028->SetPosition(1315, 293);
|
||||||
|
var Rank0029 = CreateObject(Rank, 1583, 452);
|
||||||
|
Rank0029->SetR(-8);
|
||||||
|
Rank0029->SetPosition(1583, 449);
|
||||||
|
var Rank0030 = CreateObject(Rank, 1491, 479);
|
||||||
|
Rank0030->SetR(-26);
|
||||||
|
Rank0030->SetPosition(1491, 476);
|
||||||
|
|
||||||
|
var Trunk0031 = CreateObject(Trunk, 1388, 302);
|
||||||
|
Trunk0031->SetCon(55);
|
||||||
|
Trunk0031->SetR(180);
|
||||||
|
Trunk0031->SetPosition(1388, 290);
|
||||||
|
var Trunk0032 = CreateObject(Trunk, 1316, 218);
|
||||||
|
Trunk0032->SetCon(66);
|
||||||
|
|
||||||
|
CreateObject(Tree_Coniferous, 531, 574);
|
||||||
|
|
||||||
|
CreateObject(Fern, 596, 595);
|
||||||
|
|
||||||
|
CreateObject(Tree_Coniferous, 633, 607);
|
||||||
|
CreateObject(Tree_Coniferous, 716, 632);
|
||||||
|
CreateObject(Tree_Coniferous, 764, 631);
|
||||||
|
CreateObject(Tree_Coniferous, 581, 590);
|
||||||
|
CreateObject(Tree_Coniferous, 413, 702);
|
||||||
|
CreateObject(Tree_Coniferous, 789, 628);
|
||||||
|
CreateObject(Tree_Coniferous, 934, 615);
|
||||||
|
CreateObject(Tree_Coniferous, 1134, 533);
|
||||||
|
CreateObject(Tree_Coniferous, 122, 507);
|
||||||
|
CreateObject(Tree_Coniferous, 137, 518);
|
||||||
|
CreateObject(Tree_Coniferous, 131, 515);
|
||||||
|
CreateObject(Tree_Coniferous, 152, 525);
|
||||||
|
CreateObject(Tree_Coniferous, 189, 543);
|
||||||
|
CreateObject(Tree_Coniferous, 231, 565);
|
||||||
|
CreateObject(Tree_Coniferous, 1290, 227);
|
||||||
|
|
||||||
|
CreateObject(Fern, 241, 1104);
|
||||||
|
CreateObject(Fern, 493, 1160);
|
||||||
|
CreateObject(Fern, 1008, 736);
|
||||||
|
CreateObject(Fern, 1530, 464);
|
||||||
|
CreateObject(Fern, 820, 1248);
|
||||||
|
CreateObject(Fern, 1125, 1207);
|
||||||
|
|
||||||
|
CreateObject(Tree_Coniferous, 264, 1111);
|
||||||
|
CreateObject(Tree_Coniferous, 691, 626);
|
||||||
|
|
||||||
|
CreateObject(Fern, 1100, 1353);
|
||||||
|
CreateObject(Fern, 1074, 1354);
|
||||||
|
|
||||||
|
var Trunk0141 = CreateObject(Trunk, 211, 1090);
|
||||||
|
Trunk0141->SetCon(80);
|
||||||
|
var Trunk0142 = CreateObject(Trunk, 438, 1155);
|
||||||
|
Trunk0142->SetCon(70);
|
||||||
|
var Trunk0143 = CreateObject(Trunk, 538, 1103);
|
||||||
|
Trunk0143->SetR(-165);
|
||||||
|
Trunk0143->SetPosition(538, 1080);
|
||||||
|
|
||||||
|
var Tree_Coniferous0144 = CreateObject(Tree_Coniferous, 624, 612);
|
||||||
|
Tree_Coniferous0144->SetCon(24);
|
||||||
|
|
||||||
|
var Rank0148 = CreateObject(Rank, 1634, 363);
|
||||||
|
Rank0148->SetR(-158);
|
||||||
|
Rank0148->SetPosition(1634, 363);
|
||||||
|
|
||||||
|
var Trunk0149 = CreateObject(Trunk, 1457, 528);
|
||||||
|
Trunk0149->SetCon(30);
|
||||||
|
|
||||||
|
CreateObject(Fern, 75, 1102);
|
||||||
|
|
||||||
|
CreateObject(Rule_NoPowerNeed, 0, 0);
|
||||||
|
|
||||||
|
var Chest0156 = CreateObject(Chest, 55, 1308);
|
||||||
|
CreateObject(Chest, 1381, 534);
|
||||||
|
var Chest0158 = CreateObject(Chest, 620, 879);
|
||||||
|
var Chest0159 = CreateObject(Chest, 625, 748);
|
||||||
|
var Chest0160 = CreateObject(Chest, 1553, 279);
|
||||||
|
CreateObject(Chest, 1647, 1380);
|
||||||
|
|
||||||
|
CreateObject(Armory, 1326, 523);
|
||||||
|
|
||||||
|
var Flagpole0204 = CreateObject(Flagpole, 120, 71);
|
||||||
|
Flagpole0204->SetCategory(C4D_StaticBack);
|
||||||
|
Flagpole0204->SetColor(0xffc85a12);
|
||||||
|
|
||||||
|
var WindGenerator0170 = CreateObject(WindGenerator, 1262, 537);
|
||||||
|
WindGenerator0170->SetCon(48);
|
||||||
|
WindGenerator0170->SetCategory(C4D_StaticBack);
|
||||||
|
WindGenerator0170->SetClrModulation(0xff7a6e65);
|
||||||
|
|
||||||
|
var WoodenCabin0155 = CreateObject(WoodenCabin, 56, 505);
|
||||||
|
WoodenCabin0155->SetCategory(C4D_Structure|C4D_Background);
|
||||||
|
|
||||||
|
var Elevator0162 = CreateObject(Elevator, 1170, 544);
|
||||||
|
Elevator0162->SetCon(40);
|
||||||
|
Elevator0162->SetClrModulation(0xff58362c);
|
||||||
|
|
||||||
|
var Clonk0289 = CreateObject(Clonk, 155, 997);
|
||||||
|
Clonk0289->Kill(Clonk0289, true);
|
||||||
|
Clonk0289->SetYDir(16);
|
||||||
|
Clonk0289->SetColor(0xffdd3420);
|
||||||
|
Clonk0289->SetName("Hans-Georg");
|
||||||
|
Clonk0289->SetDir(DIR_Left);
|
||||||
|
|
||||||
|
CreateObject(Rock, 109, 659);
|
||||||
|
CreateObject(Rock, 86, 860);
|
||||||
|
CreateObject(Rock, 31, 883);
|
||||||
|
CreateObject(Rock, 172, 601);
|
||||||
|
CreateObject(Rock, 128, 1045);
|
||||||
|
CreateObject(Rock, 37, 1031);
|
||||||
|
CreateObject(Rock, 240, 1204);
|
||||||
|
CreateObject(Rock, 453, 1176);
|
||||||
|
CreateObject(Rock, 514, 1233);
|
||||||
|
CreateObject(Rock, 493, 1292);
|
||||||
|
CreateObject(Rock, 669, 1190);
|
||||||
|
CreateObject(Rock, 794, 1262);
|
||||||
|
CreateObject(Rock, 983, 1371);
|
||||||
|
CreateObject(Rock, 1135, 1283);
|
||||||
|
CreateObject(Rock, 1193, 1261);
|
||||||
|
CreateObject(Rock, 1036, 1128);
|
||||||
|
CreateObject(Rock, 876, 1126);
|
||||||
|
CreateObject(Rock, 940, 976);
|
||||||
|
CreateObject(Rock, 668, 926);
|
||||||
|
CreateObject(Rock, 1152, 1064);
|
||||||
|
CreateObject(Rock, 1044, 809);
|
||||||
|
CreateObject(Rock, 1199, 740);
|
||||||
|
CreateObject(Rock, 1305, 605);
|
||||||
|
CreateObject(Rock, 1315, 837);
|
||||||
|
CreateObject(Rock, 1448, 637);
|
||||||
|
CreateObject(Rock, 1579, 854);
|
||||||
|
CreateObject(Rock, 1455, 244);
|
||||||
|
CreateObject(Rock, 667, 711);
|
||||||
|
CreateObject(Rock, 475, 634);
|
||||||
|
Chest0159->CreateContents(Rock);
|
||||||
|
CreateObject(Rock, 948, 721);
|
||||||
|
Chest0156->CreateContents(Rock);
|
||||||
|
CreateObject(Rock, 380, 332);
|
||||||
|
CreateObject(Rock, 302, 300);
|
||||||
|
CreateObject(Rock, 1519, 1011);
|
||||||
|
|
||||||
|
CreateObject(Coal, 160, 666);
|
||||||
|
CreateObject(Coal, 133, 1112);
|
||||||
|
CreateObject(Coal, 741, 708);
|
||||||
|
CreateObject(Coal, 1081, 642);
|
||||||
|
var Coal0464 = CreateObject(Coal, 1482, 1211);
|
||||||
|
Coal0464->SetCon(98);
|
||||||
|
CreateObject(Coal, 609, 1179);
|
||||||
|
|
||||||
|
CreateObject(Sulphur, 663, 947);
|
||||||
|
CreateObject(Sulphur, 897, 958);
|
||||||
|
CreateObject(Sulphur, 973, 784);
|
||||||
|
CreateObject(Sulphur, 993, 673);
|
||||||
|
CreateObject(Sulphur, 1324, 692);
|
||||||
|
CreateObject(Sulphur, 1554, 749);
|
||||||
|
CreateObject(Sulphur, 1393, 640);
|
||||||
|
|
||||||
|
Chest0158->CreateContents(Loam);
|
||||||
|
CreateObject(Loam, 28, 587);
|
||||||
|
Chest0160->CreateContents(Loam);
|
||||||
|
CreateObject(Loam, 154, 183);
|
||||||
|
|
||||||
|
CreateObject(Nugget, 679, 894);
|
||||||
|
CreateObject(Nugget, 660, 887);
|
||||||
|
CreateObject(Nugget, 637, 878);
|
||||||
|
CreateObject(Nugget, 683, 845);
|
||||||
|
CreateObject(Nugget, 91, 584);
|
||||||
|
CreateObject(Nugget, 718, 856);
|
||||||
|
CreateObject(Nugget, 802, 1101);
|
||||||
|
CreateObject(Nugget, 677, 1225);
|
||||||
|
Chest0158->CreateContents(Nugget);
|
||||||
|
Chest0158->CreateContents(Nugget);
|
||||||
|
CreateObject(Nugget, 1100, 1229);
|
||||||
|
CreateObject(Nugget, 1114, 974);
|
||||||
|
CreateObject(Nugget, 1484, 586);
|
||||||
|
CreateObject(Nugget, 358, 407);
|
||||||
|
|
||||||
|
Chest0156->CreateContents(Metal);
|
||||||
|
|
||||||
|
CreateObject(Wood, 643, 656);
|
||||||
|
var Wood0494 = CreateObject(Wood, 672, 760);
|
||||||
|
Wood0494->SetR(22);
|
||||||
|
Wood0494->SetRDir(-3);
|
||||||
|
Wood0494->SetPosition(672, 758);
|
||||||
|
|
||||||
|
var Axe0315 = CreateObject(Axe, 1537, 1292);
|
||||||
|
Axe0315->SetR(99);
|
||||||
|
Axe0315->SetPosition(1537, 1290);
|
||||||
|
|
||||||
|
var Shovel0316 = CreateObject(Shovel, 138, 982);
|
||||||
|
Shovel0316->SetR(123);
|
||||||
|
Shovel0316->SetPosition(138, 978);
|
||||||
|
|
||||||
|
Chest0159->CreateContents(Ropeladder);
|
||||||
|
|
||||||
|
CreateObject(Mushroom, 1503, 472);
|
||||||
|
CreateObject(Mushroom, 979, 590);
|
||||||
|
CreateObject(Mushroom, 1225, 544);
|
||||||
|
CreateObject(Mushroom, 1082, 551);
|
||||||
|
CreateObject(Mushroom, 1438, 529);
|
||||||
|
CreateObject(Mushroom, 601, 880);
|
||||||
|
CreateObject(Mushroom, 199, 1071);
|
||||||
|
CreateObject(Mushroom, 180, 1047);
|
||||||
|
CreateObject(Mushroom, 116, 941);
|
||||||
|
CreateObject(Mushroom, 1113, 726);
|
||||||
|
CreateObject(Mushroom, 1076, 726);
|
||||||
|
CreateObject(Mushroom, 1532, 825);
|
||||||
|
CreateObject(Mushroom, 1552, 1309);
|
||||||
|
CreateObject(Mushroom, 1577, 1317);
|
||||||
|
CreateObject(Mushroom, 674, 897);
|
||||||
|
CreateObject(Mushroom, 662, 1161);
|
||||||
|
CreateObject(Mushroom, 799, 1240);
|
||||||
|
CreateObject(Mushroom, 1616, 463);
|
||||||
|
CreateObject(Mushroom, 1659, 507);
|
||||||
|
Chest0159->CreateContents(Mushroom);
|
||||||
|
CreateObject(Mushroom, 659, 757);
|
||||||
|
CreateObject(Mushroom, 1615, 1389);
|
||||||
|
|
||||||
|
Chest0158->CreateContents(Dynamite);
|
||||||
|
Chest0158->CreateContents(Dynamite);
|
||||||
|
Chest0160->CreateContents(Dynamite);
|
||||||
|
Chest0160->CreateContents(Dynamite);
|
||||||
|
|
||||||
|
var Seaweed0473 = CreateObject(Seaweed, 189, 1167);
|
||||||
|
Seaweed0473->SetYDir(16);
|
||||||
|
Seaweed0473->SetPhase(11);
|
||||||
|
var Seaweed0476 = CreateObject(Seaweed, 142, 1169);
|
||||||
|
Seaweed0476->SetYDir(16);
|
||||||
|
Seaweed0476->SetPhase(11);
|
||||||
|
var Seaweed0479 = CreateObject(Seaweed, 522, 658);
|
||||||
|
Seaweed0479->SetYDir(16);
|
||||||
|
Seaweed0479->SetPhase(11);
|
||||||
|
var Seaweed0482 = CreateObject(Seaweed, 610, 705);
|
||||||
|
Seaweed0482->SetYDir(16);
|
||||||
|
Seaweed0482->SetPhase(11);
|
||||||
|
var Seaweed0485 = CreateObject(Seaweed, 697, 682);
|
||||||
|
Seaweed0485->SetYDir(16);
|
||||||
|
Seaweed0485->SetPhase(11);
|
||||||
|
var Seaweed0488 = CreateObject(Seaweed, 766, 697);
|
||||||
|
Seaweed0488->SetYDir(16);
|
||||||
|
Seaweed0488->SetPhase(11);
|
||||||
|
|
||||||
|
CreateObject(GrappleBow, 1601, 326);
|
||||||
|
|
||||||
|
Chest0160->CreateContents(Bow);
|
||||||
|
|
||||||
|
var Arrow0496 = Chest0160->CreateContents(Arrow);
|
||||||
|
Arrow0496->SetR(90);
|
||||||
|
|
||||||
|
CreateObject(Firestone, 84, 1018);
|
||||||
|
CreateObject(Firestone, 95, 909);
|
||||||
|
CreateObject(Firestone, 695, 1002);
|
||||||
|
CreateObject(Firestone, 864, 1279);
|
||||||
|
CreateObject(Firestone, 901, 710);
|
||||||
|
CreateObject(Firestone, 1298, 951);
|
||||||
|
CreateObject(Firestone, 1448, 742);
|
||||||
|
CreateObject(Firestone, 1644, 318);
|
||||||
|
Chest0159->CreateContents(Firestone);
|
||||||
|
Chest0159->CreateContents(Firestone);
|
||||||
|
CreateObject(Firestone, 193, 1172);
|
||||||
|
Chest0156->CreateContents(Firestone);
|
||||||
|
CreateObject(Firestone, 573, 616);
|
||||||
|
CreateObject(Firestone, 1154, 674);
|
||||||
|
CreateObject(Firestone, 534, 698);
|
||||||
|
CreateObject(Firestone, 1520, 953);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -29,6 +29,11 @@ global func IntroAddPlayer(int plr)
|
||||||
container->SetAction("Walk");
|
container->SetAction("Walk");
|
||||||
crew->Enter(container);
|
crew->Enter(container);
|
||||||
|
|
||||||
|
container.ActMap = { Prototype = Clonk.ActMap };
|
||||||
|
container.ActMap.Walk = { Prototype = Clonk.ActMap.Walk, Decel = 100 };
|
||||||
|
container.ActMap.Jump = { Prototype = Clonk.ActMap.Jump, Speed = 0, Accel = 0 };
|
||||||
|
container.JumpSpeed = 0;
|
||||||
|
|
||||||
SetPlrView(plr, crew);
|
SetPlrView(plr, crew);
|
||||||
SetPlayerViewLock(plr, true);
|
SetPlayerViewLock(plr, true);
|
||||||
SetPlayerZoomByViewRange(plr, 320, 240);
|
SetPlayerZoomByViewRange(plr, 320, 240);
|
||||||
|
@ -69,6 +74,10 @@ global func FxIntIntroStart(object target, proplist effect)
|
||||||
effect.Sister->SetColor(RGB(213, 68, 172));
|
effect.Sister->SetColor(RGB(213, 68, 172));
|
||||||
effect.Sister->SetObjectLayer(effect.Sister);
|
effect.Sister->SetObjectLayer(effect.Sister);
|
||||||
effect.Sister->SetDir(DIR_Right);
|
effect.Sister->SetDir(DIR_Right);
|
||||||
|
effect.Sister.ActMap = { Prototype = Clonk.ActMap };
|
||||||
|
effect.Sister.ActMap.Walk = { Prototype = Clonk.ActMap.Walk, Decel = 100 };
|
||||||
|
effect.Sister.ActMap.Jump = { Prototype = Clonk.ActMap.Jump, Speed = 0, Accel=0 };
|
||||||
|
effect.Sister.JumpSpeed = 0;
|
||||||
|
|
||||||
effect.Dialog = effect.Sister->SetDialogue("Sister");
|
effect.Dialog = effect.Sister->SetDialogue("Sister");
|
||||||
effect.Rock = effect.Sister->CreateContents(Rock);
|
effect.Rock = effect.Sister->CreateContents(Rock);
|
||||||
|
@ -140,7 +149,7 @@ global func FxIntIntroTimer(object target, proplist effect, int time)
|
||||||
if(effect.Time == 556)
|
if(effect.Time == 556)
|
||||||
{
|
{
|
||||||
for(var crew in effect.Players)
|
for(var crew in effect.Players)
|
||||||
crew->Contained()->Fling(3,-3);
|
crew->Contained()->Fling(2,-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(effect.Time == 570)
|
if(effect.Time == 570)
|
||||||
|
|
|
@ -126,7 +126,7 @@ protected func DoSwing(object clonk, int ix, int iy)
|
||||||
//It's solid, but not diggable. So it is a hard mineral.
|
//It's solid, but not diggable. So it is a hard mineral.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CreateParticle("Spark", x2*9/10,y2*9/10, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 10);
|
CreateParticle("StarSpark", x2*9/10,y2*9/10, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 10);
|
||||||
Sound("Clang?");
|
Sound("Clang?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ protected func Hit()
|
||||||
ShakeFree(6);
|
ShakeFree(6);
|
||||||
RemoveEffect("HitCheck",this);
|
RemoveEffect("HitCheck",this);
|
||||||
Sound("BulletHitGround?");
|
Sound("BulletHitGround?");
|
||||||
CreateParticle("Spark", 0, 0, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 3);
|
CreateParticle("StarSpark", 0, 0, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 3);
|
||||||
|
|
||||||
RemoveObject();
|
RemoveObject();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ protected func Hit()
|
||||||
|
|
||||||
Sound("BulletHitGround?");
|
Sound("BulletHitGround?");
|
||||||
|
|
||||||
CreateParticle("Spark", 0, 0, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 3);
|
CreateParticle("StarSpark", 0, 0, PV_Random(-20, 20), PV_Random(-20, 20), PV_Random(10, 20), Particles_Glimmer(), 3);
|
||||||
|
|
||||||
RemoveObject();
|
RemoveObject();
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,6 +181,11 @@ private func StartConstructing()
|
||||||
var site;
|
var site;
|
||||||
if(!(site = CreateConstruction(definition, 0, 0, GetOwner(), 1, 1, 1)))
|
if(!(site = CreateConstruction(definition, 0, 0, GetOwner(), 1, 1, 1)))
|
||||||
{
|
{
|
||||||
|
// spit out error message. This could happen if the landscape changed in the meantime
|
||||||
|
// a little hack: the message would immediately vanish because this object is deleted. So, instead display the
|
||||||
|
// message on one of the contents.
|
||||||
|
if(Contents(0))
|
||||||
|
CustomMessage("$TxtNoConstructionHere$", Contents(0), GetOwner(), nil,nil, RGB(255,0,0));
|
||||||
Interact(nil, 1);
|
Interact(nil, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
TxtTransfer=Baumaterial transferieren
|
TxtTransfer=Baumaterial einsetzen
|
||||||
TxtAbort=Konstruktion abbrechen
|
TxtAbort=Konstruktion abbrechen
|
||||||
TxtConstruction=Baustelle: %s
|
TxtConstruction=Baustelle: %s
|
||||||
|
TxtNoConstructionHere=Der Untergrund eignet sich nicht mehr zur Konstruktion!
|
|
@ -1,3 +1,4 @@
|
||||||
TxtTransfer=Transfer Material
|
TxtTransfer=Transfer Material
|
||||||
TxtAbort=Abort Construction
|
TxtAbort=Abort Construction
|
||||||
TxtConstruction=Construction Site: %s
|
TxtConstruction=Construction Site: %s
|
||||||
|
TxtNoConstructionHere=The building ground is not fit for construction anymore!
|
|
@ -164,7 +164,7 @@ func CreateConstructionSite(object clonk, id structure_id, int x, int y, int dir
|
||||||
return false;
|
return false;
|
||||||
if (!CheckConstructionSite(structure_id, x, y))
|
if (!CheckConstructionSite(structure_id, x, y))
|
||||||
{
|
{
|
||||||
CustomMessage("$TxtNoSiteHere$", this, clonk->GetOwner(), nil,nil, RGB(255,0,0)); // todo: stringtable
|
CustomMessage("$TxtNoSiteHere$", this, clonk->GetOwner(), nil,nil, RGB(255,0,0));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// intersection-check with all other construction sites... bah
|
// intersection-check with all other construction sites... bah
|
||||||
|
@ -175,7 +175,7 @@ func CreateConstructionSite(object clonk, id structure_id, int x, int y, int dir
|
||||||
other_site->GetTopEdge() > GetY()+y+structure_id->GetDefHeight()/2 ||
|
other_site->GetTopEdge() > GetY()+y+structure_id->GetDefHeight()/2 ||
|
||||||
other_site->GetBottomEdge() < GetY()+y-structure_id->GetDefHeight()/2 ))
|
other_site->GetBottomEdge() < GetY()+y-structure_id->GetDefHeight()/2 ))
|
||||||
{
|
{
|
||||||
CustomMessage(Format("$TxtBlocked$",other_site->GetName()), this, clonk->GetOwner(), nil,nil, RGB(255,0,0)); // todo: stringtable
|
CustomMessage(Format("$TxtBlocked$",other_site->GetName()), this, clonk->GetOwner(), nil,nil, RGB(255,0,0));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,6 +185,13 @@ func CreateConstructionSite(object clonk, id structure_id, int x, int y, int dir
|
||||||
// Create construction site
|
// Create construction site
|
||||||
var site;
|
var site;
|
||||||
site = CreateObject(ConstructionSite, x, y, Contained()->GetOwner());
|
site = CreateObject(ConstructionSite, x, y, Contained()->GetOwner());
|
||||||
|
/* note: this is necessary to have the site at the exact position x,y. Otherwise, for reasons I don't know, the
|
||||||
|
ConstructionSite seems to move 2 pixels downwards (on ConstructionSite::Construction() it is still the
|
||||||
|
original position) which leads to that the CheckConstructionSite function gets different parameters later
|
||||||
|
when the real construction should be created which of course could mean that it returns something else. (#1012)
|
||||||
|
- Newton
|
||||||
|
*/
|
||||||
|
site->SetPosition(GetX()+x,GetY()+y);
|
||||||
|
|
||||||
// Randomize sign rotation
|
// Randomize sign rotation
|
||||||
site -> SetProperty("MeshTransformation", Trans_Mul(Trans_Rotate(RandomX(-30, 30), 0, 1, 0), Trans_Rotate(RandomX(-10, 10), 1, 0, 0)));
|
site -> SetProperty("MeshTransformation", Trans_Mul(Trans_Rotate(RandomX(-30, 30), 0, 1, 0), Trans_Rotate(RandomX(-10, 10), 1, 0, 0)));
|
||||||
|
|
|
@ -76,11 +76,11 @@ public func FxSmeltingTimer(object target, proplist effect, int time)
|
||||||
{
|
{
|
||||||
//Message(Format("Smelting %d",timer));
|
//Message(Format("Smelting %d",timer));
|
||||||
// Fire in the furnace.
|
// Fire in the furnace.
|
||||||
CreateParticle("Fire", -10 * GetCalcDir(), 20, PV_Random(-1, 1), PV_Random(-1, 1), PV_Random(18, 36), Particles_Fire(), 2);
|
CreateParticle("Fire", -10 * GetCalcDir() + RandomX(-1, 1), 20 + RandomX(-1, 1), PV_Random(-1, 1), PV_Random(-1, 1), PV_Random(3, 10), Particles_Fire(), 2);
|
||||||
|
|
||||||
// Smoke from the pipes.
|
// Smoke from the pipes.
|
||||||
Smoke( -9*GetCalcDir(), -31, 6);
|
Smoke( -10*GetCalcDir(), -26, 6);
|
||||||
Smoke(-16*GetCalcDir(), -27, 3);
|
Smoke(-16*GetCalcDir(), -22, 3);
|
||||||
|
|
||||||
// Furnace sound after some time.
|
// Furnace sound after some time.
|
||||||
if (time == 30)
|
if (time == 30)
|
||||||
|
@ -96,7 +96,7 @@ public func FxSmeltingTimer(object target, proplist effect, int time)
|
||||||
|
|
||||||
// Fire from the pouring exit.
|
// Fire from the pouring exit.
|
||||||
if (Inside(time, 244, 290))
|
if (Inside(time, 244, 290))
|
||||||
CreateParticle("Fire", 17 * GetCalcDir(), 19, PV_Random(-2, 0), PV_Random(1, 3), PV_Random(18, 36), Particles_Fire(), 2);
|
CreateParticle("SphereSpark", 16 * GetCalcDir(), 20, PV_Random(2 * GetCalcDir(), 0), PV_Random(-2, 3), PV_Random(18, 36), Particles_Material(RGB(255, 200, 0)), 2);
|
||||||
|
|
||||||
if (time == 290)
|
if (time == 290)
|
||||||
{
|
{
|
||||||
|
|
After Width: | Height: | Size: 592 B |
|
@ -1,29 +0,0 @@
|
||||||
material Loom
|
|
||||||
{
|
|
||||||
receive_shadows on
|
|
||||||
|
|
||||||
technique
|
|
||||||
{
|
|
||||||
pass Loom
|
|
||||||
{
|
|
||||||
ambient 0.800000011920929 0.800000011920929 0.800000011920929 1.0
|
|
||||||
diffuse 0.6400000190734865 0.6400000190734865 0.6400000190734865 1.0
|
|
||||||
specular 0.5 0.5 0.5 1.0 12.5
|
|
||||||
emissive 0.0 0.0 0.0 1.0
|
|
||||||
|
|
||||||
alpha_to_coverage off
|
|
||||||
cull_hardware clockwise
|
|
||||||
depth_check on
|
|
||||||
depth_write on
|
|
||||||
scene_blend one zero
|
|
||||||
|
|
||||||
texture_unit
|
|
||||||
{
|
|
||||||
texture Loom.png
|
|
||||||
tex_address_mode wrap
|
|
||||||
scale 1.0 1.0
|
|
||||||
colour_op modulate
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 888 B |
|
@ -194,7 +194,9 @@ func DrawCaves()
|
||||||
{
|
{
|
||||||
for (var cave in caves)
|
for (var cave in caves)
|
||||||
{
|
{
|
||||||
Draw("Tunnel", {Algo=MAPALGO_Ellipsis, X=cave.X, Y=cave.Y, Wdt=4, Hgt=4});
|
var cave_algo = {Algo=MAPALGO_Ellipsis, X=cave.X, Y=cave.Y, Wdt=4, Hgt=4};
|
||||||
|
var turb_algo = {Algo=MAPALGO_Turbulence, Amplitude=8, Scale=15, Op=cave_algo};
|
||||||
|
Draw("Tunnel", turb_algo);
|
||||||
//var src = cave.path;
|
//var src = cave.path;
|
||||||
//if (src && GetLength(src)) src = Format("%d,%d", src[GetLength(src)-1].X, src[GetLength(src)-1].Y);
|
//if (src && GetLength(src)) src = Format("%d,%d", src[GetLength(src)-1].X, src[GetLength(src)-1].Y);
|
||||||
//Log("Cave at %d,%d src %v", cave.X, cave.Y, src);
|
//Log("Cave at %d,%d src %v", cave.X, cave.Y, src);
|
||||||
|
@ -209,7 +211,9 @@ func DrawTunnels()
|
||||||
for (var cave2 in cave.links)
|
for (var cave2 in cave.links)
|
||||||
{
|
{
|
||||||
if (cave2.done) continue;
|
if (cave2.done) continue;
|
||||||
Draw("Tunnel", {Algo=MAPALGO_Polygon, X=[cave.X, cave2.X], Y=[cave.Y, cave2.Y], Wdt=2, Open=1, Empty=1 });
|
var tunnel_algo = {Algo=MAPALGO_Polygon, X=[cave.X, cave2.X], Y=[cave.Y, cave2.Y], Wdt=2, Open=1, Empty=1 };
|
||||||
|
var turb_algo = {Algo=MAPALGO_Turbulence, Amplitude=9, Scale=10, Op=tunnel_algo};
|
||||||
|
Draw("Tunnel", turb_algo);
|
||||||
}
|
}
|
||||||
cave.done = true;
|
cave.done = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,9 @@ local goal_cave;
|
||||||
|
|
||||||
func InitializePlayer(int plr)
|
func InitializePlayer(int plr)
|
||||||
{
|
{
|
||||||
// Harsh zoom range
|
// Harsher zoom range
|
||||||
for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct])
|
for (var flag in [PLRZOOM_LimitMax, PLRZOOM_Direct])
|
||||||
SetPlayerZoomByViewRange(plr,300,200,flag);
|
SetPlayerZoomByViewRange(plr,240,160,flag);
|
||||||
//SetPlayerZoomByViewRange(plr,LandscapeWidth(),LandscapeHeight(),flag);
|
//SetPlayerZoomByViewRange(plr,LandscapeWidth(),LandscapeHeight(),flag);
|
||||||
SetPlayerViewLock(plr, true);
|
SetPlayerViewLock(plr, true);
|
||||||
// Position and materials
|
// Position and materials
|
||||||
|
|
|
@ -2,14 +2,13 @@
|
||||||
id=SprayCan
|
id=SprayCan
|
||||||
Version=5,2,0,1
|
Version=5,2,0,1
|
||||||
Category=C4D_Object
|
Category=C4D_Object
|
||||||
Width=8
|
Width=9
|
||||||
Height=8
|
Height=3
|
||||||
Offset=-4,-4
|
Offset=-4,-2
|
||||||
Picture=0,0,64,64
|
Vertices=4
|
||||||
Vertices=2
|
VertexX=-4,4,-4,4
|
||||||
VertexX=0,0
|
VertexY=1,1,-2,-2
|
||||||
VertexY=3,-3
|
VertexFriction=40,40,40,40
|
||||||
VertexFriction=40,40
|
|
||||||
Value=5
|
Value=5
|
||||||
Mass=10
|
Mass=10
|
||||||
Rotate=1
|
Rotate=1
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
local last_x, last_y, last_ldx, last_ldy;
|
local last_x, last_y, last_ldx, last_ldy;
|
||||||
local paint_col;
|
local paint_col;
|
||||||
|
local max_dist = 50;
|
||||||
|
|
||||||
static SprayCan_last_col;
|
static SprayCan_last_col;
|
||||||
|
|
||||||
|
@ -14,8 +15,10 @@ protected func Construction()
|
||||||
func SetPaintCol(int idx)
|
func SetPaintCol(int idx)
|
||||||
{
|
{
|
||||||
idx %= 5;
|
idx %= 5;
|
||||||
if (idx) SetGraphics(Format("%d",idx)); else SetGraphics();
|
var tex_name = Format("Paint%s",["Red", "Green", "Teal", "Yellow", "White"][idx]);
|
||||||
paint_col = Format("Tunnel-Paint%s", ["Red", "Green", "Teal", "Yellow", "White"][idx]);
|
var tex_color = GetAverageTextureColor(tex_name);
|
||||||
|
SetColor(tex_color);
|
||||||
|
paint_col = Format("Tunnel-%s", tex_name);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +31,8 @@ func Hit()
|
||||||
// Item activation
|
// Item activation
|
||||||
func ControlUseStart(object clonk, int x, int y)
|
func ControlUseStart(object clonk, int x, int y)
|
||||||
{
|
{
|
||||||
|
if (Distance(0,0,x,y) > max_dist) return true;
|
||||||
|
|
||||||
x += GetX(); y += GetY();
|
x += GetX(); y += GetY();
|
||||||
last_x = x; last_y = y;
|
last_x = x; last_y = y;
|
||||||
last_ldx=last_ldy=0;
|
last_ldx=last_ldy=0;
|
||||||
|
@ -41,9 +46,20 @@ func ControlUseStart(object clonk, int x, int y)
|
||||||
func HoldingEnabled() { return true; }
|
func HoldingEnabled() { return true; }
|
||||||
|
|
||||||
func ControlUseHolding(object clonk, int new_x, int new_y)
|
func ControlUseHolding(object clonk, int new_x, int new_y)
|
||||||
{
|
{
|
||||||
new_x += GetX(); new_y += GetY();
|
new_x += GetX(); new_y += GetY();
|
||||||
if (new_x==last_x && new_y == last_y) return true;
|
if (new_x==last_x && new_y == last_y) return true;
|
||||||
|
|
||||||
|
if (Distance(GetX(),GetY(),new_x,new_y) > max_dist)
|
||||||
|
{
|
||||||
|
last_x = new_x;
|
||||||
|
last_y = new_y;
|
||||||
|
SetAction("Idle");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GetAction() != "Spraying") SetAction("Spraying");
|
||||||
|
|
||||||
var wdt = 2;
|
var wdt = 2;
|
||||||
var dx=new_x-last_x, dy=new_y-last_y;
|
var dx=new_x-last_x, dy=new_y-last_y;
|
||||||
var d = Distance(dx,dy);
|
var d = Distance(dx,dy);
|
||||||
|
@ -79,9 +95,11 @@ local ActMap = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
func Definition(def) {
|
||||||
|
SetProperty("PictureTransformation",Trans_Rotate(-30,0,1,1),def);
|
||||||
|
}
|
||||||
|
|
||||||
local Collectible = 1;
|
local Collectible = 1;
|
||||||
local Name = "$Name$";
|
local Name = "$Name$";
|
||||||
local Description = "$Description$";
|
|
||||||
local UsageHelp = "$UsageHelp$";
|
local UsageHelp = "$UsageHelp$";
|
||||||
local Rebuy = true;
|
local Rebuy = true;
|
||||||
|
|
After Width: | Height: | Size: 6.1 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
material SprayCan
|
||||||
|
{
|
||||||
|
receive_shadows on
|
||||||
|
|
||||||
|
technique
|
||||||
|
{
|
||||||
|
pass SprayCan
|
||||||
|
{
|
||||||
|
ambient 0.500000 0.500000 0.500000 1.000000
|
||||||
|
diffuse 1.000000 1.000000 1.000000 1.000000
|
||||||
|
specular 0.000000 0.000000 0.000000 1.000000 12.500000
|
||||||
|
emissive 0.000000 0.000000 0.000000 1.000000
|
||||||
|
|
||||||
|
texture_unit Overlay
|
||||||
|
{
|
||||||
|
texture Overlay.png
|
||||||
|
tex_address_mode wrap
|
||||||
|
filtering trilinear
|
||||||
|
colour_op_ex modulate src_texture src_player_colour
|
||||||
|
}
|
||||||
|
texture_unit SprayCan
|
||||||
|
{
|
||||||
|
texture SprayCan.jpg
|
||||||
|
tex_address_mode wrap
|
||||||
|
filtering trilinear
|
||||||
|
colour_op_ex blend_current_alpha src_current src_texture
|
||||||
|
}
|
||||||
|
texture_unit Light
|
||||||
|
{
|
||||||
|
// apply lighting -- note this texture unit does not need an
|
||||||
|
// actual texture image: no hardware TIU will be used.
|
||||||
|
colour_op_ex modulate src_current src_diffuse
|
||||||
|
alpha_op_ex modulate src_current src_diffuse
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,2 @@
|
||||||
Name=Lehm
|
Name=Sprühdose
|
||||||
Description=Mit Lehm können kleine Lehmbrücken gebaut werden.|Benötigt ein Fass mit Wasser und einen Eimer Erde zur Produktion.
|
UsageHelp=Lasse den kleinen Künstler in dir heraus!
|
||||||
UsageHelp=Halte [Benutzen] gedrückt um eine Lehmbrücke in die gezeigte Richtung zu bauen.
|
|
|
@ -1,3 +1,2 @@
|
||||||
Name=Loam
|
Name=Spray can
|
||||||
Description=With loam one can build small loam bridges.|Needs a barrel of water and a bucket of water to produce.
|
UsageHelp=Let out the little artist in you!
|
||||||
UsageHelp=Hold down the [Use] key to build a bridge, move the mouse to control where it is created.
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#appendto Ruby
|
||||||
|
|
||||||
|
// also flash when contained so noone can smuggle his ruby to the goal
|
||||||
|
func FxSparkleTimer(target, effect, effect_time)
|
||||||
|
{
|
||||||
|
if(!Random(2)) return FX_OK;
|
||||||
|
var obj = Contained() ?? this;
|
||||||
|
obj->CreateParticle("MagicRing", 0, 0, 0, 0, effect.Interval, effect.particles, 1);
|
||||||
|
return FX_OK;
|
||||||
|
}
|
|
@ -1,2 +1,2 @@
|
||||||
DE:Labyrinth
|
DE:Das Herz des Berges
|
||||||
US:Maze
|
US:Heart of the Mountain
|
|
@ -493,9 +493,9 @@ global func FxSmokeTrailStart(object target, proplist effect, int temp, color)
|
||||||
var alpha = (effect.color >> 24) & 0xff;
|
var alpha = (effect.color >> 24) & 0xff;
|
||||||
effect.particles_smoke =
|
effect.particles_smoke =
|
||||||
{
|
{
|
||||||
R = PV_KeyFrames(0, 0, 200, 400, 0, 1000, 0),
|
R = PV_KeyFrames(0, 0, 250, 400, 200, 1000, 100),
|
||||||
G = PV_KeyFrames(0, 0, 200, 400, 0, 1000, 0),
|
G = PV_KeyFrames(0, 0, 250, 400, 200, 1000, 100),
|
||||||
B = PV_KeyFrames(0, 0, 200, 400, 0, 1000, 0),
|
B = PV_KeyFrames(0, 0, 250, 400, 200, 1000, 100),
|
||||||
Alpha = PV_KeyFrames(0, 0, 0, 300, alpha, 600, (alpha * 4) / 5, 1000, 0),
|
Alpha = PV_KeyFrames(0, 0, 0, 300, alpha, 600, (alpha * 4) / 5, 1000, 0),
|
||||||
Rotation = PV_Random(0, 360),
|
Rotation = PV_Random(0, 360),
|
||||||
ForceX = PV_Wind(20),
|
ForceX = PV_Wind(20),
|
||||||
|
|
|
@ -39,9 +39,9 @@ global func Particles_Dust()
|
||||||
OnCollision = PC_Stop(),
|
OnCollision = PC_Stop(),
|
||||||
ForceX = PV_Wind(20),
|
ForceX = PV_Wind(20),
|
||||||
ForceY = PV_Gravity(25),
|
ForceY = PV_Gravity(25),
|
||||||
Alpha = PV_Linear(30, 0),
|
Alpha = PV_KeyFrames(0, 0, 0, 250, 60, 1000, 0),
|
||||||
Rotation = PV_Random(0, 360),
|
Rotation = PV_Random(0, 360),
|
||||||
Size = PV_KeyFrames(0, 0, 0, 100, 25, 1000, 15)
|
Size = PV_KeyFrames(0, 0, 5, 100, 12, 1000, 7)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +186,6 @@ global func Particles_SmokeTrail()
|
||||||
ForceX = PV_Wind(20),
|
ForceX = PV_Wind(20),
|
||||||
DampingX = 950, DampingY = 950,
|
DampingX = 950, DampingY = 950,
|
||||||
Alpha = PV_Linear(128, 0),
|
Alpha = PV_Linear(128, 0),
|
||||||
R = 50, G = 50, B = 50,
|
|
||||||
Size = PV_KeyFrames(0, 0, 0, 200, PV_Random(10, 30), 1000, PV_Random(25, 35))
|
Size = PV_KeyFrames(0, 0, 0, 200, PV_Random(10, 30), 1000, PV_Random(25, 35))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -269,9 +268,9 @@ global func Particles_Thrust(int size)
|
||||||
{
|
{
|
||||||
Size = PV_KeyFrames(0, 0, 0, 50, size, 1000, size * 2),
|
Size = PV_KeyFrames(0, 0, 0, 50, size, 1000, size * 2),
|
||||||
Alpha = PV_Linear(255, 0),
|
Alpha = PV_Linear(255, 0),
|
||||||
R = PV_KeyFrames(0, 0, 255, 500, 0, 1000, 0),
|
R = PV_KeyFrames(0, 0, 255, 500, 100, 1000, 50),
|
||||||
G = PV_KeyFrames(0, 0, 255, 500, 0, 1000, 0),
|
G = PV_KeyFrames(0, 0, 255, 500, 100, 1000, 50),
|
||||||
B = PV_KeyFrames(0, 0, 255, 500, 0, 1000, 0),
|
B = PV_KeyFrames(0, 0, 255, 500, 100, 1000, 50),
|
||||||
Phase = PV_Random(0, 3, 10),
|
Phase = PV_Random(0, 3, 10),
|
||||||
Rotation = PV_Random(0, 360),
|
Rotation = PV_Random(0, 360),
|
||||||
DampingX = 950, DampingY = 950,
|
DampingX = 950, DampingY = 950,
|
||||||
|
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
@ -61,7 +61,7 @@ map AcidWorld {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Ground materials
|
// Ground materials
|
||||||
Mats { mat=Firestone; y=84px; hgt=140px; turbulence=1000; };
|
Mats { mat=Firestone; a=20; y=124px; hgt=100px; turbulence=1000; };
|
||||||
Mats { mat=Rock; zoomX=10; a=5; VaryTex { mat=rock; tex=rock_cracked;};};
|
Mats { mat=Rock; zoomX=10; a=5; VaryTex { mat=rock; tex=rock_cracked;};};
|
||||||
Mats { mat=Coal; y=56px; hgt=140px; turbulence=1000; };
|
Mats { mat=Coal; y=56px; hgt=140px; turbulence=1000; };
|
||||||
Mats { mat=Ore; y=84px; hgt=112px; turbulence=10; };
|
Mats { mat=Ore; y=84px; hgt=112px; turbulence=10; };
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
DE:Gem Grabbers
|
DE:Juwelenjäger
|
||||||
US:Gem Grabbers
|
US:Gem Grabbers
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
@ -2,7 +2,7 @@
|
||||||
* OpenClonk, http://www.openclonk.org
|
* OpenClonk, http://www.openclonk.org
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
||||||
* Copyright (c) 2010-2013, The OpenClonk Team and contributors
|
* Copyright (c) 2010-2014, The OpenClonk Team and contributors
|
||||||
*
|
*
|
||||||
* Distributed under the terms of the ISC license; see accompanying file
|
* Distributed under the terms of the ISC license; see accompanying file
|
||||||
* "COPYING" for details.
|
* "COPYING" for details.
|
||||||
|
@ -26,28 +26,13 @@
|
||||||
// ------------------------------------------------
|
// ------------------------------------------------
|
||||||
// --- C4StartupAboutDlg
|
// --- C4StartupAboutDlg
|
||||||
|
|
||||||
C4StartupAboutDlg::C4StartupAboutDlg() : C4StartupDlg("")
|
C4StartupAboutDlg::C4StartupAboutDlg() : C4StartupDlg(LoadResStr("IDS_DLG_ABOUT"))
|
||||||
{
|
{
|
||||||
// ctor
|
// ctor
|
||||||
UpdateSize();
|
UpdateSize();
|
||||||
|
|
||||||
// key bindings: No longer back on any key
|
|
||||||
pKeyBack = NULL;
|
|
||||||
//C4CustomKey::CodeList keys;
|
|
||||||
//keys.push_back(C4KeyCodeEx(KEY_Any)); keys.push_back(C4KeyCodeEx(KEY_JOY_AnyButton));
|
|
||||||
//pKeyBack = new C4KeyBinding(keys, "StartupAboutBack", KEYSCOPE_Gui,
|
|
||||||
// new C4GUI::DlgKeyCB<C4StartupAboutDlg>(*this, &C4StartupAboutDlg::KeyBack), C4CustomKey::PRIO_Dlg);
|
|
||||||
|
|
||||||
// version and registration info in topright corner
|
|
||||||
C4Rect rcClient = GetContainedClientRect();
|
|
||||||
StdStrBuf sVersion; sVersion.Format(LoadResStr("IDS_DLG_VERSION"), C4VERSION);
|
|
||||||
CStdFont &rUseFont = ::GraphicsResource.TextFont;
|
CStdFont &rUseFont = ::GraphicsResource.TextFont;
|
||||||
int32_t iInfoWdt = Min<int32_t>(rcClient.Wdt/2, rUseFont.GetTextWidth("General info text width")*2);
|
C4Rect rcClient = GetContainedClientRect();
|
||||||
C4GUI::ComponentAligner caInfo(C4Rect(rcClient.x + rcClient.Wdt - iInfoWdt, rcClient.y, iInfoWdt, rcClient.Hgt/8), 0,0, false);
|
|
||||||
AddElement(new C4GUI::Label(sVersion.getData(), caInfo.GetGridCell(0,1,0,4), ARight));
|
|
||||||
StdStrBuf sRegStr, sKeyFile;
|
|
||||||
Application.Add(this);
|
|
||||||
OnSec1Timer();
|
|
||||||
|
|
||||||
// bottom line buttons and copyright messages
|
// bottom line buttons and copyright messages
|
||||||
C4GUI::ComponentAligner caMain(rcClient, 0,0, true);
|
C4GUI::ComponentAligner caMain(rcClient, 0,0, true);
|
||||||
|
@ -68,8 +53,6 @@ C4StartupAboutDlg::C4StartupAboutDlg() : C4StartupDlg("")
|
||||||
|
|
||||||
C4StartupAboutDlg::~C4StartupAboutDlg()
|
C4StartupAboutDlg::~C4StartupAboutDlg()
|
||||||
{
|
{
|
||||||
Application.Remove(this);
|
|
||||||
delete pKeyBack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void C4StartupAboutDlg::DoBack()
|
void C4StartupAboutDlg::DoBack()
|
||||||
|
@ -77,26 +60,9 @@ void C4StartupAboutDlg::DoBack()
|
||||||
C4Startup::Get()->SwitchDialog(C4Startup::SDID_Main);
|
C4Startup::Get()->SwitchDialog(C4Startup::SDID_Main);
|
||||||
}
|
}
|
||||||
|
|
||||||
void C4StartupAboutDlg::OnSec1Timer()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void C4StartupAboutDlg::DrawElement(C4TargetFacet &cgo)
|
void C4StartupAboutDlg::DrawElement(C4TargetFacet &cgo)
|
||||||
{
|
{
|
||||||
// draw background - do not use bg drawing proc, because it stretches
|
C4Startup::Get()->Graphics.fctAboutBG.Draw(cgo, true, 0, 0, true);
|
||||||
// pre-clear background instead to prevent blinking borders
|
|
||||||
if (!IsFading()) pDraw->FillBG();
|
|
||||||
C4Startup::Get()->Graphics.fctAboutBG.Draw(cgo, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void C4StartupAboutDlg::MouseInput(C4GUI::CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam)
|
|
||||||
{
|
|
||||||
// back on any mouse button? Better not, because mouse input is required
|
|
||||||
/*if (iButton == C4MC_Button_LeftDown || iButton == C4MC_Button_RightDown || iButton == C4MC_Button_MiddleDown)
|
|
||||||
DoBack();
|
|
||||||
else*/
|
|
||||||
// otherwise, inherited for tooltips
|
|
||||||
C4StartupDlg::MouseInput(rMouse, iButton, iX, iY, dwKeyParam);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_AUTOMATIC_UPDATE
|
#ifdef WITH_AUTOMATIC_UPDATE
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* OpenClonk, http://www.openclonk.org
|
* OpenClonk, http://www.openclonk.org
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
||||||
* Copyright (c) 2013, The OpenClonk Team and contributors
|
* Copyright (c) 2013-2014, The OpenClonk Team and contributors
|
||||||
*
|
*
|
||||||
* Distributed under the terms of the ISC license; see accompanying file
|
* Distributed under the terms of the ISC license; see accompanying file
|
||||||
* "COPYING" for details.
|
* "COPYING" for details.
|
||||||
|
@ -13,32 +13,21 @@
|
||||||
* To redistribute this file separately, substitute the full license texts
|
* To redistribute this file separately, substitute the full license texts
|
||||||
* for the above references.
|
* for the above references.
|
||||||
*/
|
*/
|
||||||
// About/credits screen
|
// Credits screen
|
||||||
|
|
||||||
#ifndef INC_C4StartupAboutDlg
|
#ifndef INC_C4StartupAboutDlg
|
||||||
#define INC_C4StartupAboutDlg
|
#define INC_C4StartupAboutDlg
|
||||||
|
|
||||||
#include "C4Startup.h"
|
#include "C4Startup.h"
|
||||||
|
|
||||||
// webcode show time
|
// startup dialog: credits
|
||||||
const int32_t C4AboutWebCodeShowTime = 25; // seconds
|
class C4StartupAboutDlg : public C4StartupDlg
|
||||||
|
|
||||||
// startup dialog: About
|
|
||||||
class C4StartupAboutDlg : public C4StartupDlg, private C4ApplicationSec1Timer
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
C4StartupAboutDlg(); // ctor
|
C4StartupAboutDlg();
|
||||||
~C4StartupAboutDlg(); // dtor
|
~C4StartupAboutDlg();
|
||||||
|
|
||||||
private:
|
|
||||||
class C4KeyBinding *pKeyBack;
|
|
||||||
C4GUI::Label *pWebCodeLbl;
|
|
||||||
int32_t iWebCodeTimer;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int32_t GetMarginTop() { return iDlgMarginY + C4GUI_FullscreenDlg_TitleHeight/2; } // less top margin
|
|
||||||
|
|
||||||
virtual void MouseInput(C4GUI::CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam); // input: back on any button
|
|
||||||
virtual bool OnEnter() { DoBack(); return true; }
|
virtual bool OnEnter() { DoBack(); return true; }
|
||||||
virtual bool OnEscape() { DoBack(); return true; }
|
virtual bool OnEscape() { DoBack(); return true; }
|
||||||
virtual void DrawElement(C4TargetFacet &cgo);
|
virtual void DrawElement(C4TargetFacet &cgo);
|
||||||
|
@ -49,7 +38,6 @@ protected:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void OnSec1Timer();
|
|
||||||
|
|
||||||
void DoBack(); // back to main menu
|
void DoBack(); // back to main menu
|
||||||
|
|
||||||
|
|