28 lines
		
	
	
		
			896 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			896 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import json, os.path
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# record solver/rando to play in the VCR tracker
							 | 
						||
| 
								 | 
							
								class VCR(object):
							 | 
						||
| 
								 | 
							
								    def __init__(self, name, type):
							 | 
						||
| 
								 | 
							
								        self.baseName = os.path.basename(os.path.splitext(name)[0])
							 | 
						||
| 
								 | 
							
								        self.outFileName = "{}.{}.vcr".format(self.baseName, type)
							 | 
						||
| 
								 | 
							
								        self.empty()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def empty(self):
							 | 
						||
| 
								 | 
							
								        self.tape = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def addLocation(self, locName, itemName):
							 | 
						||
| 
								 | 
							
								        self.tape.append({'type': 'location', 'loc': locName, 'item': itemName})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def addRollback(self, count):
							 | 
						||
| 
								 | 
							
								        self.tape.append({'type': 'rollback', 'count': count})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def dump(self):
							 | 
						||
| 
								 | 
							
								        with open(self.outFileName, 'w') as jsonFile:
							 | 
						||
| 
								 | 
							
								            json.dump(self.tape, jsonFile)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # in scavenger we have the rando solver then the scav solver, generate vcr for both
							 | 
						||
| 
								 | 
							
								    def reinit(self, type):
							 | 
						||
| 
								 | 
							
								        self.dump()
							 | 
						||
| 
								 | 
							
								        self.outFileName = "{}.{}.vcr".format(self.baseName, type)
							 | 
						||
| 
								 | 
							
								        self.empty()
							 |