Exemple #1
0
 public RunDelegateScript(WorldModel worldModel, IFunction<Element> obj, IFunction<string> del, IList<IFunction<object>> parameters)
 {
     m_worldModel = worldModel;
     m_delegate = del;
     m_parameters = new FunctionCallParameters(worldModel, parameters);
     m_appliesTo = obj;
 }
Exemple #2
0
 public SetFieldScript(WorldModel worldModel, IFunction<Element> obj, IFunction<string> field, IFunction<object> value)
 {
     m_worldModel = worldModel;
     m_obj = obj;
     m_field = field;
     m_value = value;
 }
Exemple #3
0
 public RequestScript(ScriptContext scriptContext, string request, IFunction<string> data)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_data = data;
     m_request = (Request)(Enum.Parse(typeof(Request), request));
 }
Exemple #4
0
 public ForEachScript(WorldModel worldModel, string variable, IFunctionGeneric list, IScript loopScript)
 {
     m_worldModel = worldModel;
     m_variable = variable;
     m_list = list;
     m_loopScript = loopScript;
 }
Exemple #5
0
 public CreateExitScript(WorldModel worldModel, IFunction<string> name, IFunction<Element> from, IFunction<Element> to)
 {
     m_worldModel = worldModel;
     m_name = name;
     m_from = from;
     m_to = to;
 }
Exemple #6
0
 public PlaySoundScript(WorldModel worldModel, IFunction<string> function, IFunction<bool> synchronous, IFunction<bool> loop)
 {
     m_worldModel = worldModel;
     m_filename = function;
     m_synchronous = synchronous;
     m_loop = loop;
 }
Exemple #7
0
 public ListAddScript(ScriptContext scriptContext, IFunctionGeneric list, IFunction<object> value)
 {
     m_scriptContext = scriptContext;
     m_list = list;
     m_value = value;
     m_worldModel = scriptContext.WorldModel;
 }
Exemple #8
0
 public DictionaryAddScript(WorldModel worldModel, IFunctionGeneric dictionary, IFunction<string> key, IFunction<object> value)
 {
     m_dictionary = dictionary;
     m_key = key;
     m_value = value;
     m_worldModel = worldModel;
 }
Exemple #9
0
 public GetInputScript(ScriptContext scriptContext, IScriptFactory scriptFactory, IScript callbackScript)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_scriptFactory = scriptFactory;
     m_callbackScript = callbackScript;
 }
Exemple #10
0
 public DoActionScript(ScriptContext scriptContext, IFunction<Element> obj, IFunction<string> action)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_obj = obj;
     m_action = action;
 }
Exemple #11
0
 public IfScript(IFunction<bool> expression, IScript thenScript, IScript elseScript, WorldModel worldModel)
 {
     m_expression = expression;
     m_thenScript = thenScript;
     m_elseScript = elseScript;
     m_worldModel = worldModel;
 }
Exemple #12
0
 public LazyLoadScript(ScriptFactory scriptFactory, string scriptString, ScriptContext scriptContext)
 {
     m_scriptFactory = scriptFactory;
     m_scriptString = scriptString;
     m_scriptContext = scriptContext;
     m_worldModel = scriptFactory.WorldModel;
 }
        public UseSkillButtonGump(SkillEntry skill)
            : base(skill.ID, 0)
        {
            while (UserInterface.GetControl<UseSkillButtonGump>(skill.ID) != null)
            {
                UserInterface.GetControl<UseSkillButtonGump>(skill.ID).Dispose();
            }

            m_Skill = skill;
            m_World = ServiceRegistry.GetService<WorldModel>();

            IsMoveable = true;
            HandlesMouseInput = true;

            m_BG = new ResizePic[3];
            m_BG[0] = (ResizePic)AddControl(new ResizePic(this, 0, 0, 0x24B8, 120, 40));
            m_BG[1] = (ResizePic)AddControl(new ResizePic(this, 0, 0, 0x24EA, 120, 40));
            m_BG[2] = (ResizePic)AddControl(new ResizePic(this, 0, 0, 0x251C, 120, 40));
            m_Caption = (HtmlGumpling)AddControl(new HtmlGumpling(this, 0, 10, 120, 20, 0, 0, "<center>" + m_Skill.Name));

            for (int i = 0; i < 3; i++)
            {
                m_BG[i].MouseDownEvent += EventMouseDown;
                m_BG[i].MouseUpEvent += EventMouseUp;
                m_BG[i].MouseClickEvent += EventMouseClick;
            }
        }
 /**
  *  Instantiate the world model (if a prefab for it exists)
  * 	and parent it to the given transform
  */
 public virtual bool ActivateWorldModel(Transform worldModelParent)
 {
     if (worldModelPrefab == null)
         return false;
     worldModel = (WorldModel)Instantiate(worldModelPrefab, worldModelParent.position, worldModelParent.rotation);
     worldModel.transform.parent = worldModelParent;
     return true;
 }
Exemple #15
0
 public WhileScript(ScriptContext scriptContext, IScriptFactory scriptFactory, IFunction<bool> expression, IScript loopScript)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_scriptFactory = scriptFactory;
     m_expression = expression;
     m_loopScript = loopScript;
 }
Exemple #16
0
 public RunDelegateScript(ScriptContext scriptContext, IFunction<Element> obj, IFunction<string> del, IList<IFunction<object>> parameters)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_delegate = del;
     m_parameters = new FunctionCallParameters(m_worldModel, parameters);
     m_appliesTo = obj;
 }
Exemple #17
0
 public DictionaryAddScript(ScriptContext scriptContext, IFunctionGeneric dictionary, IFunction<string> key, IFunction<object> value)
 {
     m_scriptContext = scriptContext;
     m_dictionary = dictionary;
     m_key = key;
     m_value = value;
     m_worldModel = scriptContext.WorldModel;
 }
        public PaperDollInteractable(AControl parent, int x, int y)
            : base(0, 0)
        {
            Parent = parent;
            Position = new Point(x, y);

            m_World = ServiceRegistry.GetService<WorldModel>();
        }
Exemple #19
0
 public SetFieldScript(ScriptContext scriptContext, IFunction<Element> obj, IFunction<string> field, IFunction<object> value)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_obj = obj;
     m_field = field;
     m_value = value;
 }
Exemple #20
0
 public AskScript(ScriptContext scriptContext, IScriptFactory scriptFactory, IFunction<string> caption, IScript callbackScript)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_scriptFactory = scriptFactory;
     m_caption = caption;
     m_callbackScript = callbackScript;
 }
Exemple #21
0
 public PlaySoundScript(ScriptContext scriptContext, IFunction<string> function, IFunction<bool> synchronous, IFunction<bool> loop)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_filename = function;
     m_synchronous = synchronous;
     m_loop = loop;
 }
        public WorldCursor(WorldModel model)
        {
            m_Network = ServiceRegistry.GetService<INetworkClient>();
            m_UserInterface = ServiceRegistry.GetService<UserInterfaceService>();
            m_Input = ServiceRegistry.GetService<InputManager>();

            m_World = model;
            InternalRegisterInteraction();
        }
Exemple #23
0
        public ScriptContext(WorldModel worldModel, bool createEditorExpressionContext)
        {
            m_worldModel = worldModel;

            if (createEditorExpressionContext)
            {
                InitialiseExpressionContext();
            }
        }
Exemple #24
0
 public ForScript(WorldModel worldModel, IScriptFactory scriptFactory, string variable, IFunction<int> from, IFunction<int> to, IScript loopScript)
 {
     m_worldModel = worldModel;
     m_scriptFactory = scriptFactory;
     m_variable = variable;
     m_from = from;
     m_to = to;
     m_loopScript = loopScript;
 }
Exemple #25
0
        public WorldInput(WorldModel world)
        {
            World = world;

            m_Network = ServiceRegistry.GetService<INetworkClient>();
            m_UserInterface = ServiceRegistry.GetService<UserInterfaceService>();
            m_Input = ServiceRegistry.GetService<InputManager>();

            MousePick = new MousePicking();
        }
Exemple #26
0
 public ShowMenuScript(ScriptContext scriptContext, IScriptFactory scriptFactory, IFunction<string> caption, IFunctionGeneric options, IFunction<bool> allowCancel, IScript callbackScript)
 {
     m_scriptContext = scriptContext;
     m_worldModel = scriptContext.WorldModel;
     m_scriptFactory = scriptFactory;
     m_caption = caption;
     m_options = options;
     m_allowCancel = allowCancel;
     m_callbackScript = callbackScript;
 }
Exemple #27
0
        public MiniMapGump()
            : base(0, 0)
        {
            m_World = ServiceRegistry.GetService<WorldModel>();

            m_useLargeMap = MiniMap_LargeFormat;

            IsMoveable = true;
            MakeThisADragger();
        }
Exemple #28
0
        public FunctionCallScript(WorldModel worldModel, string procedure, IList<IFunction<object>> parameters, IScript paramFunction)
        {
            m_worldModel = worldModel;
            m_procedure = procedure;
            m_parameters = new FunctionCallParameters(worldModel, parameters);
            m_paramFunction = paramFunction;

            m_parameters.ParametersAsQuestList.Added += Parameters_Added;
            m_parameters.ParametersAsQuestList.Removed += Parameters_Removed;
        }
Exemple #29
0
        public SkillsGump()
            : base(0, 0)
        {
            IsMoveable = true;

            m_World = ServiceRegistry.GetService<WorldModel>();

            AddControl(m_Background = new ExpandableScroll(this, 0, 0, 200));
            m_Background.TitleGumpID = 0x834;

            AddControl(m_SkillsHtml = new HtmlGumpling(this, 32, 32, 240, 200 - 92, 0, 2, string.Empty));
            m_SkillsHtml.OnDragHRef += OnSkillDrag;
        }
        public FunctionCallParameters(WorldModel worldModel, IList<IFunction<object>> parameters)
        {
            m_parameterStrings.UndoLog = worldModel.UndoLogger;
            m_parameters = parameters;

            if (parameters != null)
            {
                foreach (var param in parameters)
                {
                    string paramString = param.Save();
                    m_parameterStrings.Add(paramString);
                }
            }
        }
Exemple #31
0
        /**************************************************************************/
        public bool loadVMap(uint mapID, uint tileX, uint tileY, MeshData meshData)
        {
            var            vmapManager = new VMapManager2();
            VMAPLoadResult result      = vmapManager.loadMap("vmaps", mapID, tileX, tileY);
            bool           retval      = false;

            do
            {
                if (result == 0)
                {
                    break;
                }

                Dictionary <uint, StaticMapTree> instanceTrees;
                vmapManager.getInstanceMapTree(out instanceTrees);

                if (instanceTrees[mapID] == null)
                {
                    break;
                }

                ModelInstance[] models = null;
                uint            count;
                instanceTrees[mapID].getModelInstances(out models, out count);

                if (models == null)
                {
                    break;
                }

                for (uint i = 0; i < count; ++i)
                {
                    ModelInstance instance = models[i];
                    if (instance == null)
                    {
                        continue;
                    }

                    // model instances exist in tree even though there are instances of that model in this tile
                    WorldModel worldModel = instance.getWorldModel();
                    if (worldModel == null)
                    {
                        continue;
                    }

                    // now we have a model to add to the meshdata
                    retval = true;

                    List <GroupModel> groupModels;
                    worldModel.getGroupModels(out groupModels);

                    // all M2s need to have triangle indices reversed
                    bool isM2 = instance.name.Contains(".m2") || instance.name.Contains(".M2");

                    // transform data
                    float   scale    = instance.iScale;
                    Matrix3 rotation = Matrix3.fromEulerAnglesXYZ(MathF.PI * instance.iRot.Z / -180.0f, MathF.PI * instance.iRot.X / -180.0f, MathF.PI * instance.iRot.Y / -180.0f);
                    Vector3 position = instance.iPos;
                    position.X -= 32 * SharedConst.GRID_SIZE;
                    position.Y -= 32 * SharedConst.GRID_SIZE;

                    foreach (var it in groupModels)
                    {
                        List <Vector3>      tempVertices;
                        List <Vector3>      transformedVertices = new List <Vector3>();
                        List <MeshTriangle> tempTriangles;
                        WmoLiquid           liquid = null;

                        it.getMeshData(out tempVertices, out tempTriangles, out liquid);

                        // first handle collision mesh
                        transform(tempVertices.ToArray(), transformedVertices, scale, rotation, position);

                        int offset = meshData.solidVerts.Count / 3;

                        copyVertices(transformedVertices.ToArray(), meshData.solidVerts);
                        copyIndices(tempTriangles, meshData.solidTris, offset, isM2);

                        // now handle liquid data
                        if (liquid != null)
                        {
                            List <Vector3> liqVerts = new List <Vector3>();
                            List <uint>    liqTris = new List <uint>();
                            uint           tilesX, tilesY, vertsX, vertsY;
                            Vector3        corner;
                            liquid.getPosInfo(out tilesX, out tilesY, out corner);
                            vertsX = tilesX + 1;
                            vertsY = tilesY + 1;
                            byte[]     flags = liquid.iFlags;
                            float[]    data  = liquid.iHeight;
                            NavTerrain type  = NavTerrain.Empty;

                            // convert liquid type to NavTerrain
                            switch (liquid.iType & 3)
                            {
                            case 0:
                            case 1:
                                type = NavTerrain.Water;
                                break;

                            case 2:
                                type = NavTerrain.Magma;
                                break;

                            case 3:
                                type = NavTerrain.Slime;
                                break;
                            }

                            // indexing is weird...
                            // after a lot of trial and error, this is what works:
                            // vertex = y*vertsX+x
                            // tile   = x*tilesY+y
                            // flag   = y*tilesY+x

                            Vector3 vert;
                            for (uint x = 0; x < vertsX; ++x)
                            {
                                for (uint y = 0; y < vertsY; ++y)
                                {
                                    vert    = new Vector3(corner.X + x * SharedConst.GRID_PART_SIZE, corner.Y + y * SharedConst.GRID_PART_SIZE, data[y * vertsX + x]);
                                    vert    = vert * rotation * scale + position;
                                    vert.X *= -1.0f;
                                    vert.Y *= -1.0f;
                                    liqVerts.Add(vert);
                                }
                            }

                            uint idx1, idx2, idx3, idx4;
                            uint square;
                            for (uint x = 0; x < tilesX; ++x)
                            {
                                for (uint y = 0; y < tilesY; ++y)
                                {
                                    if ((flags[x + y * tilesX] & 0x0f) != 0x0f)
                                    {
                                        square = x * tilesY + y;
                                        idx1   = square + x;
                                        idx2   = square + 1 + x;
                                        idx3   = square + tilesY + 1 + 1 + x;
                                        idx4   = square + tilesY + 1 + x;

                                        // top triangle
                                        liqTris.Add(idx3);
                                        liqTris.Add(idx2);
                                        liqTris.Add(idx1);
                                        // bottom triangle
                                        liqTris.Add(idx4);
                                        liqTris.Add(idx3);
                                        liqTris.Add(idx1);
                                    }
                                }
                            }

                            int liqOffset = meshData.liquidVerts.Count / 3;
                            for (int x = 0; x < liqVerts.Count; ++x)
                            {
                                meshData.liquidVerts.Add(liqVerts[x].Y);
                                meshData.liquidVerts.Add(liqVerts[x].Z);
                                meshData.liquidVerts.Add(liqVerts[x].X);
                            }

                            for (int x = 0; x < liqTris.Count / 3; ++x)
                            {
                                meshData.liquidTris.Add((int)(liqTris[x * 3 + 1] + liqOffset));
                                meshData.liquidTris.Add((int)(liqTris[x * 3 + 2] + liqOffset));
                                meshData.liquidTris.Add((int)(liqTris[x * 3] + liqOffset));
                                meshData.liquidType.Add((byte)type);
                            }
                        }
                    }
                }
            }while (false);

            vmapManager.unloadMap(mapID, tileX, tileY);

            return(retval);
        }
        public override float GetHValue(WorldModel worldModel)
        {
            var mana = (int)worldModel.GetProperty(Properties.MANA);

            return(base.GetHValue(worldModel) * mana);
        }
Exemple #33
0
        private void DrawWorldEntry(WorldItem world)
        {
            string authorName = world.Author.Username;

            BeginHorizontal(world.World == Selected ? EntryHoverStyle : EntryStyle, Height(68));
            {
                Box("", Width(60), Height(60));

                BeginVertical();
                {
                    Label($"<b><size=16>{world.World.Title}</size></b>");

                    Label("by " + authorName, WorldInfoStyle);
                    Label($"{world.World.Downloads} downloads", WorldInfoStyle);
                }
                EndVertical();

                string btnText =
                    world.State == WorldState.Downloading ? "Downloading..." :
                    world.State == WorldState.Existing ? "Play" : "Download";

                GUI.enabled = world.State != WorldState.Downloading;
                FlexibleSpace();
                BeginVertical();
                {
                    FlexibleSpace();

                    BeginHorizontal();
                    {
                        FlexibleSpace();

                        //--Manage button--
                        if (world.Author.ID == Remote.User.CurrentUser.ID && Button("Manage", Height(30)))
                        {
                            ShareMod.PlayButtonSound();

                            if (!Managing.Any(o => o.World.ID == world.World.ID))
                            {
                                ShowManageWorld(world.World);
                            }
                        }
                        //------------

                        //--Download button--
                        if (Button(btnText, Height(30), Width(95)))
                        {
                            ShareMod.PlayButtonSound();
                            Selected = world.World;

                            if (world.State == WorldState.Existing)
                            {
                                Hide();
                                LoadWorld(world.World);
                            }
                            else
                            {
                                DownloadWorld(world);
                            }
                        }
                        //------------
                    }
                    EndHorizontal();

                    Space(5);

                    GUI.enabled = false;

                    string time = world.TimeString;

                    Label(time, WorldIDStyle);
                    FlexibleSpace();

                    GUI.enabled = true;
                }
                EndVertical();
            }
            EndHorizontal();

            Rect horRect = GUILayoutUtility.GetLastRect();

            if (Event.current.isMouse && horRect.Contains(Event.current.mousePosition) && Event.current.button == 0)
            {
                Selected = world.World;
            }
        }
Exemple #34
0
 internal LazyFields(WorldModel worldModel, Fields fields)
 {
     m_worldModel = worldModel;
     m_fields     = fields;
 }
Exemple #35
0
 public override float GetHValue(WorldModel worldModel)
 {
     return(base.GetHValue(worldModel));
 }
        public PaperDollGump(Mobile parent)
            : base(0, 0)
        {
            Parent = parent;

            m_UserInterface = UltimaServices.GetService <UserInterfaceService>();
            m_World         = UltimaServices.GetService <WorldModel>();
            m_Client        = UltimaServices.GetService <INetworkClient>();

            IsMovable = true;

            if (parent == (Mobile)EntityManager.GetPlayerObject())
            {
                AddControl(new GumpPic(this, 0, 0, 0, 0x07d0, 0));
                LastControl.MakeDragger(this);
                LastControl.MakeCloseTarget(this);

                // HELP
                AddControl(new Button(this, 0, 185, 44 + 27 * 0, 0x07ef, 0x07f0, ButtonTypes.Activate, 0,
                                      (int)Buttons.Help));
                ((Button)LastControl).GumpOverID = 0x07f1;
                // OPTIONS
                AddControl(new Button(this, 0, 185, 44 + 27 * 1, 0x07d6, 0x07d7, ButtonTypes.Activate, 0,
                                      (int)Buttons.Options));
                ((Button)LastControl).GumpOverID = 0x07d8;
                // LOG OUT
                AddControl(new Button(this, 0, 185, 44 + 27 * 2, 0x07d9, 0x07da, ButtonTypes.Activate, 0,
                                      (int)Buttons.LogOut));
                ((Button)LastControl).GumpOverID = 0x07db;
                // QUESTS
                AddControl(new Button(this, 0, 185, 44 + 27 * 3, 0x57b5, 0x57b7, ButtonTypes.Activate, 0,
                                      (int)Buttons.Quests));
                ((Button)LastControl).GumpOverID = 0x57b6;
                // SKILLS
                AddControl(new Button(this, 0, 185, 44 + 27 * 4, 0x07df, 0x07e0, ButtonTypes.Activate, 0,
                                      (int)Buttons.Skills));
                ((Button)LastControl).GumpOverID = 0x07e1;
                // GUILD
                AddControl(new Button(this, 0, 185, 44 + 27 * 5, 0x57b2, 0x57b4, ButtonTypes.Activate, 0,
                                      (int)Buttons.Guild));
                ((Button)LastControl).GumpOverID = 0x57b3;
                // PEACE / WAR
                AddControl(new Button(this, 0, 185, 44 + 27 * 6, 0x07e5, 0x07e6, ButtonTypes.Activate, 0,
                                      (int)Buttons.PeaceWarToggle));
                ((Button)LastControl).GumpOverID = 0x07e7;
                // STATUS
                AddControl(new Button(this, 0, 185, 44 + 27 * 7, 0x07eb, 0x07ec, ButtonTypes.Activate, 0,
                                      (int)Buttons.Status));
                ((Button)LastControl).GumpOverID = 0x07ed;

                // Paperdoll
                AddControl(new PaperDollInteractable(this, 0, 8, 21)
                {
                    SourceEntity = Parent
                });
            }
            else
            {
                AddControl(new GumpPic(this, 0, 0, 0, 0x07d1, 0));
                LastControl.MakeDragger(this);
                LastControl.MakeCloseTarget(this);

                // Paperdoll
                AddControl(new PaperDollInteractable(this, 0, 8, 21)
                {
                    SourceEntity = Parent
                });
            }
        }
Exemple #37
0
 public InvokeScript(ScriptContext scriptContext, IFunction <IScript> script)
 {
     m_scriptContext = scriptContext;
     m_worldModel    = scriptContext.WorldModel;
     m_script        = script;
 }
Exemple #38
0
 /*
  * This method is called once for every turn.
  * It returns an empty command. For a more interesting example, see the python sample solution.
  *
  * Parameters:
  *     wm   - an instance of the WorldModel class that contains a property called Players which is a List of Players.
  *            A Player has a property named Body which is a List of Coordinates,
  *            and which represent the coordinates of the body parts of the snake, in order.
  *            A Coordinate has two properties, X and Y, of type int.
  *     turn - the index of the turn.
  *            If you receive twice the same number, don't worry, just ignore it.
  *
  * Returns:
  *     A Command instance - a Command contains a property called Direction of type enum Direction.
  *                          Direction values: RIGHT, UP, LEFT, DOWN.
  */
 public Command playTurn(WorldModel wm, int turn)
 {
     return(null);
 }
 public override bool CanExecute(WorldModel worldModel)
 {
     return(base.CanExecute(worldModel));
 }
 public EntityManager(WorldModel model)
 {
     m_Model = model;
 }
Exemple #41
0
 internal abstract float EvaluateValue(WorldModel model, Dictionary <Role, Character> involvedCharacters);
Exemple #42
0
 protected override void OnInitialize()
 {
     m_Model = Service.Get <WorldModel>();
 }
Exemple #43
0
        public override float GetDuration(WorldModel worldModel)
        {
            var position = (Vector3)worldModel.GetProperty(Properties.POSITION);

            return(this.GetDuration(position));
        }
Exemple #44
0
 public ManageWorldUI(Remote remote, WorldModel world) : base(remote)
 {
     this.World      = world;
     this.WindowRect = new Rect(Screen.width / 2 - WindowRect.width / 2, Screen.height / 2 - WindowRect.height / 2, WindowRect.width, WindowRect.height);
 }
Exemple #45
0
 public void SetModel(WorldModel model)
 {
     _model = model;
 }
Exemple #46
0
 public void DoRedo(WorldModel worldModel)
 {
     worldModel.Object(m_appliesTo).Fields.RemoveFieldInternal(m_property);
 }
Exemple #47
0
 public Packager(WorldModel worldModel)
 {
     m_worldModel = worldModel;
 }
Exemple #48
0
 internal override float EvaluateValue(WorldModel model, Dictionary <Role, Character> involvedCharacters)
 {
     throw new NotImplementedException();
 }
Exemple #49
0
 public void DoUndo(WorldModel worldModel)
 {
     worldModel.Object(m_appliesTo).Fields.SetFromUndo(m_property, m_oldValue);
 }
 public override float GetDuration(WorldModel worldModel)
 {
     return(0.0f);
 }
Exemple #51
0
        public static WorldModel LoadWMO(string filename, CacheStorage cache, int modelShader)
        {
            if (cache.worldModelBatches.ContainsKey(filename))
            {
                return(cache.worldModelBatches[filename]);
            }

            WoWFormatLib.Structs.WMO.WMO wmo = new WoWFormatLib.Structs.WMO.WMO();

            if (cache.worldModels.ContainsKey(filename))
            {
                wmo = cache.worldModels[filename];
            }
            else
            {
                //Load WMO from file
                if (WoWFormatLib.Utils.CASC.FileExists(filename))
                {
                    var wmoreader = new WMOReader();
                    wmoreader.LoadWMO(filename, false);
                    cache.worldModels.Add(filename, wmoreader.wmofile);
                    wmo = wmoreader.wmofile;
                }
                else
                {
                    throw new Exception("WMO " + filename + " does not exist!");
                }
            }

            var wmobatch = new WorldModel();

            wmobatch.groupBatches = new WorldModelGroupBatches[wmo.group.Count()];

            string[] groupNames = new string[wmo.group.Count()];

            for (int g = 0; g < wmo.group.Count(); g++)
            {
                if (wmo.group[g].mogp.vertices == null)
                {
                    continue;
                }

                for (int i = 0; i < wmo.groupNames.Count(); i++)
                {
                    if (wmo.group[g].mogp.nameOffset == wmo.groupNames[i].offset)
                    {
                        groupNames[g] = wmo.groupNames[i].name.Replace(" ", "_");
                    }
                }

                if (groupNames[g] == "antiportal")
                {
                    continue;
                }

                // GL.UseProgram(modelShader);
                wmobatch.groupBatches[g].vao = GL.GenVertexArray();

                Console.WriteLine("Generated WMO VAO " + wmobatch.groupBatches[g].vao);
                GL.BindVertexArray(wmobatch.groupBatches[g].vao);

                wmobatch.groupBatches[g].vertexBuffer = GL.GenBuffer();
                wmobatch.groupBatches[g].indiceBuffer = GL.GenBuffer();

                GL.BindBuffer(BufferTarget.ArrayBuffer, wmobatch.groupBatches[g].vertexBuffer);

                M2Vertex[] wmovertices = new M2Vertex[wmo.group[g].mogp.vertices.Count()];

                for (int i = 0; i < wmo.group[g].mogp.vertices.Count(); i++)
                {
                    wmovertices[i].Position = new Vector3(wmo.group[g].mogp.vertices[i].vector.X, wmo.group[g].mogp.vertices[i].vector.Y, wmo.group[g].mogp.vertices[i].vector.Z);
                    wmovertices[i].Normal   = new Vector3(wmo.group[g].mogp.normals[i].normal.X, wmo.group[g].mogp.normals[i].normal.Y, wmo.group[g].mogp.normals[i].normal.Z);
                    if (wmo.group[g].mogp.textureCoords[0] == null)
                    {
                        wmovertices[i].TexCoord = new Vector2(0.0f, 0.0f);
                    }
                    else
                    {
                        wmovertices[i].TexCoord = new Vector2(wmo.group[g].mogp.textureCoords[0][i].X, wmo.group[g].mogp.textureCoords[0][i].Y);
                    }
                }
                //Push to buffer
                GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(wmovertices.Length * 8 * sizeof(float)), wmovertices, BufferUsageHint.StaticDraw);

                //Switch to Index buffer
                GL.BindBuffer(BufferTarget.ElementArrayBuffer, wmobatch.groupBatches[g].indiceBuffer);

                List <uint> wmoindicelist = new List <uint>();
                for (int i = 0; i < wmo.group[g].mogp.indices.Count(); i++)
                {
                    wmoindicelist.Add(wmo.group[g].mogp.indices[i].indice);
                }

                wmobatch.groupBatches[g].indices = wmoindicelist.ToArray();

                GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(wmobatch.groupBatches[g].indices.Length * sizeof(uint)), wmobatch.groupBatches[g].indices, BufferUsageHint.StaticDraw);

                var texCoordLoc = GL.GetAttribLocation(modelShader, "vTexCoord");
                GL.EnableVertexAttribArray(texCoordLoc);
                GL.VertexAttribPointer(texCoordLoc, 2, VertexAttribPointerType.Float, false, 8 * sizeof(float), 3 * sizeof(float));

                var posLoc = GL.GetAttribLocation(modelShader, "vPosition");
                GL.EnableVertexAttribArray(posLoc);
                GL.VertexAttribPointer(posLoc, 3, VertexAttribPointerType.Float, false, 8 * sizeof(float), 5 * sizeof(float));

                GL.BindVertexArray(0);
            }

            wmobatch.mats = new Material[wmo.materials.Count()];
            for (int i = 0; i < wmo.materials.Count(); i++)
            {
                for (int ti = 0; ti < wmo.textures.Count(); ti++)
                {
                    if (wmo.textures[ti].startOffset == wmo.materials[i].texture1)
                    {
                        wmobatch.mats[i].texture1  = wmo.materials[i].texture1;
                        wmobatch.mats[i].textureID = BLPLoader.LoadTexture(wmo.textures[ti].filename, cache);
                        wmobatch.mats[i].filename  = wmo.textures[ti].filename;
                    }
                }
            }

            /*
             * wmobatch.doodads = new WMODoodad[wmo.doodadDefinitions.Count()];
             *
             * for(int i = 0; i < wmo.doodadDefinitions.Count(); i++)
             * {
             *  for(int j = 0; j < wmo.doodadNames.Count(); j++)
             *  {
             *      if (wmo.doodadDefinitions[i].offset == wmo.doodadNames[j].startOffset)
             *      {
             *          wmobatch.doodads[i].filename = wmo.doodadNames[j].filename;
             *          M2Loader.LoadM2(wmobatch.doodads[i].filename, cache);
             *      }
             *  }
             *  wmobatch.doodads[i].flags = wmo.doodadDefinitions[i].flags;
             *  wmobatch.doodads[i].position = new Vector3(wmo.doodadDefinitions[i].position.X, wmo.doodadDefinitions[i].position.Y, wmo.doodadDefinitions[i].position.Z);
             *  wmobatch.doodads[i].rotation = new Quaternion(wmo.doodadDefinitions[i].rotation.X, wmo.doodadDefinitions[i].rotation.Y, wmo.doodadDefinitions[i].rotation.Z, wmo.doodadDefinitions[i].rotation.W);
             *  wmobatch.doodads[i].scale = wmo.doodadDefinitions[i].scale;
             *  wmobatch.doodads[i].color = new Vector4(wmo.doodadDefinitions[i].color[0], wmo.doodadDefinitions[i].color[1], wmo.doodadDefinitions[i].color[2], wmo.doodadDefinitions[i].color[3]);
             * }
             */

            int numRenderbatches = 0;

            //Get total amount of render batches
            for (int i = 0; i < wmo.group.Count(); i++)
            {
                if (wmo.group[i].mogp.renderBatches == null)
                {
                    continue;
                }
                numRenderbatches = numRenderbatches + wmo.group[i].mogp.renderBatches.Count();
            }

            wmobatch.wmoRenderBatch = new RenderBatch[numRenderbatches];

            int rb = 0;

            for (int g = 0; g < wmo.group.Count(); g++)
            {
                var group = wmo.group[g];
                if (group.mogp.renderBatches == null)
                {
                    continue;
                }
                for (int i = 0; i < group.mogp.renderBatches.Count(); i++)
                {
                    wmobatch.wmoRenderBatch[rb].firstFace = group.mogp.renderBatches[i].firstFace;
                    wmobatch.wmoRenderBatch[rb].numFaces  = group.mogp.renderBatches[i].numFaces;
                    uint matID = 0;

                    if (group.mogp.renderBatches[i].flags == 2)
                    {
                        matID = (uint)group.mogp.renderBatches[i].possibleBox2_3;
                    }
                    else
                    {
                        matID = group.mogp.renderBatches[i].materialID;
                    }

                    for (int ti = 0; ti < wmobatch.mats.Count(); ti++)
                    {
                        if (wmo.materials[matID].texture1 == wmobatch.mats[ti].texture1)
                        {
                            wmobatch.wmoRenderBatch[rb].materialID = new uint[] { (uint)wmobatch.mats[ti].textureID };
                        }
                    }

                    wmobatch.wmoRenderBatch[rb].blendType = wmo.materials[group.mogp.renderBatches[i].materialID].blendMode;
                    wmobatch.wmoRenderBatch[rb].groupID   = (uint)g;
                    rb++;
                }
            }
            cache.worldModelBatches.Add(filename, wmobatch);

            return(wmobatch);
        }
Exemple #52
0
 public ExpressionOwner(WorldModel worldModel)
 {
     m_worldModel = worldModel;
 }
Exemple #53
0
 public override bool CanExecute(WorldModel worldModel)
 {
     return(base.CanExecute() && (int)worldModel.GetProperty(Properties.MANA) >= 5);
 }
Exemple #54
0
 public RemoveProjectileCommand(IProjectile projectile, WorldModel worldModel)
 {
     _worldModel = worldModel;
     _projectile = projectile;
 }
Exemple #55
0
        private void InitialUI_Load(object sender, EventArgs e)
        {
            m_worldModel = new WorldModel(m_data, SimCountryData.LoadFrom(@"../../../Data/CountryData.dat"));
            m_mapControl.AssignWorldModel(m_worldModel);

            PlotForm dc1 = new PlotForm("Mortality");

            dc1.Bind(m_worldModel,
                     new[] {
                GetTotal(n => n.Killed),
                GetTotal(n => n.Dead)
            },
                     new[] {
                "Killed",
                "Dead"
            });

            PlotForm dc2 = new PlotForm("Disease Stages");

            dc2.Bind(m_worldModel,
                     new[] {
                GetTotal(n => n.ContagiousAsymptomatic),
                GetTotal(n => n.ContagiousSymptomatic),
                GetTotal(n => n.NonContagiousInfected),
                GetTotal(n => n.Immune),
            },
                     new[]
            {
                "ContagiousAsymptomatic",
                "ContagiousSymptomatic",
                "NonContagiousInfected",
                "Immune"
            });

            m_mapControl.Show();
            dc1.Show();
            dc2.Show();



            /*PlotForm m_plotWindow1 = new PlotForm("Killed");
             * m_plotWindow1.Bind(m_worldModel, GetTotal(n => n.Killed));
             * m_plotWindow1.Show();
             *
             * PlotForm m_plotWindow2 = new PlotForm("Immune");
             * m_plotWindow2.Bind(m_worldModel, GetTotal(n => n.Immune));
             * m_plotWindow2.Show();
             *
             * PlotForm m_plotWindow3 = new PlotForm("Total Population");
             * m_plotWindow3.Bind(m_worldModel, GetTotal(n => n.Population));
             * m_plotWindow3.Show();
             *
             * PlotForm m_plotWindow4 = new PlotForm("Immunization Effort");
             * m_plotWindow4.Bind(m_worldModel, GetTotal(n => n.Flows[2](n)));
             * m_plotWindow4.Show();*/


            m_mapControl.MouseMove += (o, args) =>
            {
                double lat, lon;
                int    x, y;
                GraphicalUtilities.GraphicsCoordsToMapCoords(panel1.Size, m_worldModel.Size, args.X, args.Y, out x,
                                                             out y);
                m_data.DataXYToLatLon(x, y, out lat, out lon);
                string where = ReverseGeocodeService.CountryNameForLatAndLong(lat, lon + 2) ?? "Unknown";
                DiseaseNode n = m_worldModel.NodeAt(x, y);
                toolStripStatusLabel1.Text = $"data[{x},{y}] is {where}, Lat {lat:f2}/Lon {lon:f2} {n:d4}";
                Console.WriteLine(toolStripStatusLabel1.Text);
            };

            toolStripStatusLabel1.TextChanged += (o, args) => Console.WriteLine(((ToolStripStatusLabel)o).Text);
        }
Exemple #56
0
 public void DoRedo(WorldModel worldModel)
 {
     worldModel.Object(m_appliesTo).Fields.DoUndoAddRemoveType(m_newValue);
 }
Exemple #57
0
 protected virtual Reward Playout(WorldModel initialPlayoutState)
 {
     //TODO: implement
     throw new NotImplementedException();
 }
Exemple #58
0
 public FoeDetectorAbility(UnitModel unit, AbilityData data, WorldModel world)
 {
     _unit  = unit;
     _world = world;
     _data  = new FoeDetectorAbilityParams(data);
 }
Exemple #59
0
        private void SaveWorld(WorldModel world, byte[] data)
        {
            MemoryStream inStream = new MemoryStream(data);

            Zipper.ExtractZipFile(inStream, SavesPath + world.Title);
        }
Exemple #60
0
 protected PlatformManager(WorldModel model)
 {
     _model = model;
 }