source: binary-improvements/7dtd-server-fixes/src/PetesUtils.cs@ 252

Last change on this file since 252 was 251, checked in by peter.souza, 10 years ago

Enemies (zombies and hostile animal entities) are now shown on the map as Hostiles and require permission level 'webapi.gethostilelocation' for web viewers to see.

Animals (non-hostile entities) are now shown on the map as Animals and require permission level 'webapi.getanimalslocation' for web viewers to see.

Permission level for 'webapi.viewallclaims' is now required for a viewer to see all claims, otherwise the permission level for 'webapi.getlandclaims' will only show viewer-owned claims. A viewer requires both 'webapi.getlandclaims' and 'webapi.viewallclaims' to be set for all claims to show (you can't just set 'webapi.viewallclaims').
https://7daystodie.com/forums/showthread.php?12837-Improvements-for-the-dedicated-server&p=317405&viewfull=1#post317405

Permission level for 'webapi.viewallplayers' is now required for a viewer to see all players, otherwise the permission level for 'webapi.getplayerslocation' will only show the player for the currently-authenticated viewer. A viewer requires both 'webapi.getplayerslocation' and 'webapi.viewallplayers' to be set for all players to show (you can't just set 'webapi.viewallplayers').
https://7daystodie.com/forums/showthread.php?12837-Improvements-for-the-dedicated-server&p=317405&viewfull=1#post317405

Banned players are now hidden from the web map.
https://7daystodie.com/forums/showthread.php?12837-Improvements-for-the-dedicated-server&p=320702&viewfull=1#post320702

Items using 'CustomIcon' and 'CustomIconTint' are now supported (although the exact tinting may not be perfectly the same as the game).
https://7daystodie.com/forums/showthread.php?12837-Improvements-for-the-dedicated-server&p=317117&viewfull=1#post317117
https://7daystodie.com/forums/showthread.php?12837-Improvements-for-the-dedicated-server&p=317679&viewfull=1#post317679

Map marker icons for players, hostiles, and animals have been updated.

File size: 5.6 KB
Line 
1using System;
2using System.IO;
3using System.Drawing;
4using System.Drawing.Imaging;
5
6namespace AllocsFixes
7{
8 public static class PetesUtils {
9 public static bool ValidText(object oText) {
10 if (oText == null)
11 return false;
12
13 if (oText.GetType () == typeof (string)) {
14 if (((string)oText).Trim ().Length < 1)
15 return false;
16
17 return true;
18 }
19
20 if (oText.ToString ().Trim ().Length < 1)
21 return false;
22
23 return true;
24 }
25
26 // Note: don't forget to dispose the image (which also disposes the underlying stream) when done with the image.
27 public static System.Drawing.Image GetImageFromBytes(byte[] bImage) {
28 if ((bImage == null) || (bImage.Length == 0))
29 return null;
30
31 try {
32 MemoryStream ms = new MemoryStream ();
33 ms.Write (bImage, 0, bImage.Length);
34 ms.Seek (0, SeekOrigin.Begin);
35 Image i = Image.FromStream (ms);
36 return i;
37 }
38 catch { }
39
40 return null;
41 }
42
43 /*
44 public static System.Drawing.Color BlendColors(System.Drawing.Color color, System.Drawing.Color backColor, double amount) {
45 byte r = (byte)((color.R * amount) + backColor.R * (1 - amount));
46 byte g = (byte)((color.G * amount) + backColor.G * (1 - amount));
47 byte b = (byte)((color.B * amount) + backColor.B * (1 - amount));
48 return System.Drawing.Color.FromArgb (r, g, b);
49 }
50 */
51
52 /*
53 public static System.Drawing.Color FromAhsb (int alpha, float hue, float saturation, float brightness)
54 {
55 if (0 > alpha || 255 < alpha) {
56 throw new ArgumentOutOfRangeException ("alpha", alpha, "Value must be within a range of 0 - 255.");
57 }
58
59 if (0f > hue || 360f < hue) {
60 throw new ArgumentOutOfRangeException ("hue", hue, "Value must be within a range of 0 - 360.");
61 }
62
63 if (0f > saturation || 1f < saturation) {
64 throw new ArgumentOutOfRangeException ("saturation", saturation, "Value must be within a range of 0 - 1.");
65 }
66
67 if (0f > brightness || 1f < brightness) {
68 throw new ArgumentOutOfRangeException ("brightness", brightness, "Value must be within a range of 0 - 1.");
69 }
70
71 if (0 == saturation) {
72 return System.Drawing.Color.FromArgb (alpha, Convert.ToInt32 (brightness * 255), Convert.ToInt32 (brightness * 255), Convert.ToInt32 (brightness * 255));
73 }
74
75 float fMax, fMid, fMin;
76 int iSextant, iMax, iMid, iMin;
77
78 if (0.5 < brightness) {
79 fMax = brightness - (brightness * saturation) + saturation;
80 fMin = brightness + (brightness * saturation) - saturation;
81 }
82 else {
83 fMax = brightness + (brightness * saturation);
84 fMin = brightness - (brightness * saturation);
85 }
86
87 iSextant = (int)Math.Floor (hue / 60f);
88 if (300f <= hue)
89 hue -= 360f;
90
91 hue /= 60f;
92 hue -= 2f * (float)Math.Floor (((iSextant + 1f) % 6f) / 2f);
93
94 if (0 == iSextant % 2)
95 fMid = hue * (fMax - fMin) + fMin;
96 else
97 fMid = fMin - hue * (fMax - fMin);
98
99 iMax = Convert.ToInt32 (fMax * 255);
100 iMid = Convert.ToInt32 (fMid * 255);
101 iMin = Convert.ToInt32 (fMin * 255);
102
103 switch (iSextant) {
104 case 1:
105 return System.Drawing.Color.FromArgb (alpha, iMid, iMax, iMin);
106 case 2:
107 return System.Drawing.Color.FromArgb (alpha, iMin, iMax, iMid);
108 case 3:
109 return System.Drawing.Color.FromArgb (alpha, iMin, iMid, iMax);
110 case 4:
111 return System.Drawing.Color.FromArgb (alpha, iMid, iMin, iMax);
112 case 5:
113 return System.Drawing.Color.FromArgb (alpha, iMax, iMin, iMid);
114 default:
115 return System.Drawing.Color.FromArgb (alpha, iMax, iMid, iMin);
116 }
117 }
118 */
119
120 public static ImageCodecInfo GetEncoderInfo (String mimeType) {
121 ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders ();
122
123 foreach (ImageCodecInfo t in encoders)
124 if (t.MimeType == mimeType)
125 return t;
126
127 return null;
128 }
129
130 public static byte[] SaveImage_ToBytes (System.Drawing.Image iImage, bool bAndDispose = false)
131 {
132 try {
133 ImageCodecInfo codec = PetesUtils.GetEncoderInfo ("image/png");
134
135 Encoder qualityEncoder = Encoder.Quality;
136 EncoderParameter ratio = new EncoderParameter (qualityEncoder, 100L);
137 EncoderParameters codecParams = new EncoderParameters (1);
138 codecParams.Param [0] = ratio;
139
140 byte[] b = null;
141
142 using (MemoryStream ms = new MemoryStream ()) {
143 iImage.Save (ms, codec, codecParams);
144
145 b = ms.ToArray ();
146
147 if (bAndDispose)
148 iImage.Dispose ();
149 }
150
151 return b;
152 }
153 catch { }
154
155 return null;
156 }
157
158 }
159}
Note: See TracBrowser for help on using the repository browser.