construction-mod/scripts/skywrite.cs
2025-06-05 12:37:16 +02:00

607 lines
18 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//A nice collection of characters.
//
//Normal
//"a b c d e f g h i j k l m n o p q r s t u v w x y z"
//a
$SW::Info["a"] = "5 0.85"; //Pieces,Space
$SW::Sizes["a",0] = "0.3 0.50 0.55 0.50 0.3 0.60";
$SW::Sizes["a",1] = "0.55 0.2 0.65 0.2 0.55 0.55";
$SW::Sizes["a",2] = "0.3 0.1 0.75 0.1 0.3 0.2";
$SW::Sizes["a",3] = "0.2 0.15 0.3 0.15 0.2 0.35";
$SW::Sizes["a",4] = "0.3 0.3 0.55 0.3 0.3 0.4";
//b
$SW::Info["b"] = "4 0.7"; //Pieces,Space
$SW::Sizes["b",0] = "0.2 0.1 0.3 0.1 0.2 0.8";
$SW::Sizes["b",1] = "0.3 0.40 0.60 0.40 0.3 0.50";
$SW::Sizes["b",2] = "0.3 0.10 0.60 0.10 0.3 0.20";
$SW::Sizes["b",3] = "0.60 0.15 0.70 0.15 0.60 0.45";
//c
$SW::Info["c"] = "3 0.75"; //Pieces,Space
$SW::Sizes["c",0] = "0.2 0.15 0.3 0.15 0.2 0.50";
$SW::Sizes["c",1] = "0.3 0.45 0.65 0.45 0.3 0.55";
$SW::Sizes["c",2] = "0.3 0.10 0.65 0.10 0.3 0.20";
//d
$SW::Info["d"] = "4 0.8"; //Pieces,Space
$SW::Sizes["d",0] = "0.2 0.15 0.3 0.15 0.2 0.45";
$SW::Sizes["d",1] = "0.3 0.40 0.60 0.40 0.3 0.50";
$SW::Sizes["d",2] = "0.3 0.10 0.60 0.10 0.3 0.20";
$SW::Sizes["d",3] = "0.60 0.1 0.70 0.1 0.60 0.8";
//e
$SW::Info["e"] = "5 0.75"; //Pieces,Space
$SW::Sizes["e",0] = "0.2 0.15 0.3 0.15 0.2 0.50";
$SW::Sizes["e",1] = "0.3 0.45 0.55 0.45 0.3 0.55";
$SW::Sizes["e",2] = "0.3 0.10 0.65 0.10 0.3 0.20";
$SW::Sizes["e",3] = "0.55 0.35 0.65 0.35 0.55 0.50";
$SW::Sizes["e",4] = "0.3 0.25 0.65 0.25 0.3 0.35";
//f
$SW::Info["f"] = "3 0.8"; //Pieces,Space
$SW::Sizes["f",0] = "0.30 0.5 0.70 0.5 0.30 0.60";
$SW::Sizes["f",1] = "0.45 0.1 0.55 0.1 0.45 0.7";
$SW::Sizes["f",2] = "0.50 0.65 0.70 0.65 0.50 0.75";
//g
$SW::Info["g"] = "5 0.75"; //Pieces,Space
$SW::Sizes["g",0] = "0.3 0.50 0.55 0.50 0.3 0.60";
$SW::Sizes["g",1] = "0.55 0.05 0.65 0.05 0.55 0.60";
$SW::Sizes["g",2] = "0.3 0.0 0.60 0.0 0.3 0.1";
$SW::Sizes["g",3] = "0.25 0.30 0.35 0.30 0.25 0.55";
$SW::Sizes["g",4] = "0.3 0.25 0.55 0.25 0.3 0.35";
//h
$SW::Info["h"] = "3 0.7"; //Pieces,Space
$SW::Sizes["h",0] = "0.2 0.1 0.3 0.1 0.2 0.8";
$SW::Sizes["h",1] = "0.3 0.40 0.60 0.40 0.3 0.50";
$SW::Sizes["h",2] = "0.55 0.1 0.65 0.1 0.55 0.45";
//i
$SW::Info["i"] = "2 0.35"; //Pieces,Space
$SW::Sizes["i",0] = "0.15 0.1 0.25 0.1 0.15 0.5";
$SW::Sizes["i",1] = "0.15 0.6 0.25 0.6 0.15 0.7";
//j
$SW::Info["j"] = "3 0.45"; //Pieces,Space
$SW::Sizes["j",0] = "0.25 0.05 0.35 0.05 0.25 0.6";
$SW::Sizes["j",1] = "0.25 0.7 0.35 0.7 0.25 0.8";
$SW::Sizes["j",2] = "0.10 0.0 0.30 0.0 0.10 0.1";
//k
$SW::Info["k"] = "3 0.6"; //Pieces,Space
$SW::Sizes["k",0] = "0.2 0.1 0.3 0.1 0.2 0.7";
$SW::Sizes["k",1] = "0.3 0.25 0.50 0.45 0.23 0.32";
$SW::Sizes["k",2] = "0.3 0.25 0.45 0.1 0.37 0.32";
//l
$SW::Info["l"] = "1 0.4"; //Pieces,Space
$SW::Sizes["l",0] = "0.2 0.1 0.3 0.1 0.2 0.8";
//m
$SW::Info["m"] = "5 0.9"; //Pieces,Space
$SW::Sizes["m",0] = "0.2 0.1 0.3 0.1 0.2 0.55";
$SW::Sizes["m",1] = "0.3 0.40 0.50 0.40 0.3 0.50";
$SW::Sizes["m",2] = "0.45 0.1 0.55 0.1 0.45 0.45";
$SW::Sizes["m",3] = "0.55 0.40 0.75 0.40 0.55 0.50";
$SW::Sizes["m",4] = "0.70 0.1 0.80 0.1 0.70 0.45";
//n
$SW::Info["n"] = "3 0.65"; //Pieces,Space
$SW::Sizes["n",0] = "0.2 0.1 0.3 0.1 0.2 0.55";
$SW::Sizes["n",1] = "0.3 0.40 0.50 0.40 0.3 0.50";
$SW::Sizes["n",2] = "0.45 0.1 0.55 0.1 0.45 0.45";
//o
$SW::Info["o"] = "4 0.65"; //Pieces,Space
$SW::Sizes["o",0] = "0.2 0.15 0.3 0.15 0.2 0.45";
$SW::Sizes["o",1] = "0.25 0.40 0.50 0.40 0.3 0.50";
$SW::Sizes["o",2] = "0.45 0.15 0.55 0.15 0.45 0.45";
$SW::Sizes["o",3] = "0.25 0.1 0.50 0.1 0.25 0.2";
//p
$SW::Info["p"] = "4 0.8"; //Pieces,Space
$SW::Sizes["p",0] = "0.3 0.50 0.55 0.50 0.3 0.60";
$SW::Sizes["p",1] = "0.5 0.30 0.6 0.30 0.5 0.55";
$SW::Sizes["p",2] = "0.2 0.0 0.3 0.00 0.2 0.60";
$SW::Sizes["p",3] = "0.3 0.25 0.55 0.25 0.3 0.35";
//q
$SW::Info["q"] = "4 0.75"; //Pieces,Space
$SW::Sizes["q",0] = "0.3 0.50 0.55 0.50 0.3 0.60";
$SW::Sizes["q",1] = "0.55 0.0 0.65 0.0 0.55 0.60";
$SW::Sizes["q",2] = "0.25 0.30 0.35 0.30 0.25 0.55";
$SW::Sizes["q",3] = "0.3 0.25 0.55 0.25 0.3 0.35";
//r
$SW::Info["r"] = "4 0.6"; //Pieces,Space
$SW::Sizes["r",0] = "0.2 0.1 0.3 0.1 0.2 0.55";
$SW::Sizes["r",1] = "0.3 0.38 0.35 0.38 0.3 0.48";
$SW::Sizes["r",2] = "0.3 0.40 0.50 0.40 0.3 0.50";
$SW::Sizes["r",3] = "0.45 0.38 0.50 0.38 0.45 0.48";
//s
$SW::Info["s"] = "7 0.6"; //Pieces,Space
$SW::Sizes["s",0] = "0.2 0.40 0.3 0.40 0.2 0.50";
$SW::Sizes["s",1] = "0.25 0.45 0.45 0.45 0.3 0.55";
$SW::Sizes["s",2] = "0.2 0.40 0.40 0.2 0.25 0.50";
$SW::Sizes["s",3] = "0.40 0.15 0.5 0.15 0.4 0.25";
$SW::Sizes["s",4] = "0.25 0.1 0.45 0.1 0.2 0.2";
$SW::Sizes["s",5] = "0.40 0.40 0.5 0.40 0.4 0.5";
$SW::Sizes["s",6] = "0.2 0.15 0.3 0.15 0.2 0.25";
//t
$SW::Info["t"] = "3 0.75"; //Pieces,Space
$SW::Sizes["t",0] = "0.35 0.5 0.65 0.5 0.35 0.60";
$SW::Sizes["t",1] = "0.45 0.1 0.55 0.1 0.45 0.7";
$SW::Sizes["t",2] = "0.55 0.1 0.65 0.1 0.55 0.2";
//u
$SW::Info["u"] = "3 0.60"; //Pieces,Space
$SW::Sizes["u",0] = "0.2 0.1 0.3 0.1 0.2 0.50";
$SW::Sizes["u",1] = "0.25 0.05 0.50 0.05 0.3 0.15";
$SW::Sizes["u",2] = "0.45 0.1 0.55 0.1 0.45 0.50";
//v
$SW::Info["v"] = "2 0.60"; //Pieces,Space
$SW::Sizes["v",0] = "0.1 0.5 0.3 0.1 0.15 0.55";
$SW::Sizes["v",1] = "0.3 0.1 0.5 0.5 0.25 0.15";
//w
$SW::Info["w"] = "4 0.9"; //Pieces,Space
$SW::Sizes["w",0] = "0.1 0.5 0.3 0.1 0.15 0.55";
$SW::Sizes["w",1] = "0.3 0.1 0.5 0.5 0.25 0.15";
$SW::Sizes["w",2] = "0.4 0.5 0.6 0.1 0.45 0.55";
$SW::Sizes["w",3] = "0.6 0.1 0.8 0.5 0.55 0.15";
//x
$SW::Info["x"] = "2 0.5"; //Pieces,Space
$SW::Sizes["x",0] = "0.1 0.4 0.38 0.1 0.15 0.45";
$SW::Sizes["x",1] = "0.12 0.1 0.4 0.4 0.07 0.15";
//y
$SW::Info["y"] = "3 0.60"; //Pieces,Space
$SW::Sizes["y",0] = "0.1 0.5 0.25 0.25 0.15 0.55";
$SW::Sizes["y",1] = "0.3 0.15 0.5 0.5 0.25 0.2";
$SW::Sizes["y",2] = "0.15 0.10 0.3 0.1 0.2 0.18";
//z
$SW::Info["z"] = "3 0.6"; //Pieces,Space
$SW::Sizes["z",0] = "0.1 0.40 0.4 0.40 0.1 0.50";
$SW::Sizes["z",1] = "0.15 0.1 0.4 0.4 0.1 0.15";
$SW::Sizes["z",2] = "0.1 0.1 0.4 0.1 0.1 0.2";
//Numbers
//"1 2 3 4 5 6 7 8 9 0"
//1
$SW::Info["1"] = "3 0.65"; //Pieces,Space
$SW::Sizes["1",0] = "0.3 0.1 0.4 0.1 0.3 0.8";
$SW::Sizes["1",1] = "0.2 0.6 0.4 0.75 0.17 0.67";
$SW::Sizes["1",2] = "0.15 0.0 0.55 0.0 0.1 0.1";
//2
$SW::Info["2"] = "4 0.65"; //Pieces,Space
$SW::Sizes["2",0] = "0.1 0.7 0.5 0.7 0.1 0.8";
$SW::Sizes["2",1] = "0.45 0.5 0.55 0.5 0.45 0.75";
$SW::Sizes["2",2] = "0.15 0.0 0.55 0.5 0.08 0.07";
$SW::Sizes["2",3] = "0.07 0.0 0.55 0.0 0.07 0.1";
//3
$SW::Info["3"] = "5 0.65"; //Pieces,Space
$SW::Sizes["3",0] = "0.1 0.7 0.5 0.7 0.1 0.8";
$SW::Sizes["3",1] = "0.45 0.45 0.55 0.45 0.45 0.75";
$SW::Sizes["3",2] = "0.1 0.35 0.5 0.35 0.1 0.45";
$SW::Sizes["3",3] = "0.45 0.05 0.55 0.05 0.45 0.35";
$SW::Sizes["3",4] = "0.1 0.0 0.5 0.0 0.1 0.1";
//4
$SW::Info["4"] = "3 0.75"; //Pieces,Space
$SW::Sizes["4",0] = "0.4 0.0 0.5 0.0 0.4 0.8";
$SW::Sizes["4",1] = "0.1 0.25 0.5 0.75 0.17 0.32";
$SW::Sizes["4",2] = "0.1 0.25 0.65 0.25 0.1 0.35";
//5
$SW::Info["5"] = "5 0.7"; //Pieces,Space
$SW::Sizes["5",0] = "0.1 0.35 0.2 0.35 0.1 0.8";
$SW::Sizes["5",1] = "0.2 0.35 0.55 0.35 0.2 0.45";
$SW::Sizes["5",2] = "0.1 0.0 0.55 0.00 0.1 0.10";
$SW::Sizes["5",3] = "0.5 0.05 0.60 0.05 0.50 0.40";
$SW::Sizes["5",4] = "0.2 0.70 0.60 0.70 0.2 0.8";
//6
$SW::Info["6"] = "6 0.7"; //Pieces,Space
$SW::Sizes["6",0] = "0.1 0.05 0.2 0.05 0.1 0.7";
$SW::Sizes["6",1] = "0.2 0.35 0.55 0.35 0.2 0.45";
$SW::Sizes["6",2] = "0.15 0.0 0.55 0.00 0.15 0.10";
$SW::Sizes["6",3] = "0.50 0.05 0.60 0.05 0.50 0.40";
$SW::Sizes["6",4] = "0.15 0.65 0.60 0.70 0.08 0.72";
//7
$SW::Info["7"] = "2 0.6"; //Pieces,Space
$SW::Sizes["7",0] = "0.1 0.7 0.5 0.7 0.1 0.8";
$SW::Sizes["7",1] = "0.2 0.0 0.5 0.7 0.13 0.07";
//8
$SW::Info["8"] = "7 0.7"; //Pieces,Space
$SW::Sizes["8",0] = "0.1 0.05 0.2 0.05 0.1 0.43";
$SW::Sizes["8",1] = "0.1 0.45 0.58 0.35 0.17 0.52";
$SW::Sizes["8",2] = "0.15 0.00 0.55 0.00 0.15 0.15";
$SW::Sizes["8",3] = "0.50 0.05 0.60 0.05 0.50 0.45";
$SW::Sizes["8",4] = "0.15 0.70 0.55 0.70 0.15 0.80";
$SW::Sizes["8",5] = "0.1 0.45 0.2 0.45 0.1 0.75";
$SW::Sizes["8",6] = "0.50 0.47 0.60 0.47 0.50 0.75";
//9
$SW::Info["9"] = "6 0.7"; //Pieces,Space
$SW::Sizes["9",0] = "0.1 0.45 0.58 0.35 0.17 0.52";
$SW::Sizes["9",1] = "0.15 0.00 0.55 0.00 0.15 0.15";
$SW::Sizes["9",2] = "0.50 0.05 0.60 0.05 0.50 0.45";
$SW::Sizes["9",3] = "0.15 0.70 0.55 0.70 0.15 0.80";
$SW::Sizes["9",4] = "0.1 0.45 0.2 0.45 0.1 0.75";
$SW::Sizes["9",5] = "0.50 0.47 0.60 0.47 0.50 0.75";
//0
$SW::Info["0"] = "4 0.7"; //Pieces,Space
$SW::Sizes["0",0] = "0.1 0.05 0.2 0.05 0.1 0.75";
$SW::Sizes["0",1] = "0.15 0.00 0.55 0.00 0.15 0.15";
$SW::Sizes["0",2] = "0.50 0.05 0.60 0.05 0.50 0.75";
$SW::Sizes["0",3] = "0.15 0.70 0.55 0.70 0.15 0.80";
//Tribes2 String Chars
// " ' \
//"
$SW::Info["\""] = "2 0.40"; //Pieces,Space
$SW::Sizes["\"",0] = "0.15 0.65 0.20 0.65 0.15 0.8";
$SW::Sizes["\"",1] = "0.25 0.65 0.30 0.65 0.25 0.8";
//'
$SW::Info["\'"] = "1 0.30"; //Pieces,Space
$SW::Sizes["\'",0] = "0.15 0.65 0.20 0.65 0.15 0.8";
// \
$SW::Info["\\"] = "1 0.70"; //Pieces,Space
$SW::Sizes["\\",0] = "0.1 0.75 0.6 0.1 0.15 0.8";
//Skywrite string Chars
//+ /
$SW::Info["/+"] = "2 0.70"; //Pieces,Space
$SW::Sizes["/+",0] = "0.1 0.35 0.6 0.35 0.1 0.45";
$SW::Sizes["/+",1] = "0.3 0.1 0.4 0.1 0.3 0.7";
// /
$SW::Info["//"] = "1 0.70"; //Pieces,Space
$SW::Sizes["//",0] = "0.1 0.1 0.6 0.8 0.05 0.15";
//Sentance builders
//. , : ; ! ?
//.
$SW::Info["."] = "1 0.30"; //Pieces,Space
$SW::Sizes[".",0] = "0.1 0.1 0.20 0.1 0.1 0.2";
//,
$SW::Info[","] = "2 0.30"; //Pieces,Space
$SW::Sizes[",",0] = "0.1 0.1 0.20 0.1 0.1 0.2";
$SW::Sizes[",",1] = "0.1 0.0 0.2 0.1 0.05 0.05";
//:
$SW::Info[":"] = "2 0.30"; //Pieces,Space
$SW::Sizes[":",0] = "0.1 0.2 0.20 0.2 0.1 0.3";
$SW::Sizes[":",1] = "0.1 0.5 0.20 0.5 0.1 0.6";
//;
$SW::Info[";"] = "3 0.30"; //Pieces,Space
$SW::Sizes[";",0] = "0.1 0.2 0.20 0.2 0.1 0.3";
$SW::Sizes[";",1] = "0.1 0.1 0.2 0.2 0.05 0.15";
$SW::Sizes[";",2] = "0.1 0.5 0.20 0.5 0.1 0.6";
//!
$SW::Info["!"] = "2 0.35"; //Pieces,Space
$SW::Sizes["!",0] = "0.15 0.2 0.25 0.2 0.15 0.8";
$SW::Sizes["!",1] = "0.15 0.0 0.25 0.0 0.15 0.1";
//?
$SW::Info["?"] = "6 0.65"; //Pieces,Space
$SW::Sizes["?",0] = "0.2 0.7 0.5 0.7 0.2 0.8";
$SW::Sizes["?",1] = "0.15 0.65 0.25 0.65 0.15 0.75";
$SW::Sizes["?",2] = "0.45 0.5 0.55 0.5 0.45 0.75";
$SW::Sizes["?",3] = "0.35 0.25 0.55 0.5 0.27 0.33";
$SW::Sizes["?",4] = "0.25 0.2 0.35 0.2 0.25 0.3";
$SW::Sizes["?",5] = "0.25 0.0 0.35 0.0 0.25 0.1";
//#
$SW::Info["#"] = "4 0.55"; //Pieces,Space
$SW::Sizes["#",0] = "0.15 0.15 0.20 0.15 0.15 0.7";
$SW::Sizes["#",1] = "0.25 0.15 0.30 0.15 0.25 0.7";
$SW::Sizes["#",2] = "0.05 0.30 0.40 0.30 0.05 0.35";
$SW::Sizes["#",3] = "0.05 0.50 0.40 0.50 0.05 0.55";
//$
$SW::Info["$"] = "6 0.7"; //Pieces,Space
$SW::Sizes["$",0] = "0.2 0.65 0.55 0.65 0.2 0.75";
$SW::Sizes["$",1] = "0.15 0.40 0.25 0.40 0.15 0.7";
$SW::Sizes["$",2] = "0.2 0.40 0.55 0.30 0.27 0.47";
$SW::Sizes["$",3] = "0.5 0.10 0.60 0.1 0.50 0.40";
$SW::Sizes["$",4] = "0.2 0.05 0.55 0.05 0.25 0.15";
$SW::Sizes["$",5] = "0.325 0.0 0.425 0.0 0.325 0.80";
//%
$SW::Info["%"] = "3 0.6"; //Pieces,Space
$SW::Sizes["%",0] = "0.4 0.1 0.5 0.0 0.5 0.2";
$SW::Sizes["%",1] = "0.1 0.0 0.6 0.8 0.03 0.07";
$SW::Sizes["%",2] = "0.0 0.75 0.1 0.65 0.1 0.85";
//&
$SW::Info["&"] = "6 0.7"; //Pieces,Space
$SW::Sizes["&",0] = "0.5 0.0 0.6 0.5 0.48 0.05";
$SW::Sizes["&",1] = "0.1 0.0 0.5 0.0 0.1 0.1";
$SW::Sizes["&",2] = "0.05 0.05 0.15 0.05 0.05 0.25";
$SW::Sizes["&",3] = "0.1 0.20 0.55 0.65 0.05 0.25";
$SW::Sizes["&",4] = "0.45 0.75 0.55 0.65 0.50 0.80";
$SW::Sizes["&",5] = "0.25 0.55 0.60 0.60 0.20 0.70";
//Hooks
//( ) [ ] { } < >
//(
$SW::Info["("] = "3 0.45"; //Pieces,Space
$SW::Sizes["(",0] = "0.155 0.45 0.4 0.75 0.105 0.50";
$SW::Sizes["(",1] = "0.1 0.3 0.2 0.3 0.1 0.5";
$SW::Sizes["(",2] = "0.1 0.3 0.35 0.0 0.15 0.35";
//)
$SW::Info[")"] = "3 0.4"; //Pieces,Space
$SW::Sizes[")",0] = "0.0 0.75 0.24 0.46 0.05 0.8";
$SW::Sizes[")",1] = "0.2 0.3 0.3 0.3 0.2 0.5";
$SW::Sizes[")",2] = "0.05 0.0 0.3 0.3 0.0 0.05";
//[
$SW::Info["["] = "3 0.4"; //Pieces,Space
$SW::Sizes["[",0] = "0.0 0.7 0.3 0.7 0.0 0.8";
$SW::Sizes["[",1] = "0.0 0.1 0.1 0.1 0.0 0.7";
$SW::Sizes["[",2] = "0.0 0.0 0.3 0.0 0.0 0.1";
//]
$SW::Info["]"] = "3 0.4"; //Pieces,Space
$SW::Sizes["]",0] = "0.0 0.7 0.3 0.7 0.0 0.8";
$SW::Sizes["]",1] = "0.2 0.1 0.3 0.1 0.2 0.7";
$SW::Sizes["]",2] = "0.0 0.0 0.3 0.0 0.0 0.1";
//{
$SW::Info["{"] = "4 0.4"; //Pieces,Space
$SW::Sizes["{",0] = "0.15 0.7 0.4 0.7 0.15 0.8";
$SW::Sizes["{",1] = "0.1 0.1 0.2 0.1 0.1 0.7";
$SW::Sizes["{",2] = "0.15 0.0 0.4 0.0 0.15 0.1";
$SW::Sizes["{",3] = "0.0 0.35 0.1 0.35 0.0 0.45";
//}
$SW::Info["}"] = "4 0.4"; //Pieces,Space
$SW::Sizes["}",0] = "0.0 0.7 0.25 0.7 0.0 0.8";
$SW::Sizes["}",1] = "0.2 0.1 0.3 0.1 0.2 0.7";
$SW::Sizes["}",2] = "0.0 0.0 0.25 0.0 0.0 0.1";
$SW::Sizes["}",3] = "0.3 0.35 0.4 0.35 0.3 0.45";
//<
$SW::Info["<"] = "2 0.45"; //Pieces,Space
$SW::Sizes["<",0] = "0.155 0.35 0.4 0.65 0.105 0.40";
$SW::Sizes["<",1] = "0.1 0.4 0.35 0.1 0.15 0.45";
//>
$SW::Info[">"] = "2 0.6"; //Pieces,Space
$SW::Sizes[">",0] = "0.0 0.65 0.24 0.36 0.05 0.7";
$SW::Sizes[">",1] = "0.05 0.1 0.3 0.4 0.0 0.15";
//Lines
// = _ - |
//=
$SW::Info["="] = "2 0.45"; //Pieces,Space
$SW::Sizes["=",0] = "0.05 0.25 0.40 0.25 0.05 0.35";
$SW::Sizes["=",1] = "0.05 0.50 0.40 0.50 0.05 0.60";
//-
$SW::Info["-"] = "1 0.45"; //Pieces,Space
$SW::Sizes["-",0] = "0.05 0.35 0.40 0.35 0.05 0.45";
//_
$SW::Info["_"] = "1 0.45"; //Pieces,Space
$SW::Sizes["_",0] = "0.05 0.05 0.40 0.05 0.05 0.15";
//|
$SW::Info["|"] = "1 0.40"; //Pieces,Space
$SW::Sizes["|",0] = "0.15 0.0 0.25 0.0 0.15 0.8";
//Space
$SW::Info["sp"] = "0 0.5"; //Pieces,Space
//Capital Letters
//T
$SW::Info["+t"] = "2 1"; //Pieces,Space
$SW::Sizes["+t",0] = "0 0.8 1 0.8 0 1";
$SW::Sizes["+t",1] = "0.4 0 0.6 0 0.4 0.8";
$SW::Thickness = 0.1;
function GameConnection::skyWrite(%cl,%word,%dist,%scale,%center,%upright,%angle,%mirror) {
if (%word $= "")
return;
if (%dist $= "" || %dist == 0)
%dist = 50;
if (%scale $= "" || %scale == 0)
%scale = 5;
%word = SW_goodWord(%word);
%obj = %cl.player;
%pos = %obj.getEyepoint();
%dir = %obj.getEyeVector();
%location = vectorAdd(%pos,vectorScale(%dir,%dist));
if (%upright)
%dir = vectorNormalize(getWords(%dir,0,1));
if (%mirror)
%dir = vectorScale(%dir,-1);
SW_word(%word,%location,%dir,%scale,%center,%cl,%angle);
}
function SW_word(%word,%pos,%nrm,%scale,%center,%cl,%angle) {
%cl.lastword++;
%z = vectorNormalize(%nrm);
%tx = vectorCross(%nrm,"0 0 1");
%up = vectorAdd(vectorScale("0 0 1",mCos(mDegToRad(%angle))),vectorScale(%tx,mSin(mDegToRad(%angle))));
%x = vectorCross(%nrm,%up);
if (%center) {
for (%td = 0; %td < getWordCount(%word);%td++) {
%letter = getWord(%word,%td);
%space = %space + getWord($SW::Info[%letter],1) * %scale;
}
%space = %space * -0.5;
%pos = vectorAdd(%pos,vectorScale(%up,-0.5 * %scale));
}
for (%td = 0; %td < getWordCount(%word);%td++) {
%letter = getWord(%word,%td);
SW_letter(%letter,vectorAdd(%pos,vectorScale(%x,%space)),%nrm,%scale,%cl,%angle);
%space = %space + getWord($SW::Info[%letter],1) * %scale;
}
}
function SW_letter(%letter,%pos,%nrm,%scale,%cl,%angle) {
%z = vectorNormalize(%nrm);
%tx = vectorCross(%nrm,"0 0 1");
%up = vectorAdd(vectorScale("0 0 1",mCos(mDegToRad(%angle))),vectorScale(%tx,mSin(mDegToRad(%angle))));
%x = vectorCross(%nrm,%up);
%y = vectorCross(%x,%nrm);
%matrix = %x SPC %y SPC %z;
%pieces = getWord($SW::Info[%letter],0);
for (%td = 0; %td < %pieces;%td++) {
%obj = SW_letterPart(%letter,%td,%pos,%matrix,%scale);
%obj.textGroup(%cl,%cl.lastword);
%obj.team = %cl.team;
%obj.needsFit = 1;
// commented out. Can easily remove writing with "remove orphaned pieces", even if client is no longer in game
// %obj.setOwner(0,%cl);
}
}
function SW_letterPart(%letter,%part,%pos,%matrix,%scale) {
%partInfo = $SW::Sizes[%letter,%part];
%p1 = SW_goodSquare(%partInfo);
%pos1 = vectorScale(matrixMult(getWords(%p1,0,1) SPC "0",%matrix),%scale);
%vecx1 = vectorScale(matrixMult(getWords(%p1,2,3) SPC "0",%matrix),%scale);
%vecy1 = vectorScale(matrixMult(getWords(%p1,4,5) SPC "0",%matrix),%scale);
%vecz1 = vectorScale(getWords(%matrix,6,8),%scale * $SW::Thickness);
%obj = SW_bar(vectorAdd(%pos,%pos1),%vecx1,%vecy1,%vecz1);
return %obj;
}
function SW_goodSquare(%p) {
%pos = getWords(%p,0,1);
%x = getWords(%p,2,3);
%y = getWords(%p,4,5);
return %pos SPC getWords(VectorSub(%x,%pos),0,1) SPC getWords(VectorSub(%y,%pos),0,1);
}
function SW_goodWord(%word) {
%id = 0;
while (%id < strLen(%word)) {
%letter = getSubStr(%word,%id,1);
if (%letter $= "" || %letter $= "/" || %letter $= "+") {
%letter = getSubStr(%word,%id,2);
%id++;
}
if (%letter $= " ")
%letter = "sp";
%id++;
if (%goodWord !$= "")
%goodWord = %goodWord SPC %letter;
else
%goodWord = %letter;
}
return %goodWord;
}
//Creates the actual beam
function SW_bar(%pos,%fo,%ri,%up) {
%size = vectorLen(%fo) SPC vectorLen(%ri) SPC vectorLen(%up);
%rot = fullRot(%up,%fo);
%obj = new StaticShape() {
dataBlock = DeployedSpine;
};
// %obj = new ForceFieldBare() {
// datablock = DeployedForceField1;
// };
%obj.setRealSize(%size);
%obj.setRotation(%rot);
%pos = microAdjust(%pos);
%obj.setEdge(%pos,"-1 1 -1");
return %obj;
}
///Grouping
function GameBase::textGroup(%obj,%cl,%word) {
%subGroup = %cl @ "/" @ %word;
%group = nameToID("MissionCleanup/textGroup/" @ %subgroup);
if (%group <= 0) {
%group = new SimGroup(%word);
addToClientTextGroup(%group,%cl);
}
%group.add(%obj);
}
function addToClientTextGroup(%obj,%cl) {
%group = nameToID("MissionCleanup/textGroup/"@ %cl);
if (%group <= 0) {
%group = new SimGroup(%cl);
addToTextGroup(%group);
}
%group.add(%obj);
}
function addToTextGroup(%obj) {
%group = nameToID("MissionCleanup/textGroup");
if (%group <= 0) {
%group = new SimGroup("textGroup");
MissionCleanup.add(%group);
}
%group.add(%obj);
}
function getLatestGroup(%group) {
%count = %group.getCount();
return %group.getObject(%count - 1);
}
function GameConnection::removeLastWord(%cl) {
%group = nameToID("MissionCleanup/textGroup/" @ %cl);
%lastWord = getLatestGroup(%group);
if (isObject(%lastWord))
%lastWord.delete();
}
function GameConnection::removeWords(%cl) {
%group = nameToID("MissionCleanup/textGroup/" @ %cl);
if (isObject(%group))
%group.delete();
}