diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/DefCore.txt b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/DefCore.txt similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/DefCore.txt rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/DefCore.txt diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Graphics.mesh b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Graphics.mesh similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Graphics.mesh rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Graphics.mesh diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Graphics.skeleton b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Graphics.skeleton similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Graphics.skeleton rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Graphics.skeleton diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Overlay.png b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Overlay.png similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Overlay.png rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Overlay.png diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Script.c b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Script.c similarity index 62% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Script.c rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Script.c index 7919fb5cf..3d5c6e382 100644 --- a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/Script.c +++ b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/Script.c @@ -1,4 +1,9 @@ -/* Spray can */ +/** + Spray can + Let out the little artist in you! + + @author Sven2 +*/ local last_x, last_y, last_ldx, last_ldy; local paint_col; @@ -6,13 +11,13 @@ local max_dist = 50; static SprayCan_last_col; -protected func Construction() +public func Construction() { SetPaintCol(SprayCan_last_col++); - return true; + return; } -func SetPaintCol(int idx) +public func SetPaintCol(int idx) { idx %= 5; var tex_name = Format("Paint%s",["Red", "Green", "Teal", "Yellow", "White"][idx]); @@ -39,7 +44,7 @@ public func HoldingEnabled() { return true; } public func ControlUseHolding(object clonk, int new_x, int new_y) { // Out of reach? Stop spraying. - if (Distance(0,0,new_x,new_y) > max_dist) + if (Distance(0, 0, new_x, new_y) > max_dist) { SetAction("Idle"); return true; @@ -49,16 +54,22 @@ public func ControlUseHolding(object clonk, int new_x, int new_y) new_x += GetX(); new_y += GetY(); // (re-)start spraying - if (GetAction() != "Spraying") StartSpraying(clonk, new_x, new_y); + if (GetAction() != "Spraying") + StartSpraying(clonk, new_x, new_y); // Spray paint if position moved - if (new_x==last_x && new_y == last_y) return true; + if (new_x == last_x && new_y == last_y) + return true; var wdt = 2; - var dx=new_x-last_x, dy=new_y-last_y; - var d = Distance(dx,dy); - var ldx = dy*wdt/d, ldy = -dx*wdt/d; - if (!last_ldx && !last_ldy) { last_ldx=ldx; last_ldy=ldy; } - DrawMaterialQuad(paint_col, last_x-last_ldx,last_y-last_ldy, last_x+last_ldx,last_y+last_ldy, new_x+ldx,new_y+ldy, new_x-ldx,new_y-ldy, DMQ_Bridge); + var dx = new_x - last_x, dy = new_y - last_y; + var d = Distance(dx, dy); + var ldx = dy * wdt / d, ldy = -dx *wdt / d; + if (!last_ldx && !last_ldy) + { + last_ldx = ldx; + last_ldy = ldy; + } + DrawMaterialQuad(paint_col, last_x - last_ldx, last_y - last_ldy, last_x + last_ldx, last_y + last_ldy, new_x + ldx, new_y + ldy, new_x - ldx, new_y - ldy, DMQ_Bridge); last_x = new_x; last_y = new_y; last_ldx = ldx; last_ldy = ldy; return true; @@ -80,14 +91,25 @@ private func StartSpraying(object clonk, int x, int y) { // Go into spray mode and place an initial blob last_x = x; last_y = y; - last_ldx=last_ldy=0; + last_ldx = last_ldy = 0; var r = Random(90), wdt = 2; var ldx = Sin(r, wdt), ldy = Cos(r, wdt); - DrawMaterialQuad(paint_col, x-ldx,y-ldy, x-ldy,y+ldx, x+ldx,y+ldy, x+ldy,y-ldx, DMQ_Bridge); + DrawMaterialQuad(paint_col, x - ldx, y - ldy, x - ldy, y + ldx, x + ldx, y + ldy, x + ldy, y - ldx, DMQ_Bridge); SetAction("Spraying"); return true; } +public func Definition(def) +{ + SetProperty("PictureTransformation", Trans_Rotate(-30, 0, 1, 1), def); +} + + +/*-- Properties --*/ + +local Collectible = true; +local Name = "$Name$"; +local Description = "$Description$"; local ActMap = { Spraying = { @@ -96,15 +118,7 @@ local ActMap = { Length = 1, Delay = 1, Name = "Spraying", - Sound = "SprayCan::SprayCan", + Sound = "Objects::SprayCan", NextAction = "Spraying", } }; - -func Definition(def) { - SetProperty("PictureTransformation",Trans_Rotate(-30,0,1,1),def); -} - -local Collectible = 1; -local Name = "$Name$"; -local Description = "$Description$"; diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.jpg b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/SprayCan.jpg similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.jpg rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/SprayCan.jpg diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.material b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/SprayCan.material similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.material rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/SprayCan.material diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/StringTblDE.txt b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/StringTblDE.txt similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/StringTblDE.txt rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/StringTblDE.txt diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/StringTblUS.txt b/planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/StringTblUS.txt similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/StringTblUS.txt rename to planet/Decoration.ocd/Misc.ocd/SprayCan.ocd/StringTblUS.txt diff --git a/planet/Parkour.ocf/Maze.ocs/Scenario.txt b/planet/Parkour.ocf/Maze.ocs/Scenario.txt index 11c67a762..d753bf2cb 100644 --- a/planet/Parkour.ocf/Maze.ocs/Scenario.txt +++ b/planet/Parkour.ocf/Maze.ocs/Scenario.txt @@ -10,6 +10,7 @@ Goals=Goal_RubyHunt=1; [Definitions] Definition1=Objects.ocd +Definition2=Decoration.ocd/Misc.ocd/SprayCan.ocd [Player1] Crew=Clonk=1 diff --git a/planet/Parkour.ocf/Maze.ocs/Script.c b/planet/Parkour.ocf/Maze.ocs/Script.c index e7d339dd4..05386f876 100644 --- a/planet/Parkour.ocf/Maze.ocs/Script.c +++ b/planet/Parkour.ocf/Maze.ocs/Script.c @@ -5,7 +5,6 @@ Dynamic maze --*/ -static g_caves, g_end_cave_x, g_end_cave_y; local goal_cave; func InitializePlayer(int plr) diff --git a/planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.wav b/planet/Sound.ocg/Objects.ocg/SprayCan.wav similarity index 100% rename from planet/Parkour.ocf/Maze.ocs/SprayCan.ocd/SprayCan.wav rename to planet/Sound.ocg/Objects.ocg/SprayCan.wav