Bläddra i källkod

-Added a new mode, WRITE_READ to File, to recover compatibility with old projects but also achieve desired functionality. Closes #3272

Juan Linietsky 9 år sedan
förälder
incheckning
52e53d4513

+ 1 - 0
core/bind/core_bind.cpp

@@ -1509,6 +1509,7 @@ void _File::_bind_methods() {
 	BIND_CONSTANT( READ );
 	BIND_CONSTANT( WRITE );
 	BIND_CONSTANT( READ_WRITE );
+	BIND_CONSTANT( WRITE_READ );
 }
 
 _File::_File(){

+ 1 - 0
core/bind/core_bind.h

@@ -329,6 +329,7 @@ public:
 		READ=1,
 		WRITE=2,
 		READ_WRITE=3,
+		WRITE_READ=7,
 	};
 
 	Error open_encrypted(const String& p_path, int p_mode_flags,const Vector<uint8_t>& p_key);

+ 1 - 0
core/os/file_access.h

@@ -78,6 +78,7 @@ public:
 		READ=1,
 		WRITE=2,
 		READ_WRITE=3,
+		WRITE_READ=7,
 	};
 	
 	virtual void close()=0; ///< close a file 

+ 2 - 0
drivers/unix/file_access_unix.cpp

@@ -74,6 +74,8 @@ Error FileAccessUnix::_open(const String& p_path, int p_mode_flags) {
 	else if (p_mode_flags==WRITE)
 		mode_string="wb";
 	else if (p_mode_flags==READ_WRITE)
+		mode_string="rb+";
+	else if (p_mode_flags==WRITE_READ)
 		mode_string="wb+";
 	else
 		return ERR_INVALID_PARAMETER;

+ 2 - 0
drivers/windows/file_access_windows.cpp

@@ -71,6 +71,8 @@ Error FileAccessWindows::_open(const String& p_filename, int p_mode_flags) {
 	else if (p_mode_flags==WRITE)
 		mode_string=L"wb";
 	else if (p_mode_flags==READ_WRITE)
+		mode_string=L"rb+";
+	else if (p_mode_flags==WRITE_READ)
 		mode_string=L"wb+";
 	else
 		return ERR_INVALID_PARAMETER;