
package pokerth_protocol;
//
// This file was generated by the BinaryNotes compiler.
// See http://bnotes.sourceforge.net 
// Any modifications to this file will be lost upon recompilation of the source ASN.1. 
//

import org.bn.*;
import org.bn.annotations.*;
import org.bn.annotations.constraints.*;
import org.bn.coders.*;
import org.bn.types.*;




    @ASN1PreparedElement
    @ASN1BoxedType ( name = "HandStartMessage" )
    public class HandStartMessage implements IASN1PreparedElement {
                
        

       @ASN1PreparedElement
       @ASN1Sequence ( name = "HandStartMessage" , isSet = false )
       public static class HandStartMessageSequenceType implements IASN1PreparedElement {
                
        @ASN1Element ( name = "gameId", isOptional =  false , hasTag =  false  , hasDefaultValue =  false  )
    
	private NonZeroId gameId = null;
                
  
        
    @ASN1PreparedElement
    @ASN1Choice ( name = "yourCards" )
    public static class YourCardsChoiceType implements IASN1PreparedElement {
            
        @ASN1Element ( name = "plainCards", isOptional =  false , hasTag =  true, tag = 0 , hasDefaultValue =  false  )
    
	private PlainCards plainCards = null;
                
  
        @ASN1Element ( name = "encryptedCards", isOptional =  false , hasTag =  true, tag = 1 , hasDefaultValue =  false  )
    
	private EncryptedCards encryptedCards = null;
                
  
        
        public PlainCards getPlainCards () {
            return this.plainCards;
        }

        public boolean isPlainCardsSelected () {
            return this.plainCards != null;
        }

        private void setPlainCards (PlainCards value) {
            this.plainCards = value;
        }

        
        public void selectPlainCards (PlainCards value) {
            this.plainCards = value;
            
                    setEncryptedCards(null);
                            
        }

        
  
        
        public EncryptedCards getEncryptedCards () {
            return this.encryptedCards;
        }

        public boolean isEncryptedCardsSelected () {
            return this.encryptedCards != null;
        }

        private void setEncryptedCards (EncryptedCards value) {
            this.encryptedCards = value;
        }

        
        public void selectEncryptedCards (EncryptedCards value) {
            this.encryptedCards = value;
            
                    setPlainCards(null);
                            
        }

        
  

	    public void initWithDefaults() {
	    }

        public IASN1PreparedElementData getPreparedData() {
            return preparedData_YourCardsChoiceType;
        }

        private static IASN1PreparedElementData preparedData_YourCardsChoiceType = CoderFactory.getInstance().newPreparedElementData(YourCardsChoiceType.class);

    }

                
        @ASN1Element ( name = "yourCards", isOptional =  false , hasTag =  false  , hasDefaultValue =  false  )
    
	private YourCardsChoiceType yourCards = null;
                
  @ASN1Integer( name = "" )
    @ASN1ValueRangeConstraint ( 
		
		min = 1L, 
		
		max = 100000000L 
		
	   )
	   
        @ASN1Element ( name = "smallBlind", isOptional =  false , hasTag =  false  , hasDefaultValue =  false  )
    
	private Integer smallBlind = null;
                
  
@ASN1SequenceOf( name = "seatStates", isSetOf = false ) 

    @ASN1ValueRangeConstraint ( 
		
		min = 2L, 
		
		max = 10L 
		
	   )
	   
        @ASN1Element ( name = "seatStates", isOptional =  false , hasTag =  false  , hasDefaultValue =  false  )
    
	private java.util.Collection<NetPlayerState>  seatStates = null;
                
  
        
        public NonZeroId getGameId () {
            return this.gameId;
        }

        

        public void setGameId (NonZeroId value) {
            this.gameId = value;
        }
        
  
        
        public YourCardsChoiceType getYourCards () {
            return this.yourCards;
        }

        

        public void setYourCards (YourCardsChoiceType value) {
            this.yourCards = value;
        }
        
  
        
        public Integer getSmallBlind () {
            return this.smallBlind;
        }

        

        public void setSmallBlind (Integer value) {
            this.smallBlind = value;
        }
        
  
        
        public java.util.Collection<NetPlayerState>  getSeatStates () {
            return this.seatStates;
        }

        

        public void setSeatStates (java.util.Collection<NetPlayerState>  value) {
            this.seatStates = value;
        }
        
  
                
                
        public void initWithDefaults() {
            
        }

        public IASN1PreparedElementData getPreparedData() {
            return preparedData_HandStartMessageSequenceType;
        }

       private static IASN1PreparedElementData preparedData_HandStartMessageSequenceType = CoderFactory.getInstance().newPreparedElementData(HandStartMessageSequenceType.class);
                
       }

       
                
        @ASN1Element ( name = "HandStartMessage", isOptional =  false , hasTag =  true, tag = 23, 
        tagClass =  TagClass.Application  , hasDefaultValue =  false  )
    
        private HandStartMessageSequenceType  value;        

        
        
        public HandStartMessage () {
        }
        
        
        
        public void setValue(HandStartMessageSequenceType value) {
            this.value = value;
        }
        
        
        
        public HandStartMessageSequenceType getValue() {
            return this.value;
        }            
        

	    public void initWithDefaults() {
	    }

        private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(HandStartMessage.class);
        public IASN1PreparedElementData getPreparedData() {
            return preparedData;
        }

            
    }
            