rnd-20091020-1-src
[rocksndiamonds.git] / src / game_sp / GeneralTricks.c
1 // ----------------------------------------------------------------------------
2 // GeneralTricks.c
3 // ----------------------------------------------------------------------------
4
5 #include "GeneralTricks.h"
6
7 // static char *VB_Name = "GeneralTricks_Module";
8
9 // --- Option Explicit
10 // --- Option Compare Text
11
12 double ValEx(char *TS)
13 {
14   double ValEx;
15
16   // Extends the Val() function for
17   // german-style number-representing strings
18   int i;
19   char *LS, *RS;
20
21   i = InStr(1, TS, ",");
22   if (i != 0)
23   {
24     LS = Left(TS, i - 1);
25     RS = Right(TS, strlen(TS) - i);
26     ValEx = Val(CAT(LS, ".", RS));
27   }
28   else
29   {
30     ValEx = Val(TS);
31   }
32
33   return ValEx;
34 }
35
36 void INC(int *VAR, int Delta)
37 {
38   *VAR = *VAR + Delta;
39 }
40
41 void DEC(int *VAR, int Delta)
42 {
43   *VAR = *VAR - Delta;
44 }
45
46 #if 0
47
48 char *MySplit(char *TS, char *Sep, long SCount)
49 {
50   char *MySplit;
51
52   char *T;
53   long i, J, k, q, L, SL;
54   char *RA;
55
56   T = TS;
57   L = strlen(TS);
58   SL = strlen(Sep);
59   J = SCount;
60   if (J < 1)
61   {
62     J = 0;
63     i = 1;
64     while (i <= L)
65     {
66       k = InStr(i, T, Sep);
67       if (k < i)
68         break;
69
70       if (i < k)
71         J = J + 1;
72
73       i = k + SL;
74     }
75
76     if (i <= L)
77       J = J + 1;
78   }
79
80   if (0 < J)
81     RA = REDIM_1D(sizeof(char), 0, J + 1 - 1);
82   else
83     return MySplit;
84
85   i = 1;
86   q = 0;
87   while (i <= L)
88   {
89     k = InStr(i, T, Sep);
90     if (k < i)
91       break;
92
93     if (i < k)
94     {
95       if (J <= q + 1)
96         break;
97
98       q = q + 1;
99 #if 0
100       /* !!! CHECK IF THIS IS REALLY NEEDED !!! */
101       RA[q] = Mid(T, i, k - i);
102 #endif
103     }
104
105     i = k + SL;
106   }
107
108   if (i <= L)
109   {
110     q = q + 1;
111     T = Right(T, L - i + 1);
112     do
113     {
114       if (Len(T) <= SL)
115         break;
116
117       if (Right(T, SL) == Sep)
118       {
119         T = Left(T, Len(T) - SL);
120       }
121       else
122       {
123         break;
124       }
125     }
126     while (1);
127
128     strcpy(&RA[q], T); // RA(q) = T
129   }
130
131   MySplit = RA;
132
133   return MySplit;
134 }
135
136 #endif
137
138 void MyReplace(char *TS, char *Pat1, char *Pat2)
139 {
140   long k, SL1, SL2, TL;
141
142   TL = strlen(TS);
143   SL1 = strlen(Pat1);
144   SL2 = strlen(Pat2);
145   k = InStr(1, TS, Pat1);
146   if (k == 0)
147     return;
148
149   do
150   {
151     TS = CAT(Left(TS, k - 1), Pat2, Right(TS, TL - k - SL1 + 1));
152     TL = TL + SL2 - SL1;
153     k = InStr(k + SL2, TS, Pat1);
154   }
155   while (!(k == 0));
156 }
157