[skycastle-commits] SF.net SVN: skycastle: [468] trunk/skycastle/modules

  • From: zzorn@xxxxxxxxxxxxxxxxxxxxx
  • To: skycastle-commits@xxxxxxxxxxxxx
  • Date: Mon, 21 Apr 2008 13:56:34 -0700

Revision: 468
          http://skycastle.svn.sourceforge.net/skycastle/?rev=468&view=rev
Author:   zzorn
Date:     2008-04-21 13:56:33 -0700 (Mon, 21 Apr 2008)

Log Message:
-----------
Started sketching out the design for a visually editable language.  It will be 
needed later for most world editing.  For now I just need the implementation 
side, so that the server can send a script to the client that takes outputs 
from the UI when a button is pressed and composes a message to the server side.

Modified Paths:
--------------
    
trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ClientObject.java

Added Paths:
-----------
    trunk/skycastle/modules/core/src/main/java/org/skycastle/language/
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/AbstractBlock.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/ActionCallStatement.java
    trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Block.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Expression.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/LanguageContext.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/PropertyReferenceExpression.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/SingleSlot.java
    trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Slot.java
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Statement.java

Modified: 
trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ClientObject.java
===================================================================
--- 
trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ClientObject.java
 2008-04-19 10:01:55 UTC (rev 467)
+++ 
trunk/skycastle/modules/client/src/main/java/org/skycastle/client/ClientObject.java
 2008-04-21 20:56:33 UTC (rev 468)
@@ -142,10 +142,11 @@
             throws IllegalAccessException, InstantiationException
     {
         final GameObjectContext context = GameContext.getGameObjectContext();
-        final ButtonUi ui = context.createGameObject( ButtonUi.class );
-        ui.getActionReference().setReference( gameObjectId, actionId );
+        final ButtonUi buttonUi = context.createGameObject( ButtonUi.class );
+        buttonUi.getActionReference().setReference( gameObjectId, actionId );
 
-        return ui;
+
+        return buttonUi;
     }
 
 

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/AbstractBlock.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/AbstractBlock.java
                                (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/AbstractBlock.java
        2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,25 @@
+package org.skycastle.language;
+
+import java.util.List;
+
+/**
+ * @author Hans Haggstrom
+ */
+public abstract class AbstractBlock
+        implements Block
+{
+    protected void addSlot( Slot slot )
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+    protected void removeSlot( Slot slot )
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+    public List<Slot> getSlots()
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/ActionCallStatement.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/ActionCallStatement.java
                          (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/ActionCallStatement.java
  2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,27 @@
+package org.skycastle.language;
+
+/**
+ * A {@link Statement} that invokes an action with some parameters.
+ *
+ * @author Hans Haggstrom
+ */
+public class ActionCallStatement
+        extends AbstractBlock
+        implements Statement
+{
+    public ActionCallStatement()
+    {
+        addSlot( new SingleSlot<Expression>( Expression.class, "Message" ) );
+        addSlot( new SingleSlot<Expression>( Expression.class, "Sender" ) );
+        addSlot( new SingleSlot<Expression>( Expression.class, "Target" ) );
+
+        addSlot( new SingleSlot<Statement>( Statement.class, "OnSuccess" ) );
+        addSlot( new SingleSlot<Statement>( Statement.class, "OnProgress" ) );
+        addSlot( new SingleSlot<Statement>( Statement.class, "OnFailure" ) );
+    }
+
+    public void execute( final LanguageContext languageContext )
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Block.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Block.java    
                            (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Block.java    
    2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,18 @@
+package org.skycastle.language;
+
+import java.util.List;
+
+/**
+ * Represents any kind of member of an object.
+ *
+ * @author Hans Haggstrom
+ */
+public interface Block
+{
+
+    /**
+     * @return the {@link Slot}s available in this {@link Block}
+     */
+    List<Slot> getSlots();
+
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Expression.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Expression.java
                           (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Expression.java
   2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,12 @@
+package org.skycastle.language;
+
+/**
+ * An {@link Expression} calculates some result based on zero or more inputs.
+ *
+ * @author Hans Haggstrom
+ */
+public interface Expression
+        extends Block
+{
+
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/LanguageContext.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/LanguageContext.java
                              (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/LanguageContext.java
      2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,10 @@
+package org.skycastle.language;
+
+/**
+ * A way for a statement or expression to access parameters and properties 
that are available to it.
+ *
+ * @author Hans Haggstrom
+ */
+public interface LanguageContext
+{
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/PropertyReferenceExpression.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/PropertyReferenceExpression.java
                          (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/PropertyReferenceExpression.java
  2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,20 @@
+package org.skycastle.language;
+
+import java.util.List;
+
+/**
+ * An {@link Expression} that returns the value of a specified property as its 
result.
+ *
+ * @author Hans Haggstrom
+ */
+public class PropertyReferenceExpression
+        extends AbstractBlock
+        implements Expression
+{
+
+
+    public List<Slot> getSlots()
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/SingleSlot.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/SingleSlot.java
                           (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/SingleSlot.java
   2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,60 @@
+package org.skycastle.language;
+
+/**
+ * A slot that holds a single block of the specified type.
+ *
+ * @author Hans Haggstrom
+ */
+public final class SingleSlot<T extends Block>
+        implements Slot
+{
+
+    //======================================================================
+    // Private Fields
+
+    private final Class<T> myBlockType;
+
+    private final String mySlotName;
+
+    private T myBlock = null;
+
+    //======================================================================
+    // Public Methods
+
+    //----------------------------------------------------------------------
+    // Constructors
+
+    public SingleSlot( final Class<T> blockType, final String slotName )
+    {
+        myBlockType = blockType;
+        mySlotName = slotName;
+    }
+
+    //----------------------------------------------------------------------
+    // Slot Implementation
+
+
+    public String getSlotName()
+    {
+        return mySlotName;
+    }
+
+    //----------------------------------------------------------------------
+    // Other Public Methods
+
+    public Class<T> getBlockType()
+    {
+        return myBlockType;
+    }
+
+    public T getBlock()
+    {
+        return myBlock;
+    }
+
+    public void setBlock( final T block )
+    {
+        myBlock = block;
+    }
+
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Slot.java
===================================================================
--- trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Slot.java 
                        (rev 0)
+++ trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Slot.java 
2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,15 @@
+package org.skycastle.language;
+
+/**
+ * A place in a {@link Block} that can hold another {@link Block} of some type.
+ *
+ * @author Hans Haggstrom
+ */
+public interface Slot
+{
+    /**
+     * @return a user readable name describing this {@link Slot}.
+     */
+    String getSlotName();
+
+}

Added: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Statement.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Statement.java
                            (rev 0)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/language/Statement.java
    2008-04-21 20:56:33 UTC (rev 468)
@@ -0,0 +1,19 @@
+package org.skycastle.language;
+
+/**
+ * A statement that returns no result and takes no parameters.
+ * <p/>
+ * It does operate in a {@link LanguageContext} though, so it can access 
parameter or property values.
+ *
+ * @author Hans Haggstrom
+ */
+public interface Statement
+        extends Block
+{
+
+    /**
+     * Carries out the {@link Statement} in the specified {@link 
LanguageContext}.
+     */
+    void execute( LanguageContext languageContext );
+
+}


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

Other related posts:

  • » [skycastle-commits] SF.net SVN: skycastle: [468] trunk/skycastle/modules