コード例 #1
0
  /**
   * Metoda wczytuje szablony obiektow i modeli z pliku
   *
   * @see #OBJECTS_TEMPLATES_DIR
   */
  public void LoadObjectsTemplates() {
    // TODO wczytywanie z pliku
    // wczytaj surowce
    _resources.add("wood");
    _resources.add("stone");

    ArrayList skills = new ArrayList();
    skills.add("construction");
    skills.add("lumberjack");
    CSkillManager.GetInstance().SetSkills(skills);
    // wczytaj obiekty
    CUnit newTemplate = new CUnit();
    newTemplate.CreateTemplate(
        "man", "human", 2, 2, 2, 2, 10, "man", 1, false, new CPosition(1, 1));
    _objectsTemplates.add(newTemplate);

    ArrayList reqResources = new ArrayList();
    reqResources.add(new CPosition(0, 20));
    CBuilding newBuildingTemplate = new CBuilding(_resources.size());
    newBuildingTemplate.CreateTemplate(
        "warehouse",
        "building",
        1000,
        "warehouse",
        false,
        new CPosition(4, 2),
        new CPosition(1, 2),
        reqResources);
    _objectsTemplates.add(newBuildingTemplate);

    CStaticObject newStaticTemplate = new CStaticObject(0);
    newStaticTemplate.CreateTemplate("tree1", "tree", 100, "tree1", false, new CPosition(1, 1));
    _objectsTemplates.add(newStaticTemplate);

    newStaticTemplate = new CStaticObject(0);
    newStaticTemplate.CreateTemplate("tree2", "tree", 100, "tree2", false, new CPosition(1, 1));
    _objectsTemplates.add(newStaticTemplate);

    newStaticTemplate = new CStaticObject(0);
    newStaticTemplate.CreateTemplate("tree3", "tree", 100, "tree3", false, new CPosition(1, 1));
    _objectsTemplates.add(newStaticTemplate);

    CRoad newRoad = new CRoad();
    newRoad.CreateTemplate("dirtroad", 100, "dirtroad", true, new CPosition(0, 0));
    _objectsTemplates.add(newRoad);

    // wczytaj modele
    CModel newModel = new CModel();
    newModel.CreateTemplate("man", new CPosition(0, -32), "unit1", 2, 2, 2, G_UNITS, 32, 64);
    CModelManager.GetInstance().LoadModel(newModel);
    newModel = new CStaticModel();
    newModel.CreateTemplate(
        "warehouse", new CPosition(0, -32), "building1", 0, 0, 0, G_BUILDINGS, 128, 96);
    CModelManager.GetInstance().LoadModel(newModel);

    newModel = new CStaticModel();
    newModel.CreateTemplate(
        "tree1", new CPosition(-14, -66), "static1", 0, 0, 0, G_STATICS, 66, 96);
    ((CStaticModel) newModel).SetAnimOffset(new CPosition(0, 0));
    CModelManager.GetInstance().LoadModel(newModel);

    newModel = new CStaticModel();
    newModel.CreateTemplate(
        "tree2", new CPosition(-14, -66), "static1", 0, 0, 0, G_STATICS, 66, 96);
    ((CStaticModel) newModel).SetAnimOffset(new CPosition(0, 1));
    CModelManager.GetInstance().LoadModel(newModel);

    newModel = new CStaticModel();
    newModel.CreateTemplate(
        "tree3", new CPosition(-14, -66), "static1", 0, 0, 0, G_STATICS, 66, 96);
    ((CStaticModel) newModel).SetAnimOffset(new CPosition(0, 2));
    CModelManager.GetInstance().LoadModel(newModel);

    newModel = new CStaticModel();
    newModel.CreateTemplate("dirtroad", new CPosition(0, 0), "static2", 0, 0, 0, G_STATICS, 64, 64);
    ((CStaticModel) newModel).SetAnimOffset(new CPosition(0, 0));
    CModelManager.GetInstance().LoadModel(newModel);
  }
コード例 #2
0
 /**
  * Tworzy nowy obiekt w grze
  *
  * @param game Referencja do obiektu rozgrywanej partii CGame
  * @param type Typ obiektu który chcemy utworzyć
  * @param X współrzędna X pola, w którym tworzymy obiekt
  * @param Y współrzędna Y pola, w którym tworzymy obiekt
  * @param owner gracz będący właścicielem tworzonego obiektu
  */
 public int CreateObject(CGame game, String type, int X, int Y, CPlayer owner, int classType) {
   // przejrzyj szablony w poszukiwaniu obiektu typu "type"
   Iterator<CObject> iterator = _objectsTemplates.iterator();
   while (iterator.hasNext()) {
     CObject object = iterator.next();
     if (classType == CT_UNIT) {
       if (object.CheckType(type)) {
         // po znalezieniu obiektu utworz nową instancję obiektu
         CUnit newUnit = new CUnit();
         // skopiuj do niej dane z szablonu
         newUnit.CopyTemplate((CUnit) object);
         // utwórz model na podstawie szablonu obiektu
         CModel newModel =
             CModelManager.GetInstance().CreateModelFromTemplate(newUnit.GetModelName());
         if (newModel == null) return -1; // anuluj tworzenie obiektu jeśli nie znaleziono modelu
         // zainicjuj model przydzielając go do utworzonego obiektu i
         // nadając mu początkową pozycję
         newModel.Initialize(newUnit, new CPosition(X, Y));
         // ustaw właściciela tworzonego obiektu
         newUnit.SetPlayer(owner);
         owner.AddUnemployed(newUnit);
         // dodaj model do obiektu
         newUnit.ApllyModel(newModel);
         // stwórz kolizje dla obiektu
         CPosition colSize = newUnit.GetCollisionSize();
         CCollision newCollision;
         for (int y = 0; y < colSize.Y(); ++y) {
           for (int x = 0; x < colSize.X(); ++x) {
             newCollision = new CCollision(newUnit, X + x, Y + y, COLLISION_DYNAMIC);
             // dodaj kolizję do obiektu
             newUnit.ApllyCollision(newCollision);
             // umieść kolizję na mapie
             game.GetMapTileFromField(X + x, Y + y).AddCollision(newCollision);
           }
         }
         // umieść obiekt na mapie
         game.GetMapTileFromField(X, Y).AddObject(newUnit);
         // dodaj obiekt do listy obiektów w grze
         _objects.add(newUnit);
         // ożyw obiekt
         newUnit.SetAlive(true);
         System.out.print("CObjectManager: Stworzylem jednostke: " + type + "\n");
         return newUnit.GetID();
       }
     } else if (classType == CT_BUILDING) {
       if (object.CheckType(type)) {
         CBuilding newBuilding = new CBuilding(_resources.size());
         // skopiuj do niej dane z szablonu
         newBuilding.CopyTemplate((CBuilding) object);
         // utwórz model na podstawie szablonu obiektu
         CStaticModel newModel =
             CModelManager.GetInstance().CreateModelFromTemplateStatic(newBuilding.GetModelName());
         if (newModel == null) return -1; // anuluj tworzenie obiektu jeśli nie znaleziono modelu
         // zainicjuj model przydzielając go do utworzonego obiektu i
         // nadając mu początkową pozycję
         newModel.Initialize(newBuilding, new CPosition(X, Y));
         // ustaw właściciela tworzonego obiektu
         newBuilding.SetPlayer(owner);
         owner.AddObject(newBuilding);
         // dodaj model do obiektu
         newBuilding.ApllyModel(newModel);
         // stwórz kolizje dla obiektu
         CPosition colSize = newBuilding.GetCollisionSize();
         CCollision newCollision;
         for (int y = 0; y < colSize.Y(); ++y) {
           for (int x = 0; x < colSize.X(); ++x) {
             newCollision = new CCollision(newBuilding, X + x, Y + y, COLLISION_STATIC);
             // dodaj kolizję do obiektu
             newBuilding.ApllyCollision(newCollision);
             // umieść kolizję na mapie
             game.GetMapTileFromField(X + x, Y + y).AddCollision(newCollision);
           }
         }
         // umieść obiekt na mapie
         game.GetMapTileFromField(X, Y).AddObject(newBuilding);
         // dodaj obiekt do listy obiektów w grze
         _objects.add(newBuilding);
         CPosition entr = newBuilding.GetEntrance();
         CreateObject(game, "dirtroad", X + entr.X(), Y + entr.Y(), null, CT_ROAD);
         // ożyw obiekt
         newBuilding.SetAlive(true);
         System.out.print("CObjectManager: Stworzylem budynek: " + type + "\n");
         return newBuilding.GetID();
       }
     } else if (classType == CT_STATIC) {
       if (object.CheckType(type)) {
         CStaticObject newStatic = new CStaticObject(0);
         // skopiuj do niej dane z szablonu
         newStatic.CopyTemplate((CStaticObject) object);
         // utwórz model na podstawie szablonu obiektu
         CStaticModel newModel =
             CModelManager.GetInstance().CreateModelFromTemplateStatic(newStatic.GetModelName());
         if (newModel == null) return -1; // anuluj tworzenie obiektu jeśli nie znaleziono modelu
         // zainicjuj model przydzielając go do utworzonego obiektu i
         // nadając mu początkową pozycję
         newModel.Initialize(newStatic, new CPosition(X, Y));
         // ustaw właściciela tworzonego obiektu
         newStatic.SetPlayer(owner);
         if (owner != null) owner.AddObject(newStatic);
         // dodaj model do obiektu
         newStatic.ApllyModel(newModel);
         // stwórz kolizje dla obiektu
         CPosition colSize = newStatic.GetCollisionSize();
         CCollision newCollision;
         for (int y = 0; y < colSize.Y(); ++y) {
           for (int x = 0; x < colSize.X(); ++x) {
             newCollision = new CCollision(newStatic, X + x, Y + y, COLLISION_STATIC);
             // dodaj kolizję do obiektu
             newStatic.ApllyCollision(newCollision);
             // umieść kolizję na mapie
             game.GetMapTileFromField(X + x, Y + y).AddCollision(newCollision);
           }
         }
         // umieść obiekt na mapie
         game.GetMapTileFromField(X, Y).AddObject(newStatic);
         // dodaj obiekt do listy obiektów w grze
         _objects.add(newStatic);
         // ożyw obiekt
         newStatic.SetAlive(true);
         System.out.print("CObjectManager: Stworzylem budynek: " + type + "\n");
         return newStatic.GetID();
       }
     } else if (classType == CT_ROAD) {
       if (object.CheckType(type)) {
         CRoad newRoad = new CRoad();
         // skopiuj do niej dane z szablonu
         newRoad.CopyTemplate((CRoad) object);
         // utwórz model na podstawie szablonu obiektu
         CStaticModel newModel =
             CModelManager.GetInstance().CreateModelFromTemplateStatic(newRoad.GetModelName());
         if (newModel == null) return -1; // anuluj tworzenie obiektu jeśli nie znaleziono modelu
         // zainicjuj model przydzielając go do utworzonego obiektu i
         // nadając mu początkową pozycję
         newModel.Initialize(newRoad, new CPosition(X, Y));
         // ustaw właściciela tworzonego obiektu
         newRoad.SetPlayer(owner);
         if (owner != null) owner.AddObject(newRoad);
         // dodaj model do obiektu
         newRoad.ApllyModel(newModel);
         // stwórz kolizje dla obiektu
         CPosition colSize = newRoad.GetCollisionSize();
         CCollision newCollision;
         for (int y = 0; y < colSize.Y(); ++y) {
           for (int x = 0; x < colSize.X(); ++x) {
             newCollision = new CCollision(newRoad, X + x, Y + y, COLLISION_STATIC);
             // dodaj kolizję do obiektu
             newRoad.ApllyCollision(newCollision);
             // umieść kolizję na mapie
             game.GetMapTileFromField(X + x, Y + y).AddCollision(newCollision);
           }
         }
         // umieść obiekt na mapie
         game.GetMapTileFromField(X, Y).AddRoad(newRoad);
         // dodaj obiekt do listy obiektów w grze
         _objects.add(newRoad);
         newRoad.UpdateRoad(game, true);
         // ożyw obiekt
         newRoad.SetAlive(true);
         System.out.print("CObjectManager: Stworzylem droge: " + type + "\n");
         return newRoad.GetID();
       }
     }
   }
   return -1;
 }