mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
- Ported BS12 code for smart tables. They now include T tables and full tables which continue into 1-tile thick tables. You still can't do everything ever but you can at least make T shaped table pieces.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3612 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -629,7 +629,7 @@
|
|||||||
layer = 2.8
|
layer = 2.8
|
||||||
throwpass = 1 //You can throw objects over this, despite it's density.
|
throwpass = 1 //You can throw objects over this, despite it's density.
|
||||||
|
|
||||||
New()
|
/obj/structure/table/New()
|
||||||
..()
|
..()
|
||||||
for(var/obj/structure/table/T in src.loc)
|
for(var/obj/structure/table/T in src.loc)
|
||||||
if(T != src)
|
if(T != src)
|
||||||
@@ -640,17 +640,17 @@
|
|||||||
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
|
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
|
||||||
T.update_icon()
|
T.update_icon()
|
||||||
|
|
||||||
Del()
|
/obj/structure/table/Del()
|
||||||
for(var/direction in list(1,2,4,8,5,6,9,10))
|
for(var/direction in list(1,2,4,8,5,6,9,10))
|
||||||
if(locate(/obj/structure/table,get_step(src,direction)))
|
if(locate(/obj/structure/table,get_step(src,direction)))
|
||||||
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
|
var/obj/structure/table/T = locate(/obj/structure/table,get_step(src,direction))
|
||||||
T.update_icon()
|
T.update_icon()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
update_icon()
|
/obj/structure/table/update_icon()
|
||||||
spawn(2) //So it properly updates when deleting
|
spawn(2) //So it properly updates when deleting
|
||||||
var/dir_sum = 0
|
var/dir_sum = 0
|
||||||
for(var/direction in cardinal)
|
for(var/direction in list(1,2,4,8,5,6,9,10))
|
||||||
var/skip_sum = 0
|
var/skip_sum = 0
|
||||||
for(var/obj/structure/window/W in src.loc)
|
for(var/obj/structure/window/W in src.loc)
|
||||||
if(W.dir == direction) //So smooth tables don't go smooth through windows
|
if(W.dir == direction) //So smooth tables don't go smooth through windows
|
||||||
@@ -666,54 +666,102 @@
|
|||||||
inv_direction = 8
|
inv_direction = 8
|
||||||
if(8)
|
if(8)
|
||||||
inv_direction = 4
|
inv_direction = 4
|
||||||
|
if(5)
|
||||||
|
inv_direction = 10
|
||||||
|
if(6)
|
||||||
|
inv_direction = 9
|
||||||
|
if(9)
|
||||||
|
inv_direction = 6
|
||||||
|
if(10)
|
||||||
|
inv_direction = 5
|
||||||
for(var/obj/structure/window/W in get_step(src,direction))
|
for(var/obj/structure/window/W in get_step(src,direction))
|
||||||
if(W.dir == inv_direction) //So smooth tables don't go smooth through windows when the window is on the other table's tile
|
if(W.dir == inv_direction) //So smooth tables don't go smooth through windows when the window is on the other table's tile
|
||||||
skip_sum = 1
|
skip_sum = 1
|
||||||
continue
|
continue
|
||||||
if(!skip_sum) //means there is a window between the two tiles in this direction
|
if(!skip_sum) //means there is a window between the two tiles in this direction
|
||||||
if(locate(/obj/structure/table,get_step(src,direction)))
|
if(locate(/obj/structure/table,get_step(src,direction)))
|
||||||
|
if(direction <5)
|
||||||
dir_sum += direction
|
dir_sum += direction
|
||||||
|
else
|
||||||
//dir_sum:
|
if(direction == 5) //This permits the use of all table directions. (Set up so clockwise around the central table is a higher value, from north)
|
||||||
// 1,2,4,8 = endtable
|
dir_sum += 16
|
||||||
// 3,12 = streight 1 tile thick table
|
if(direction == 6)
|
||||||
// 5,6,9,10 = corner, if it finds a table in get_step(src,dir_sum) then it's a full corner table, else it's a 1 tile chick corner table
|
dir_sum += 32
|
||||||
// 7,11,13,14 = three way intersection = full side table piece (north ,south, east or west)
|
if(direction == 8) //Aherp and Aderp. Jezes I am stupid. -- SkyMarshal
|
||||||
// 15 = four way intersection = center (aka middle) table piece
|
dir_sum += 8
|
||||||
//
|
if(direction == 10)
|
||||||
//table_type:
|
dir_sum += 64
|
||||||
// 0 = stand-alone table
|
if(direction == 9)
|
||||||
// 1 = end table (1 tile thick, 1 connection)
|
dir_sum += 128
|
||||||
// 2 = 1 tile thick table (1 tile thick, 2 connections)
|
|
||||||
// 3 = full table (full, 3 connections)
|
|
||||||
// 4 = middle table (full, 4 connections)
|
|
||||||
|
|
||||||
var/table_type = 0 //stand_alone table
|
var/table_type = 0 //stand_alone table
|
||||||
if(dir_sum in cardinal)
|
if(dir_sum%16 in cardinal)
|
||||||
table_type = 1 //endtable
|
table_type = 1 //endtable
|
||||||
if(dir_sum in list(3,12))
|
dir_sum %= 16
|
||||||
|
if(dir_sum%16 in list(3,12))
|
||||||
table_type = 2 //1 tile thick, streight table
|
table_type = 2 //1 tile thick, streight table
|
||||||
if(dir_sum == 3) //3 doesn't exist as a dir
|
if(dir_sum%16 == 3) //3 doesn't exist as a dir
|
||||||
dir_sum = 2
|
dir_sum = 2
|
||||||
if(dir_sum == 12) //12 doesn't exist as a dir.
|
if(dir_sum%16 == 12) //12 doesn't exist as a dir.
|
||||||
dir_sum = 4
|
dir_sum = 4
|
||||||
if(dir_sum in list(5,6,9,10))
|
if(dir_sum%16 in list(5,6,9,10))
|
||||||
if(locate(/obj/structure/table,get_step(src.loc,dir_sum)))
|
if(locate(/obj/structure/table,get_step(src.loc,dir_sum%16)))
|
||||||
table_type = 3 //full table (not the 1 tile thick one, but one of the 'tabledir' tables)
|
table_type = 3 //full table (not the 1 tile thick one, but one of the 'tabledir' tables)
|
||||||
else
|
else
|
||||||
table_type = 2 //1 tile thick, corner table (treated the same as streight tables in code later on)
|
table_type = 2 //1 tile thick, corner table (treated the same as streight tables in code later on)
|
||||||
if(dir_sum in list(13,14,7,11)) //Three-way intersection
|
dir_sum %= 16
|
||||||
table_type = 3 //full table as three-way intersections are not sprited, would require 64 sprites to handle all combinations
|
if(dir_sum%16 in list(13,14,7,11)) //Three-way intersection
|
||||||
switch(dir_sum)
|
table_type = 5 //full table as three-way intersections are not sprited, would require 64 sprites to handle all combinations. TOO BAD -- SkyMarshal
|
||||||
|
switch(dir_sum%16) //Begin computation of the special type tables. --SkyMarshal
|
||||||
if(7)
|
if(7)
|
||||||
|
if(dir_sum == 23)
|
||||||
|
table_type = 6
|
||||||
|
dir_sum = 8
|
||||||
|
else if(dir_sum == 39)
|
||||||
|
dir_sum = 4
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 55 || dir_sum == 119 || dir_sum == 247 || dir_sum == 183)
|
||||||
|
dir_sum = 4
|
||||||
|
table_type = 3
|
||||||
|
else
|
||||||
dir_sum = 4
|
dir_sum = 4
|
||||||
if(11)
|
if(11)
|
||||||
|
if(dir_sum == 75)
|
||||||
|
dir_sum = 5
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 139)
|
||||||
|
dir_sum = 9
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 203 || dir_sum == 219 || dir_sum == 251 || dir_sum == 235)
|
||||||
|
dir_sum = 8
|
||||||
|
table_type = 3
|
||||||
|
else
|
||||||
dir_sum = 8
|
dir_sum = 8
|
||||||
if(13)
|
if(13)
|
||||||
|
if(dir_sum == 29)
|
||||||
|
dir_sum = 10
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 141)
|
||||||
|
dir_sum = 6
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 189 || dir_sum == 221 || dir_sum == 253 || dir_sum == 157)
|
||||||
|
dir_sum = 1
|
||||||
|
table_type = 3
|
||||||
|
else
|
||||||
dir_sum = 1
|
dir_sum = 1
|
||||||
if(14)
|
if(14)
|
||||||
|
if(dir_sum == 46)
|
||||||
|
dir_sum = 1
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 78)
|
||||||
|
dir_sum = 2
|
||||||
|
table_type = 6
|
||||||
|
else if(dir_sum == 110 || dir_sum == 254 || dir_sum == 238 || dir_sum == 126)
|
||||||
|
dir_sum = 2
|
||||||
|
table_type = 3
|
||||||
|
else
|
||||||
dir_sum = 2 //These translate the dir_sum to the correct dirs from the 'tabledir' icon_state.
|
dir_sum = 2 //These translate the dir_sum to the correct dirs from the 'tabledir' icon_state.
|
||||||
if(dir_sum == 15)
|
if(dir_sum%16 == 15)
|
||||||
table_type = 4 //4-way intersection, the 'middle' table sprites will be used.
|
table_type = 4 //4-way intersection, the 'middle' table sprites will be used.
|
||||||
|
|
||||||
if(istype(src,/obj/structure/table/reinforced))
|
if(istype(src,/obj/structure/table/reinforced))
|
||||||
@@ -728,6 +776,10 @@
|
|||||||
icon_state = "reinf_tabledir"
|
icon_state = "reinf_tabledir"
|
||||||
if(4)
|
if(4)
|
||||||
icon_state = "reinf_middle"
|
icon_state = "reinf_middle"
|
||||||
|
if(5)
|
||||||
|
icon_state = "reinf_tabledir2"
|
||||||
|
if(6)
|
||||||
|
icon_state = "reinf_tabledir3"
|
||||||
else if(istype(src,/obj/structure/table/woodentable))
|
else if(istype(src,/obj/structure/table/woodentable))
|
||||||
switch(table_type)
|
switch(table_type)
|
||||||
if(0)
|
if(0)
|
||||||
@@ -740,6 +792,10 @@
|
|||||||
icon_state = "wood_tabledir"
|
icon_state = "wood_tabledir"
|
||||||
if(4)
|
if(4)
|
||||||
icon_state = "wood_middle"
|
icon_state = "wood_middle"
|
||||||
|
if(5)
|
||||||
|
icon_state = "wood_tabledir2"
|
||||||
|
if(6)
|
||||||
|
icon_state = "wood_tabledir3"
|
||||||
else
|
else
|
||||||
switch(table_type)
|
switch(table_type)
|
||||||
if(0)
|
if(0)
|
||||||
@@ -752,6 +808,10 @@
|
|||||||
icon_state = "tabledir"
|
icon_state = "tabledir"
|
||||||
if(4)
|
if(4)
|
||||||
icon_state = "table_middle"
|
icon_state = "table_middle"
|
||||||
|
if(5)
|
||||||
|
icon_state = "tabledir2"
|
||||||
|
if(6)
|
||||||
|
icon_state = "tabledir3"
|
||||||
if (dir_sum in list(1,2,4,8,5,6,9,10))
|
if (dir_sum in list(1,2,4,8,5,6,9,10))
|
||||||
dir = dir_sum
|
dir = dir_sum
|
||||||
else
|
else
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 92 KiB |
Reference in New Issue
Block a user