Beispiel #1
0
 // Use this for initialization
 void Start()
 {
     try
     {
         pManager      = FindObjectOfType <PlayerManager>();
         status        = pManager.Status;
         alchemy_ctr   = FindObjectOfType <AlchemyController>();
         alchemyUI_ctr = GameObject.Find("Canvas/Alchemy_UI").GetComponent <AlchemyUIController>();
         BrotherObj    = FindObjectOfType <MoveController>().gameObject;
         move_ctr      = BrotherObj.GetComponent <MoveController>();
         PotObject     = FindObjectOfType <PotController>().gameObject;
         createItemBox = new List <CreateItemStatus.Type>();
         anim_ctr      = BrotherObj.transform.parent.GetComponent <AnimController>();
         lifePoint     = GameObject.FindGameObjectWithTag("LifePoint");
     }
     catch (UnityException e)
     {
         Debug.Log(e + " is NotFound");
     }
     StartHeart();
     setStartSwordList();
     //剣のデバッグ
     //swordList[1] = PlayerStatus.SWORDTYPE.AXE;
     //swordList[2] = PlayerStatus.SWORDTYPE.DARK;
     //swordList[3] = PlayerStatus.SWORDTYPE.VAJURA;
     _itemMax      = false;
     alchemyUIFlag = false;
 }
Beispiel #2
0
 void Start()
 {
     try
     {
         status        = FindObjectOfType <PlayerManager>().Status;
         player_ctr    = GameObject.Find("Controller").GetComponent <PlayerController>();
         move_ctr      = GameObject.FindObjectOfType <MoveController>();
         crossAxisdown = move_ctr.gameObject.GetComponent <CrossAxisDown>();
         alchemy_ctr   = GameObject.FindObjectOfType <AlchemyController>();
         alchemyText   = gameObject.GetComponent <AlchemyText>();
         ChooseObj     = gameObject.transform.Find("ThrowChoose").gameObject;
         ChooseObj.SetActive(false);
         ItemFrame    = gameObject.transform.Find("SelectFrame").gameObject;
         PotFrame     = gameObject.transform.Find("AlchemyPotFrame").gameObject;
         mtr_0        = PotFrame.transform.Find("AlchemyPotin/Material/material_0").gameObject.transform.GetChild(0).gameObject;
         mtr_1        = PotFrame.transform.Find("AlchemyPotin/Material/material_1").gameObject.transform.GetChild(0).gameObject;
         AlphaSprite  = Resources.Load <Sprite>("Textures/UI/AlphaImage");
         SuccessPanel = gameObject.transform.Find("Alchemy_Succes").gameObject;
     }
     catch (Exception e)
     {
         Debug.LogWarning(e + "がないよ!");
     }
     nowAlchemyItem = 0;
     nowBox         = 0;
     beforeNowBox   = -1;
     _chooseWindow  = false;
     setItembox();
     setItemImageList();
     StartCreateItemBox();
     Box_item = new GameObject[Itembox.Length];
     ClearJoystickRotation();
     Materials_item.Clear();
 }
Beispiel #3
0
 public void CanRunCommand()
 {
     ICommand command = new TestCommand();
     ICommunicator com = new TestCommunicator();
     AlchemyController con = new AlchemyController( new RuleSet() );
     command.Run( "input", con, com );
 }
 public Do Run( string input, AlchemyController controller, ICommunicator communicator )
 {
     string elementname = input.TrimStart( '*' );
     if( controller.ElementExists( elementname ) )
         controller.ForeachNonterminalElement( ( e ) => controller.ReportChangedRule( new Rule( new[] { elementname, e.Name } ) ) );
     return Do.AnotherRule;
 }
Beispiel #5
0
        public void AlchemyControllerRecommendsNullIfNoElements()
        {
            var rs = new RuleSet();
            var controller = new AlchemyController( rs );

            var rule = controller.RecommendNewRule();

            Assert.IsNull( rule );
        }
Beispiel #6
0
 public void DisplayRuleDisplaysNothingIfApplicable()
 {
     IPreCommand c = new DisplayRecommendedRule();
     var rs = new RuleSet();
     var a = new AlchemyController( rs );
     var t = new TestCommunicator();
     t.DisplayCalled += ( o, e ) => Assert.IsTrue( string.IsNullOrEmpty( (string) o ) );
     var result = c.Run( a, t );
     Assert.AreEqual( Do.KeepProcessing, result );
 }
Beispiel #7
0
        public void AlchemyControllerCanAddNewElement()
        {
            var rs = new RuleSet();
            var controller = new AlchemyController( rs );
            const string element = "aoeu";
            controller.RegisterNewElement( element );

            Assert.AreEqual( 1, rs.FoundElements.Count() );
            Assert.AreEqual( element, rs.FoundElements.First().Name );
        }
Beispiel #8
0
        public void AddExplicitRuleWithNewElementsResetsRecommendedElementProgress()
        {
            var rs = new RuleSet();
            var controller = new AlchemyController( rs );
            var c = Setup( controller, new[] { ">fire", ">water", "", "", "#fire,fire:energy", "!" } );
            c.Cook();

            var rule = controller.RecommendNewRule();

            Assert.AreEqual( new Rule( new[] { "fire", "energy" } ), rule );
        }
Beispiel #9
0
        static void Main()
        {
            var filename = ConfigurationManager.AppSettings["filename"];
            var serializationTime = Int32.Parse( ConfigurationManager.AppSettings["serializationTime"] );

            var rs = FetchRuleSet( filename, serializationTime );
            var controller = new AlchemyController( rs );
            var communicator = new Communicator();
            var chemist = new Chemist( controller, communicator );

            chemist.Cook();
        }
Beispiel #10
0
        public void AlchemyControllerRecommendsEmptyRuleIfDone()
        {
            var rs = new RuleSet();
            var controller = new AlchemyController( rs );
            controller.RegisterNewElement( "fire" );
            var rule = controller.RecommendNewRule();
            controller.ReportChangedRule( rule );

            var finalRule = controller.RecommendNewRule();

            Assert.AreEqual( Rule.EmptyRule, finalRule );
        }
        public void RuleSetOnlyNotifiesWhenStrictlyNeccessary()
        {
            var changedprops = new List<string>();
            var persister = new XmlPersister( new RuleSetXmlSerializer(), new StreamFactory( "data.xml" ), 2000 );
            var rs = persister.RecreateRuleSet();
            rs.PropertyChanged += ( s, e ) => changedprops.Add( e.PropertyName );

            var controller = new AlchemyController( rs );

            var rule = controller.RecommendNewRule();
            rule.Result = new[] { new Element( "alpha" ) };
            controller.ReportChangedRule( rule );

            Assert.AreEqual( 1, changedprops.Count( p => p.Equals( "FoundElements" ) ) );
            Assert.AreEqual( 1, changedprops.Count( p => p.Equals( "Rules" ) ) );
        }
Beispiel #12
0
 public void DisplayRuleDisplaysRuleIfApplicable()
 {
     IPreCommand c = new DisplayRecommendedRule();
     var rs = new RuleSet() { FoundElements = TestTools.GenerateElements( 1 ) };
     var a = new AlchemyController( rs );
     var t = new TestCommunicator();
     int count = 0;
     t.DisplayCalled += ( o, e ) =>
     {
         count++;
         Assert.IsTrue( ( (string) o ).Contains( "+" ) );
     };
     var result = c.Run( a, t );
     Assert.AreEqual( Do.KeepProcessing, result );
     Assert.AreEqual( 1, count );
 }
        public void RuleSetNotifiesOnPropertyChanged()
        {
            var changedprops = new List<string>();
            var r = new RuleSet();
            r.PropertyChanged += ( s, e ) => changedprops.Add( e.PropertyName );

            var controller = new AlchemyController( r );
            controller.RegisterNewElement( "fire" );
            var rule = controller.RecommendNewRule();
            rule.Result = new[] { new Element( "water" ) };

            controller.ReportChangedRule( rule );

            Assert.AreEqual( 2, changedprops.Count( p => p.Equals( "FoundElements" ) ) );
            Assert.AreEqual( 2, r.FoundElements.Count() );
            Assert.AreEqual( 1, changedprops.Count( p => p.Equals( "Rules" ) ) );
            Assert.AreEqual( 1, r.Rules.Count() );
        }
        public Do Run( string input, AlchemyController controller, ICommunicator communicator )
        {
            var splitinput = input.TrimStart( ' ', '#' ).Split( ':' );
            if( splitinput.Length < 2 )
                return Do.AnotherRule;

            var ingredients = splitinput[0].Split( ',' );

            foreach( var ingredient in ingredients )
            {
                if( !controller.ElementExists( ingredient ) )
                {
                    communicator.Display( "Bad data, element named '" + ingredient + "' isnt in list of known elements. If this isnt a typo, please add element using '>element', or, if possible, add rule that creates element" );
                    return Do.AnotherRule;
                }
            }

            var rule = new Rule( ingredients );
            rule.SetResult( splitinput[1] );
            controller.ReportChangedRule( rule, true );

            return Do.AnotherRule;
        }
Beispiel #15
0
        public void AlchemyControllerCanMarkElementAsTerminal()
        {
            var rs = new RuleSet();
            var a = new AlchemyController( rs );

            a.RegisterNewElement( "a" );
            a.RegisterNewElement( "b" );
            a.RegisterNewElement( "c" );
            a.RegisterNewElement( "d" );
            a.RegisterNewElement( "e" );

            a.FinalizeElement( "c" );

            var em = rs.FoundElements.FirstOrDefault( e => e.Name.Equals( "c" ) );

            Assert.IsTrue( em.TerminalSpecified );
            Assert.IsTrue( em.TerminalValue.HasValue );
            if( em.TerminalValue != null )
            {
                Assert.IsTrue( em.TerminalValue.Value );
            }
            Assert.AreEqual( 1, rs.FoundElements.Count( e => e.TerminalValue.HasValue && e.Terminal ) );
            Assert.AreEqual( 4, rs.FoundElements.Count( e => !e.TerminalValue.HasValue ) );
        }
Beispiel #16
0
        public void ControllerCanSayThatItHasFinished()
        {
            var rs = new RuleSet()
            {
                FoundElements = new[] { new Element( "fire" ) },
                Rules = new[] { new Rule
                {
                    Ingredients = new [] { new Element( "fire" ), new Element("fire") }
                }}

            };
            var c = new AlchemyController( rs );

            Assert.AreEqual( AlchemyState.Finished, c.State );
        }
Beispiel #17
0
        public void ControllerCanSayThatItHasStarted()
        {
            var rs = new RuleSet() { FoundElements = new[] { new Element( "fire" ) } };
            var c = new AlchemyController( rs );

            Assert.AreEqual( AlchemyState.Started, c.State );
        }
Beispiel #18
0
        public void ControllerRecommendsAllPossibleCombinationsOfElements()
        {
            const string e1 = "1";
            const string e2 = "2";
            var rs = new RuleSet();
            var c = new AlchemyController( rs );
            c.RegisterNewElement( e1 );
            c.RegisterNewElement( e2 );
            var rules = new List<Rule>();
            for( int i = 0; i < 100; i++ )
            {
                var r1 = c.RecommendNewRule();
                if( r1 == Rule.EmptyRule )
                    break;
                rules.Add( r1 );
                c.ReportChangedRule( r1 );
            }

            Assert.AreEqual( 3, rules.Count );
            Assert.IsTrue( AssertForCombo( e1, e1, rules ) );
            Assert.IsTrue( AssertForCombo( e1, e2, rules ) );
            Assert.IsTrue( AssertForCombo( e2, e2, rules ) );
        }
Beispiel #19
0
 public Do Run( string input, AlchemyController controller, ICommunicator communicator )
 {
     return Do.AnotherRule;
 }
Beispiel #20
0
        public void ControllerRecommendsCombinationsButNotDuplicates()
        {
            var rs = new RuleSet();
            var c = new AlchemyController( rs );
            c.RegisterNewElement( "a" );
            c.RegisterNewElement( "mb" );
            c.RegisterNewElement( "aoeu" );
            c.ReportChangedRule( c.RecommendNewRule() );

            var rules = new List<Rule>();
            for( int i = 0; i < 100; i++ )
            {
                var r1 = c.RecommendNewRule();
                if( r1 == Rule.EmptyRule )
                    break;
                rules.Add( r1 );
                c.ReportChangedRule( r1 );
            }

            Assert.AreEqual( 5, rules.Count );
        }
Beispiel #21
0
        public void RuleOverrideTriggersPropchangedIfRuleChanged()
        {
            var rs = new RuleSet()
            {
                FoundElements = new[] { new Element( "fire" ), new Element( "water" ) },
                Rules = new[] { new Rule( new[] { "fire", "fire" }, "fire" ) }
            };
            var c = new AlchemyController( rs );
            int count = 0;
            rs.PropertyChanged += ( a, e ) => { count++; };

            c.ReportChangedRule( new Rule( new[] { "fire", "fire" }, "water" ), true );

            Assert.AreEqual( 1, count );
        }
Beispiel #22
0
        public void ControllerCanSayIfHasntStartedYet()
        {
            var rs = new RuleSet();
            var c = new AlchemyController( rs );

            Assert.AreEqual( AlchemyState.NotStarted, c.State );
        }
Beispiel #23
0
 public void IsFinishedCommandSaysExitWhenControllerIsDone()
 {
     var c = new IsFinishedCommand();
     var rs = new RuleSet() { FoundElements = TestTools.GenerateElements( 2 ), Rules = TestTools.GenerateRules( 3 ) };
     var a = new AlchemyController( rs );
     Assert.AreEqual( Do.Exit, c.Run( a, new TestCommunicator() ) );
 }
Beispiel #24
0
 public void IsFinishedCommandSaysContinueIfNotDone()
 {
     var c = new IsFinishedCommand();
     var rs = new RuleSet() { FoundElements = TestTools.GenerateElements( 2 ), Rules = TestTools.GenerateRules( 2 ) };
     var a = new AlchemyController( rs );
     Assert.AreEqual( Do.KeepProcessing, c.Run( a, new TestCommunicator() ) );
 }
Beispiel #25
0
 public void IsFinishedCommandSaysContinueIfEmptyElementList()
 {
     var c = new IsFinishedCommand();
     var rs = new RuleSet();
     var a = new AlchemyController( rs );
     Assert.AreEqual( Do.KeepProcessing, c.Run( a, new TestCommunicator() ) );
 }
Beispiel #26
0
 public void ExtensiveControllerRoundtripMonkeyTest()
 {
     var rs = new RuleSet();
     var c = new AlchemyController( rs );
     c.RegisterNewElement( "fire" );
     c.RegisterNewElement( "water" );
     c.RegisterNewElement( "burn" );
 }
Beispiel #27
0
        public void AlchemyControllerRecommendsRule()
        {
            var rs = new RuleSet
            {
                FoundElements = new[] { new Element( "fire" ) }
            };
            var controller = new AlchemyController( rs );

            var rule = controller.RecommendNewRule();

            Assert.IsNotNull( rule );
            Assert.AreEqual( new Rule( new[] { new Element( "fire" ), new Element( "fire" ) } ), rule );
        }
Beispiel #28
0
        public void MultiCommandAddsRules()
        {
            ICommand command = new AddMultiComboCommand();
            var com = new TestCommunicator();
            var rs = new RuleSet()
            {
                FoundElements = new[] { new Element( "fire" ), new Element( "water" ) }
            };

            var c = new AlchemyController( rs );
            command.Run( "*fire", c, com );

            Assert.AreEqual( 2, rs.Rules.Length );
        }
Beispiel #29
0
 public Do Run( string input, AlchemyController controller, ICommunicator communicator )
 {
     communicator.Display( "Exit." );
     return Do.Exit;
 }
Beispiel #30
0
        public void PrintCommandWontPrintIrrelevant()
        {
            ICommand command = new PrintCommand();
            var comm = new TestCommunicator();
            int count = 0;
            comm.DisplayCalled += ( a, e ) =>
            {
                count++;
            };
            var rs = new RuleSet()
                {
                    Rules = new[] { new Rule( new[] { "fire", "water" }, "water" ) }
                };
            var controller = new AlchemyController( rs );
            command.Run( "?fire3", controller, comm );

            Assert.AreEqual( 0, count );
        }
Beispiel #31
0
        public void AlchemyControllerWontReccomendRuleWithTerminalElements()
        {
            var rs = new RuleSet();
            var a = new AlchemyController( rs );

            a.RegisterNewElement( "a" );
            a.RegisterNewElement( "b" );
            a.RegisterNewElement( "c" );
            a.FinalizeElement( "a" );

            var rules = new List<Rule>();
            for( int i = 0; i < 100; i++ )
            {
                var r1 = a.RecommendNewRule();
                if( r1 == Rule.EmptyRule )
                    break;
                rules.Add( r1 );
                a.ReportChangedRule( r1 );
            }

            Assert.AreEqual( 3, rules.Count );
            Assert.IsFalse( rules.Any( r => r.Ingredients.Any( i => i.Name.Equals( a ) ) ) );
        }
Beispiel #32
0
        void TestControllerForRules( int elements, int rules )
        {
            var rs = new RuleSet()
            {
                FoundElements = TestTools.GenerateElements( elements ),
                Rules = TestTools.GenerateRules( rules )
            };

            var c = new AlchemyController( rs );

            Assert.AreEqual( AlchemyState.Finished, c.State );
        }