]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - radiant/targetname.cpp
fix unzip code
[xonotic/netradiant.git] / radiant / targetname.cpp
1 /*
2    Copyright (C) 1999-2007 id Software, Inc. and contributors.
3    For a list of contributors, see the accompanying CONTRIBUTORS file.
4
5    This file is part of GtkRadiant.
6
7    GtkRadiant is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    GtkRadiant is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GtkRadiant; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 #include "stdafx.h"
23
24 /*!
25    connects two entities creating a unique target/targetname value
26  */
27 void Entity_Connect( entity_t *e1, entity_t *e2 ){
28         const char *maptarget;
29         char newtarget[16];
30         int maxtarget = 0; // highest t# value in the map
31         entity_t *e;    // map entities
32
33         if ( e1 == e2 ) {
34 #ifdef _DEBUG
35                 Sys_Status( "Entity_Connect: Brushes are from same entity.", 0 );
36 #endif
37                 return;
38         }
39
40         for ( e = entities.next ; e != &entities ; e = e->next )
41         {
42                 maptarget = ValueForKey( e, "target" );
43                 if ( maptarget && maptarget[0] ) {
44                         int targetnum = atoi( maptarget + 1 );
45                         if ( targetnum > maxtarget ) {
46                                 maxtarget = targetnum;
47                         }
48                 }
49         }
50         sprintf( newtarget, "t%i", maxtarget + 1 );
51
52 #ifdef _DEBUG
53         Sys_Printf( "Connecting entities with new target/targetname: %s\n", newtarget );
54 #endif
55
56         SetKeyValue( e1, "target", newtarget );
57         SetKeyValue( e2, "targetname", newtarget );
58 }
59
60 int GetUniqueTargetId( int iHint ){
61         int iMin, iMax, i;
62         bool fFound;
63         entity_t *pe;
64
65         fFound = FALSE;
66         pe = entities.next;
67         iMin = 0;
68         iMax = 0;
69
70         for (; pe != NULL && pe != &entities ; pe = pe->next )
71         {
72                 i = IntForKey( pe, "target" );
73                 if ( i ) {
74                         iMin = MIN( i, iMin );
75                         iMax = MAX( i, iMax );
76                         if ( i == iHint ) {
77                                 fFound = TRUE;
78                         }
79                 }
80         }
81
82         if ( fFound ) {
83                 return iMax + 1;
84         }
85         else{
86                 return iHint;
87         }
88 }